汇编语言not指令(汇编语言NOP指令的用法)

2025-09-02 07:45:01 :0

汇编语言not指令(汇编语言NOP指令的用法)

今天给各位分享汇编语言NOP指令的用法的知识,其中也会对汇编语言NOP指令的用法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

汇编语言NOP指令的用法

1、占用一个字节的程序存储空间:这是在对微机与单片机进行汇编指令指令编程时常用的手法,例如,为了刻意使某个程序段在一个特定的地址开始,或在某个程序段中删除了一些指令而还刻意要求地址不变,基于这些的需求,通常是应用NOP指令汇编指令来充填空闲的地址;

2、产生微小延迟:这是在微机与单片机进行汇编指令指令编程时常用的手法,微机与单片机的编程并非是周期扫描的执行机制,例如,在读取某个外围通道输入值时,先发出一个请求命令,带一定延时后,再读其数值,通常是应用NOP指令来进行延时;

3、常用来做代码地址对齐:这个纯粹是对与对微机与单片机进行汇编指令指令编程来讲的。这与上述的1中占用一个字节的程序存储空间的作用相同,即汇编编译后生成机器代码的效果。

汇编neg指令是什么

汇编NEG指令在16位汇编语言中,NEG命令无论你是否为正负数,都会按照取反+1或用0减去这个数的二进制的办法去计算。

neg指令详细解释如下:

一、规则: 

  1. neg reg (对寄存器操作);

2. neg mem(对内存操作);

二、 作用:将目的操作数的所以数据位取反加1;

三、影响的标志:进位标志(CF),零标志(ZF),符合标志(SF),溢出标志(OF),辅助进位标志(AF),奇偶标志(PF)  ;

四、当操作数为0时,置CF位为0 当操作数不为0时,置CF位为1。

汇编语言的助记符

8086/8088指令系统
一、数据传送指令
1.通用数据传送指令
MOV(Move)传送
PUSH(Push onto the stack)进栈
POP(Pop from the stack)出栈
XCHG(Exchange)交换
.MOV 指令
格式为: MOV DST,SRC
执行的操作:(DST)《-(SRC)
.PUSH 进栈指令
格式为:PUSH SRC
执行的操作:(SP)《-(SP)-2
((SP)+1,(SP))《-(SRC)
.POP 出栈指令
格式为:POP DST
执行的操作:(DST)《-((SP+1),(SP))
(SP)《-(SP)+2
.XCHG 交换指令
格式为:XCHG OPR1,OPR2
执行的操作:(OPR1)《--》(OPR2)
2.累加器专用传送指令
IN(Input) 输入
OUT(Output) 输出
XLAT(Translate) 换码
这组指令只限于使用累加器AX 或AL 传送信息.
.IN 输入指令
长格式为: IN AL,PORT(字节)
IN AX,PORT(字)
执行的操作: (AL)《-(PORT)(字节)
(AX)《-(PORT+1,PORT)(字)
短格式为: IN AL,DX(字节)
IN AX,DX(字)
执行的操作: AL《-((DX))(字节)
AX《-((DX)+1,DX)(字)
.OUT 输出指令
长格式为: OUT PORT,AL(字节)
OUT PORT,AX(字)
执行的操作: (PORT)《-(AL)(字节)
(PORT+1,PORT)《-(AX)(字)
短格式为: OUT DX,AL(字节)
OUT DX,AX(字)
执行的操作: ((DX))《-(AL)(字节)
((DX)+1,(DX))《-AX(字)
在IBM-PC 机里,外部设备最多可有65536个I/O 端口,端口(即外设的端口地址)为
0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此
时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定
端口号,但只限于前256个端口.当端口号》=256时,只能使用短格式,此时,必须先把端口号放到
DX 寄存器中(端口号可以从0000到0FFFFH),然后再用IN 或OUT 指令来传送信息.
.XLAT 换码指令
格式为: XLAT OPR
或: XLAT
执行的操作:(AL)《-((BX)+(AL))
3.有效地址送寄存器指令
LEA(Load effective address)有效地址送寄存器
LDS(Load DS with Pointer)指针送寄存器和DS
LES(Load ES with Pointer)指针送寄存器和ES
.LEA 有效地址送寄存器
格式为: LEA REG,SRC
执行的操作:(REG)《-SRC
指令把源操作数的有效地址送到指定的寄存器中.
.LDS 指针送寄存器和DS 指令
格式为: LDS REG,SRC
执行的操作:(REG)《-(SRC)
(DS)《-(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及DS 寄存器中.该指令常指定
SI 寄存器.
.LES 指针送寄存器和ES 指令
格式为: LES REG,SRC
执行的操作: (REG)《-(SRC)
(ES)《-(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及ES 寄存器中.该指令常指定
DI 寄存器.
4.标志寄存器传送指令
LAHF(Load AH with flags)标志送AH
SAHF(store AH into flags)AH 送标志寄存器
PUSHF(push the flags) 标志进栈
POPF(pop the flags) 标志出栈
.LAHF 标志送AH
格式为: LAHF
执行的操作:(AH)《-(PWS 的低字节)
.SAHF AH 送标志寄存器
格式为: SAHF
执行的操作:(PWS 的低字节)《-(AH)
.PUSHF 标志进栈
格式为: PUSHF
执行的操作:(SP)《-(SP)-2
((SP)+1,(SP))《-(PSW)
.POPF 标志出栈
格式为: POPF
执行的操作:(PWS)《-((SP)+1,(SP))
(SP)《-(SP+2)
二、算术指令
1.加法指令
ADD(add)加法
ADC(add with carry)带进位加法
INC(increment)加1
.ADD 加法指令
格式: ADD DST,SRC
执行的操作:(DST)《-(SRC)+(DST)
.ADC 带进位加法指令
格式: ADC DST,SRC
执行的操作:(DST)《-(SRC)+(DST)+CF
.ADD 加1指令
格式: INC OPR
执行的操作:(OPR)《-(OPR)+1
2.减法指令
SUB(subtract)减法
SBB(subtract with borrow)带借位减法
DEC(Decrement)减1
NEG(Negate)求补
CMP(Compare)比较
.SUB 减法指令
格式: SUB DST,SRC
执行的操作:(DST)《-(DST)-(SRC)
.SBB 带借位减法指令
格式: SBB DST,SRC
执行的操作:(DST)《-(DST)-(SRC)-CF
.DEC 减1指令
格式: DEC OPR
执行的操作:(OPR)《-(OPR)-1
.NEG 求补指令
格式: NEG OPR
执行的操作:(OPR)《- -(OPR)
.CMP 比较指令
格式: CMP OPR1,OPR2
执行的操作:(OPR1)-(OPR2)
该指令与SUB 指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志西半
球.
3.乘法指令
MUL(Unsigned Multiple)无符号数乘法
IMUL(Signed Multiple)带符号数乘法
.MUL 无符号数乘法指令
格式: MUL SRC
执行的操作:
字节操作数:(AX)《-(AL)*(SRC)
字操作数:(DX,AX)《-(AX)*(SRC)
.IMUL 带符号数乘法指令
格式: IMUL SRC
执行的操作:与MUL 相同,但必须是带符号数,而MUL 是无符号数.
4.除法指令
DIV(Unsigned divide)无符号数除法
IDIV(Signed divide)带符号数除法
CBW(Convert byte to word)字节转换为字
CWD(Contert word to double word)字转换为双字
.DIV 无符号数除法指令
格式: DIV SRC
执行的操作:
字节操作:(AL)《-(AX)/(SRC)的商
(AH)《-(AX)/(SRC)的余数
字操作: (AX)《-(DX,AX)/(SRC)的商
(AX)《-(DX,AX)/(SRC)的余数
.IDIV 带符号数除法指令
格式: DIV SRC
执行的操作:与DIV 相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号
与被除数的符号相同.
.CBW 字节转换为字指令
格式: CBW
执行的操作:AL 的内容符号扩展到AH.即如果(AL)的最高有效位为0,则(AH)=00;如(AL)的最
高有效位为1,则(AH)=0FFH
.CWD 字转换为双字指令
格式: CWD
执行的操作:AX 的内容符号扩展到DX.即如(AX) 的最高有效位为0, 则(DX)=0;否则
(DX)=0FFFFH.
这两条指令都不影响条件码.
三、逻辑指令
1.逻辑运算指令
AND(and) 逻辑与
OR(or) 逻辑或
NOT(not) 逻辑非
XOR(exclusive or)异或
TEST(test) 测试
.AND 逻辑与指令
格式: AND DST,SRC
执行的操作:(DST)《-(DST)^(SRC)
.OR 逻辑或指令
格式: OR DST,SRC
执行的操作:(DST)《-(DST)V(SRC)
.NOT 逻辑非指令
格式: NOT OPR
执行的操作:(OPR)《-(OPR)
.XOR 异或指令
格式: XOR DST,SRC
执行的操作:(DST)《-(DST)V(SRC)
.TEST 测试指令
格式: TEST OPR1,OPR2
执行的操作:(DST)^(SRC)
两个操作数相与的结果不保存,只根据其特征置条件码
2.移位指令
SHL(shift logical left) 逻辑左移
SAL(shift arithmetic left) 算术左移
SHR(shift logical right) 逻辑右移
SAR(shift arithmetic right) 算术右移
ROL(Rotate left) 循环左移
ROR(Rotate right) 循环右移
RCL(Rotate left through carry) 带进位循环左移
RCR(Rotate right through carry) 带进位循环右移
格式: SHL OPR,CNT(其余的类似)
其中OPR 可以是除立即数以外的任何寻址方式.移位次数由CNT 决定,CNT 可以是1或CL.
循环移位指令可以改变操作数中所有位的位置;移位指令则常常用来做乘以2除以2操作.
其中算术移位指令适用于带符号数运算,SAL 用来乘2,SAR 用来除以2;而逻辑移位指令则用
来无符号数运算,SHL 用来乘2,SHR 用来除以2.
四、串处理指令
1.与REP 相配合工作的MOVS,STOS 和LODS 指令
.REP 重复串操作直到(CX)=0为上
格式: REP string primitive
其中String Primitive 可为MOVS,LODS 或STOS 指令
执行的操作:
1)如(CX)=0则退出REP,否则往下执行.
2)(CX)《-(CX)-1
3)执行其中的串操作
4)重复1)~3)
.MOVS 串传送指令
格式:可有三种
MOVS DST,SRC
MOVSB(字节)
MOVSW(字)
其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是
字节操作,例如:
MOVS ES:BYTE PTR
执行的操作:
1)((DI))《-((SI))
2)字节操作:
(SI)《-(SI)+(或-)1,(DI)《-(DI)+(或-)1
当方向标志DF=0时用+,当方向标志DF=1时用-
3)字操作:
(SI)《-(SI)+(或-)2,(DI)《-(DI)+(或-)2
当方向标志DF=0时用+,当方向标志DF=1时用-
该指令不影响条件码.
.CLD(Clear direction flag)该指令使DF=0,在执行串操作指令时可使地址自动增量;
.STD(Set direction flag)该指令使DF=1,在执行串操作指令时可使地址自动减量.
.STOS 存入串指令
格式: STOS DST
STOSB(字节)
STOSW(字)
执行的操作:
字节操作:((DI))《-(AL),(DI)《-(DI)+-1
字操作: ((DI))《-(AX),(DI)《-(DI)+-2
该指令把AL 或AX 的内容存入由(DI)指定的附加段的某单元中,并根据DF 的值及数据类型
修改DI 的内容,当它与REP 联用时,可把AL 或AX 的内容存入一个长度为(CX)的缓冲区中.
.LODS 从串取指令
格式: LODS SRC
LODSB
LODSW
执行的操作:
字节操作:(AL)《-((SI)),(SI)《-(SI)+-1
字操作: (AX)《-((SI)),(SI)《-(SI)+-2
该指令把由(SI)指定的数据段中某单元的内容送到AL 或AX 中,并根据方向标志及数据类型
修改SI 的内容.指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.
一般说来,该指令不和REP 联用.有时缓冲区中的一串字符需要逐次取出来测试时,可使
用本指令.
2.与REPE/REPZ 和REPNZ/REPNE 联合工作的CMPS 和SCAS 指令
.REPE/REPZ 当相等/为零时重复串操作
格式: REPE(或REPZ) String Primitive
其中String Primitive 可为CMPS 或SCAS 指令.
执行的操作:
1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行
2)(CX)《-(CX)-1
3)执行其后的串指令
4)重复1)~3)
.REPNE/REPNZ 当不相等/不为零时重复串操作
格式: REPNE(或REPNZ) String Primitive
其中String Primitive 可为CMPS 或SCAS 指令
执行的操作:
除退出条件(CX=0)或ZF=1外,其他操作与REPE 完全相同.
.CMPS 串比较指令
格式: CMP SRC,DST
CMPSB
CMPSW
执行的操作:
1)((SI))-((DI))
2)字节操作:(SI)《-(SI)+-1,(DI)《-(DI)+-1
字操作: (SI)《-(SI)+-2,(DI)《-(DI)+-2
指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)
相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS 指令的规定相同.
.SCAS 串扫描指令
格式: SCAS DST
SCASB
SCASW
执行的操作:
字节操作:(AL)-((DI)),(DI)《-(DI)+-1
字操作: (AL)-((DI)),(DI)《-(DI)+-2
该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存
结果,只根据结果置条件码.指令的其他特性和MOVS 的规定相同.
五、控制转移指令
1.无条件转移指令
.JMP(jmp) 跳转指令
1)段内直接短转移
格式:JMP SHORT OPR
执行的操作:(IP)《-(IP)+8位位移量
2)段内直接近转移
格式:JMP NEAR PTR OPR
执行的操作:(IP)《-(IP)+16位位移量
3)段内间接转移
格式:JMP WORD PTR OPR
执行的操作:(IP)《-(EA)
4)段间直接(远)转移
格式:JMP FAR PTR OPR
执行的操作:(IP)《-OPR 的段内偏移地址
(CS)《-OPR 所在段的段地址
5)段间间接转移
格式:JMP DWORD PTR OPR
执行的操作:(IP)《-(EA)
(CS)《-(EA+2)
2.条件转移指令
1)根据单个条件标志的设置情况转移
.JZ(或JE)(Jump if zero,or equal) 结果为零(或相等)则转移
格式:JE(或JZ) OPR
测试条件:ZF=1
.JNZ(或JNE)(Jump if not zero,or not equal) 结果不为零(或不相等)则转移
格式:JNZ(或JNE) OPR
测试条件:ZF=0
.JS(Jump if sign) 结果为负则转移
格式: JS OPR
测试条件:SF=1
.JNS(Jump if not sign) 结果为正则转移
格式:JNS OPR
测试条件:SF=0
.JO(Jump if overflow) 溢出则转移
格式: JO OPR
测试条件:OF=1
.JNO(Jump if not overflow) 不溢出则转移
格式: JNO OPR
测试条件:OF=0
.JP(或JPE)(Jump if parity,or parity even) 奇偶位为1则转移
格式: JP OPR
测试条件:PF=1
.JNP(或JPO)(Jump if not parity,or parity odd) 奇偶位为0则转移
格式: JNP(或JPO) OPR
测试条件:PF=0
.JB(或JNAE,JC)(Jump if below,or not above or equal,or carry) 低于,或者不高于或等于,或进位
位为1则转移
格式:JB(或JNAE,JC) OPR
测试条件:CF=1
.JNB(或JAE,JNC)(Jump if not below,or above or equal,or not carry) 不低于,或者高于或者等于,
或进位位为0则转移
格式:JNB(或JAE,JNC) OPR
测试条件:CF=0
2)比较两个无符号数,并根据比较的结果转移
.JB(或JNAE,JC)
格式:同上
.JNB(或JAE,JNC)
格式:同上
.JBE(或JNA)(Jump if below or equal,or not above) 低于或等于,或不高于则转移
格式:JBE(或JNA) OPR
测试条件:CFVZF=1
.JNBE(或JA)(Jump if not below or equal,or above) 不低于或等于,或者高于则转移
格式:JNBE(或JA) OPR
测试条件:CFVZF=0
3)比较两个带符号数,并根据比较的结果转移
.JL(或LNGE)(Jump if less,or not greater or equal) 小于,或者不大于或者等于则转移
格式:JL(或JNGE) OPR
测试条件:SFVOF=1
.JNL(或JGE)(Jump if not less,or greater or equal)不小于,或者大于或者等于则转移
格式:JNL(或JGE) OPR
测试条件:SFVOF=0
.JLE(或JNG)(Jump if less or equal,or not greater) 小于或等于,或者不大于则转移
格式:JLE(或JNG) OPR
测试条件:(SFVOF)VZF=1
.JNLE(或JG)(Jump if not less or equal,or greater) 不小于或等于,或者大于则转移
格式:JNLE(或JG) OPR
测试条件:(SFVOF)VZF=0
4)测试CX 的值为0则转移指令
.JCXZ(Jump if CX register is zero) CX 寄存器的内容为零则转移
格式:JCXZ OPR
测试条件:(CX)=0
注:条件转移全为8位短跳!
3.循环指令
.LOOP 循环指令
格式: LOOP OPR
测试条件:(CX)《》0
.LOOPZ/LOOPE 当为零或相等时循环指令
格式: LOOPZ(或LOOPE) OPR
测试条件:(CX)《》0且ZF=1
.LOOPNZ/LOOPNE 当不为零或不相等时循环指令
格式: LOOPNZ(或LOOPNE) OPR
测试条件:(CX)《》0且ZF=0
这三条指令的步骤是:
1)(CX)《-(CX)-1
2)检查是否满足测试条件,如满足则(IP)《-(IP)+D8的符号扩充.
4.子程序
.CALL 调用指令
.RET 返回指令
5.中断
.INT 指令
格式: INT TYPE
或INT
执行的操作:(SP)《-(SP)-2
((SP)+1,(SP))《-(PSW)
(SP)《-(SP)-2
((SP)+1,(SP))《-(CS)
(SP)《-(SP)-2
((SP)+1,(SP))《-(IP)
(IP)《-(TYPE*4)
(CS)《-(TYPE*4+2)
.INTO 若溢出则中断
执行的操作:若OF=1则:
(SP)《-(SP)-2
((SP)+1,(SP))《-(PSW)
(SP)《-(SP)-2
((SP)+1,(SP))《-(CS)
(SP)《-(SP)-2
((SP)+1,(SP))《-(IP)
(IP)《-(10H)
(CS)《-(12H)
.IRET 从中断返回指令
格式: IRET
执行的操作:(IP)《-((SP)+1,(SP))
(SP)《-(SP)+2
(CS)《-((SP)+1,(SP))
(SP)《-(SP)+2
(PSW)《-((SP)+1,(SP))
(SP)《-(SP)+2
六、处理机控制指令
1.标志处理指令
.CLC 进位位置0指令(Clear carry)CF《-0
.CMC 进位位求反指令(Complement carry)CF《-CF
.STC 进位位置1指令(Set carry)CF《-1
.CLD 方向标志置0指令(Clear direction)DF《-0
.STD 方向标志置1指令(Set direction)DF《-1
.CLI 中断标志置0指令(Clear interrupt)IF《-0
.STI 中断标志置1指令(Set interrupt)IF《-0
2.其他处理机控制指令
NOP(No Opreation) 无操作
HLT(Halt) 停机
WAIT(Wait) 等待
ESC(Escape) 换码
LOCK(Lock) 封锁
这些指令可以控制处理机状态.这们都不影响条件码.
.NOP 无操作指令
该指令不执行任何操作,其机器码占有一个字节,在调试程序时往往用这条指令占有一定
的存储单元,以便在正式运行时用其他指令取代.
.HLT 停机指令
该指令可使机器暂停工作,使处理机处于停机状态以便等待一次外部中断到来,中断结束
后可继续执行下面的程序.
.WAIT 等待指令
该指令使处理机处于空转状态,它也可以用来等待外部中断的发生,但中断结束后仍返回
WAIT 指令继续德行.
.ESC 换码指令
格式ESC mem
其中mem 指出一个存储单元,ESC 指令把该存储单元的内容送到数据总线去.当然ESC 指令
不允许使用立即数和寄存器寻址方式.这条指令在使用协处理机(Coprocessor)执行某些操作
时,可从存储器指得指令或操作数.协处理机(如8087)则是为了提高速度而可以选配的硬件.
.LOCK 封锁指令
该指令是一种前缀,它可与其他指令联合,用来维持总线的锁存信号直到与其联合的指令
执行完为止.当CPU 与其他处理机协同工作时,该指令可避免破坏有用信息.

汇编语言中ah和AH代表什么

ah和AH是一个意思,只是大小写区分

意思是AX(16位)寄存器的高八位,低八位是AL寄存器/al

逻辑运算

这部分指令用于执行算术和逻辑运算,包括加法指令ADD/ADC、减法指令SUB/SBB、加一指令INC、减一指令DEC、比较操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符号扩展指令CBW/CWDE/CDQE、十进制调整指令DAA/DAS/AAA/AAS、逻辑运算指令NOT/AND/OR/XOR/TEST等。

移位指令

这部分指令用于将寄存器或内存操作数移动指定的次数。包括逻辑左移指令SHL、逻辑右移指令SHR、算术左移指令SAL、算术右移指令SAR、循环左移指令ROL、循环右移指令ROR等。

扩展资料:

控制转移

这部分包括无条件转移指令JMP、条件转移指令Jcc/JCXZ、循环指令LOOP/LOOPE/LOOPNE、过程调用指令CALL、子过程返回指令RET、中断指令INTn、INT3、INTO、IRET等。

串操作

这部分指令用于对数据串进行操作,包括串传送指令MOVS、串比较指令CMPS、串扫描指令SCANS、串加载指令LODS、串保存指令STOS,这些指令可以有选择地使用REP/REPE/REPZ/REPNE和REPNZ的前缀以连续操作。

输入输出

这部分指令用于同外围设备交换数据,包括端口输入指令IN/INS、端口输出指令OUT/OUTS。 

汇编语言执行XOR,OR,AND,NOT,TEST逻辑指令的时候标志位如何变化请举出例子,万分感谢!!

1、 test al,02h ;若AL中的D1位是‘1’。则ZF=0,否则为1;CF和OF都为0
2、 not 对所有标志位都没有影响
3、xor or and 都使 cf=of=0 其他位 要看具体情况

汇编语言中,如何将一个单元的内容取反

方法1.用逻辑非运算指令(not指令,指令格式:NOT OPRD),可以对目标操作数的二进制全部位取反,比如取反ax,则not ax即可.
方法2.用异或逻辑(xor指令,指令格式:XOR OPRD1,OPRD2,异或逻辑就是两个逻辑值不同则输出结果为真,相同则输出假).与非运算一般区别是:可用于对特定位取反.
把目标操作数(即要取反的对象)要取反的二进制位与1进行异或逻辑即可实现,比如对ax寄存器内容低8位取反则可以:xor ax,00ff;实现.

汇编语言中哪些指令影响标志位cf

1.加法指令:ADD、ADC、INC、XADD,除了INC不影响CF标志位外,都影响条件标志位。

2.减法指令:SUB、SBB、DEC、NEG、CMP、CMPXCHG、CMPXCHG8B,前六种除了DEC不影响CF标志外都影响标志位。

3.乘法指令:MUL、IMUL,

MUL:如果乘积高一半为0,则CF和OF位均为0,否则CF和OF均为1。
IMUL:如果高一半是低一半符号的扩展,则CF位和OF位均为0,否则就均为1。

4.除法指令:DIV、IDIV对所有条件位均无定义。

5.逻辑指令:AND、OR、NOT、XOR、TEST。

6.定位扫描指令:BSF正向位扫描、BSR反向位扫描。

源操作数可以是除立即数以外的任一种寻址方式,目的操作数必须是寄存器,影响ZF位。

汇编语言NOP指令的用法

nop--空语句的作用:
1、nop指令执行时花去一个时钟周期,所以可用把它用在延时程序中作为循环体,用以估计一个延时时间;
2、用于程序指令的对齐,比如字对齐--以便于反汇编时容易读懂。

【一些常用的汇编语言指令】汇编语言cli指令

汇编语言常用指令

大家在做免杀或者破解软件的时候经常要用到汇编指令,本人整理出了常用的 希望对大家有帮助!

数据传送指令

MOV :寄存器之间传送注意,源和目的不能同时是段寄存器;代码段寄存器CS 不能作为目的;指令指针IP 不能作为源和目的。立即数不能直接传送段寄存器。源和目的操作数类型要一致;除了串操作指令外,源和目的不能同时是存储器操作数。

XCHG 交换指令:操作数可以是通用寄存器和存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。

LEA 16位寄存器 存储器操作数 传送有效地址指令:必须是一个16位寄存器和存储器操作数。

LDS 16位寄存器 存储器操作数 传送存储器操作数32位地址,它的16位偏移地址送16位寄存器,16位段基值送入DS 中。

LES :同上,只是16位段基址送ES 中。

堆栈操作指令

PUSH 操作数,操作数不能使用立即数,

POP 操作数, 操作数不能是CS 和立即数

标志操作指令

LAHF :把标志寄存器低8位,符号SF ,零ZF ,辅助进位AF ,奇偶PF ,进位CF 传送到AH 指定的位。不影响标志位。

SAHF :与上相反,把AH 中的标志位传送回标志寄存器。

PUSHF :把标志寄存器内容压入栈顶。

POPF :把栈顶的一个字节传送到标志寄存器中。

CLC :进位位清零。

STC :进位位为1。

CMC :进位位取反。

CLD :使方向标志DF 为零,在执行串操作中,使地址按递增方式变化。

STD :DF 为1。

CLI :清中断允许标志IF 。Cpu 不相应来自外部装置的可屏蔽中断。

STI :IF 为1。

加减运算指令

注意: 对于此类运算只有通用寄存器和存储单元可以存放运算结果。如果参与运算的操作数有两个,最多只能有一个存储器操作数并且它们的类型必须一致。

ADD 。

ADC :把进位CF 中的数值加上去。

INC :加1指令

SUB 。

SBB :把进位CF 中数值减去。

DEC :减1指令。

NEG 操作数:取补指令,即用0减去操作数再送回操作数。

CMP :比较指令,完成操作数1减去操作数2,结果不送操作数1,但影响标志位。可根据ZF (零)是否被置1判断相等;如果两者是无符号数,可根据CF 判断大小;如果两者是有符号数,要根据SF 和OF 判断大小。

乘除运算指令

MUL 操作数 :无符号数乘法指令。操作数不能是立即数。操作数是字节与AL 中的无符号数相乘,16位结果送AX 中。若字节,则与AX 乘,结果高16送DX ,低16送AX 。如乘积高半部分不为零,则CF 、OF 为1,否则为0。所以CF 和OF 表示AH 或DX 中含有结果的有效数。 IMUL 操作数 :有符号数乘法指令。基本与MUL 相同。

DIV 操作数 :被除数是在AX (除数8位)或者DX 和AX (除数16位),操作数不能是立即数。如果除数是0,或者在8(16)位除数时商超过8(16)位,则认为是溢出,引起0号中断。IDIV :有符号除法指令,当除数为0,活着商太大,太小(字节超过127,-127字超过32767,-32767)时,引起0号中断。

符号扩展指令

CBW ,CWD : 把AL 中的符号扩展到寄存器AH 中,不影响各标志位。CWD 则把AX 中的符号扩展到DX ,同样不影响标志位。注意:在无符号数除之前,不宜用这两条指令,一般采用XOR 清高8位或高16位。

逻辑运算指令与位移指令

注意:只能有一个存储器操作数;只有通用寄存器或存储器操作数可作为目的操作数,用于存放结果;操作数的类型必须一致。

NOT :取反,不影响标志位。

AND 操作数1 操作数2:操作结果送错作数1,标志CF (进位)、OF (溢出)清0,PF (奇偶)ZF (0标志) SF(符号)反映运算结果,AF (辅助进位)未定义。自己与自己AND 值不变,她主要用于将操作数中与1相与的位保持不变,与0相与清0。(都为1时为1) OR 操作数1 操作数2:自己与自己OR 值不变,CF (进位)、OF (溢出)清0,PF (奇偶)ZF (0标志)SF (符号)反映运算结果,AF (辅助进位)未定义。她使用于将若干位置1:

与1相或为1,保持不变的位与0相或。(都为0时为0)

XOR 操作数1 操作数2:自己与自己异或结果为0,标志CF (进位)、OF (溢出)清0,PF (奇偶)ZF (0)SF (符号)反映运算结果,AF (辅助进位)未定义。主要用于将若干位取反的操作:与1异或取反,与0异或保持不变。(相同为0,不同为1)

TEST 操作数1 操作数2:测试指令,和AND 相同,但结果不送操作数1,各标志位同AND 操作。

位移指令

SAL/SHL 操作数 1或CL :算术左移与逻辑左移进行相同的动作,操作数是通用寄存器或者存储器操作数,位移数为1或为CL ;最高位移CF (进位),右边用0补位。左移一次相当源操作数乘2。

SAR 操作数 1或CL :算术右移,位移数为1或为CL ;操作数是通用寄存器或者存储器操作数,左符号位保持不变,移出最低位进CF (进位)。相当源操作数除2。

SHR 操作数 1或CL :逻辑右移,操作数是通用寄存器或者存储器操作数,位移数为1或为CL ;左边用0补足,移出的最低位进CF (进位)对于无符号数,右移一位相当于除2。 ROL/ROR 操作数 1或CL : 不带进位左移/右移,操作数是通用寄存器或者存储器操作数,位移数为1或为CL 。

RCL/RCR 操作数 1或CL : 带进位左移/右移,CF (进位)参与循环。操作数是通用寄存器或者存储器操作数,位移数为1或为CL 。

转移指令

注意:由于代码段可分为多个段,所以根据转移时是否重置代码段寄存器CS 内容,可分为段内转移和段间转移。段内转移仅重置IP 的转移,转移后指令仍在同一代码段中。段间转移重置CS ,所以转移后继续执行的指令在另一个段中。

JMP 标号 :无条件跳转到标号位置执行,段内直接转移指令。地址差用一个字节表示为短转移,用一个字表示为近转移。

JMP 通用寄存器/存储单元:无条件段间间接转移指令,操作数给定的是目标地址处。 JMP FAR PTR 标号:无条件段间直接转移指令,她的具体动作是把指令中包含的目标地址的段值和偏移分别置茹CS 和IP 。

JMP 操作数:无条件段间间接转移指令,操作数是双字存储单元,给定目标地址,低字节送IP ,高字节送CS 。

条件转移指令:所有的条件转移指令都是段内转移。她是由J 加上相应的含义字母组合成。有符号数关系G (大于),E (等于),L (小于);无符号数关系A (高于)、E (等于)和B (低于);字母N 表示“不”:NB (不小于),NE (不等于)。

循环指令

LOOP 标号:她使寄存器CX 减1,若结果不等于0则转到标号,否则顺序执行LOOP 指令后的指令。最多循环65536次。

LOOPE/LOOPZ 标号:等于/全零循环指令。CX 的值减1,如果结果不等于0,并且ZF (0标志)等于1,则转移到标号。

LOOPNE/LOOPNZ 标号:不等于/非零循环指令,CX 的值减1,如果结果不等于0,并且ZF (0标志)等于0,则跳转到标号。

JCXZ 标号: 该指令实现当寄存器CX 的值等于0转移到标号,否则顺序执行。通常该指令用在循环开始前,以便在循环次数位0时,跳过循环体。

关于本次汇编语言not指令和汇编语言NOP指令的用法的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

汇编语言not指令(汇编语言NOP指令的用法)

本文编辑:admin

本文相关文章:


执行汇编指令(【一些常用的汇编语言指令】汇编语言cli指令)

执行汇编指令(【一些常用的汇编语言指令】汇编语言cli指令)

各位老铁们,大家好,今天由我来为大家分享执行汇编指令,以及【一些常用的汇编语言指令】汇编语言cli指令的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目

2025年11月1日 05:45

汇编语言加法(关于王爽的汇编语言的加减乘除指令)

汇编语言加法(关于王爽的汇编语言的加减乘除指令)

各位老铁们,大家好,今天由我来为大家分享汇编语言加法,以及关于王爽的汇编语言的加减乘除指令的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录关于王爽的

2025年10月25日 12:45

汇编语言程序实现的步骤(汇编语言程序是什么)

汇编语言程序实现的步骤(汇编语言程序是什么)

各位老铁们,大家好,今天由我来为大家分享汇编语言程序实现的步骤,以及汇编语言程序是什么的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录汇编语言程序是

2025年10月25日 01:45

汇编语言程序设计循环程序设计(汇编语言 循环程序)

汇编语言程序设计循环程序设计(汇编语言 循环程序)

大家好,今天小编来为大家解答以下的问题,关于汇编语言程序设计循环程序设计,汇编语言 循环程序这个很多人还不知道,现在让我们一起来看看吧!本文目录汇编语言 循环程序循环结构设计(汇编语言)编写一个程序,记录某个字存储单元格数据中1的个数,以十

2025年10月24日 08:45

多选题汇编语言是一种(汇编语言是一种什么语言)

多选题汇编语言是一种(汇编语言是一种什么语言)

各位老铁们好,相信很多人对多选题汇编语言是一种都不是特别的了解,因此呢,今天就来为大家分享下关于多选题汇编语言是一种以及汇编语言是一种什么语言的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录汇编语言是一种什么语言

2025年10月19日 03:15

汇编语言指令fcomp(为什么汇编语言实现循环语句要写两个cmp)

汇编语言指令fcomp(为什么汇编语言实现循环语句要写两个cmp)

大家好,关于汇编语言指令fcomp很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于为什么汇编语言实现循环语句要写两个cmp的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2025年10月15日 19:15

定义字符串用什么(汇编中定义字符串为什么用DB)

定义字符串用什么(汇编中定义字符串为什么用DB)

其实定义字符串用什么的问题并不复杂,但是又很多的朋友都不太了解汇编中定义字符串为什么用DB,因此呢,今天小编就来为大家分享定义字符串用什么的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录汇编中定义字符串为什么用D

2025年10月13日 19:15

自学汇编语言(自学王爽的汇编语言,需要多少时间)

自学汇编语言(自学王爽的汇编语言,需要多少时间)

大家好,今天小编来为大家解答以下的问题,关于自学汇编语言,自学王爽的汇编语言,需要多少时间这个很多人还不知道,现在让我们一起来看看吧!本文目录自学王爽的汇编语言,需要多少时间想学习单片机汇编语言,怎样学入门比较快呢自学汇编语言需要什么先导课

2025年9月25日 17:00

汇编语言教程全集(ARM9嵌入式系统设计基础教程的第9章 ARM汇编语言程序设计基础)

汇编语言教程全集(ARM9嵌入式系统设计基础教程的第9章 ARM汇编语言程序设计基础)

本篇文章给大家谈谈汇编语言教程全集,以及ARM9嵌入式系统设计基础教程的第9章 ARM汇编语言程序设计基础对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本

2025年9月2日 23:00

更多文章:


汽车自喷漆颜色大全(汽车喷漆有几种漆分几种)

汽车自喷漆颜色大全(汽车喷漆有几种漆分几种)

各位老铁们好,相信很多人对汽车自喷漆颜色大全都不是特别的了解,因此呢,今天就来为大家分享下关于汽车自喷漆颜色大全以及汽车喷漆有几种漆分几种的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录汽车喷漆有几种漆分几种自喷

2025年6月2日 12:00

cacelled(cancel的过去式是什么)

cacelled(cancel的过去式是什么)

这篇文章给大家聊聊关于cacelled,以及cancel的过去式是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录cancel的过去式是什么cancelled是什么意思cancelled是什么意思cancel和cancel

2025年10月31日 18:15

hibernate的sql语句在哪(hibernate中如何执行sql语句)

hibernate的sql语句在哪(hibernate中如何执行sql语句)

这篇文章给大家聊聊关于hibernate的sql语句在哪,以及hibernate中如何执行sql语句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录hibernate中如何执行sql语句hibernate怎么显示sql语句如何

2026年1月5日 18:15

translate名词翻译员(翻译 用英语怎么说)

translate名词翻译员(翻译 用英语怎么说)

“translate名词翻译员”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看translate名词翻译员(翻译 用英语怎么说)!本文目录翻译 用英语怎么说“翻译”的英语怎么说翻译 用英语怎么说1、the first day

2026年2月21日 19:15

免费下载ppt模板网站建筑公司简介(求一款介绍公司简介的PPT模板,稍微好看一点详细一点的!)

免费下载ppt模板网站建筑公司简介(求一款介绍公司简介的PPT模板,稍微好看一点详细一点的!)

其实免费下载ppt模板网站建筑公司简介的问题并不复杂,但是又很多的朋友都不太了解求一款介绍公司简介的PPT模板,稍微好看一点详细一点的!,因此呢,今天小编就来为大家分享免费下载ppt模板网站建筑公司简介的一些知识,希望可以帮助到大家,下面我

2025年9月12日 18:45

开元所有网址(泉州开元寺免费预约入口泉州开元寺有门票吗)

开元所有网址(泉州开元寺免费预约入口泉州开元寺有门票吗)

大家好,如果您还对开元所有网址不太了解,没有关系,今天就由本站为大家分享开元所有网址的知识,包括泉州开元寺免费预约入口泉州开元寺有门票吗的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录泉州开元寺免费预约入口泉州开元

2026年6月2日 14:45

热收缩膜的用途是怎么使用的?烟包膜和收缩膜的区别

热收缩膜的用途是怎么使用的?烟包膜和收缩膜的区别

“收缩膜”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看热收缩膜的用途是怎么使用的?烟包膜和收缩膜的区别!本文目录热收缩膜的用途是怎么使用的烟包膜和收缩膜的区别热收缩膜的厚度为什么收缩膜表面出现鱼眼状的皱纹呢收缩膜和热缩膜分

2025年12月19日 00:30

springboot对应的spring版本(spring-boot集成spring-data-redis哪个版本)

springboot对应的spring版本(spring-boot集成spring-data-redis哪个版本)

大家好,今天小编来为大家解答以下的问题,关于springboot对应的spring版本,spring-boot集成spring-data-redis哪个版本这个很多人还不知道,现在让我们一起来看看吧!本文目录spring-boot集成spr

2025年7月30日 01:45

什么是创意编程?双碳主题创意编程比赛作品说明该怎么写

什么是创意编程?双碳主题创意编程比赛作品说明该怎么写

各位老铁们,大家好,今天由我来为大家分享创意编程,以及什么是创意编程的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录什么是创意编程双碳主题创意编程比

2025年7月12日 08:15

css图片切换(CSS高级技巧:图片替换)

css图片切换(CSS高级技巧:图片替换)

各位老铁们,大家好,今天由我来为大家分享css图片切换,以及CSS高级技巧:图片替换的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录CSS高级技巧:

2026年8月6日 02:15

asp可视化建站(关于建网站的(用asp做的)问题,请大家帮忙在线等)

asp可视化建站(关于建网站的(用asp做的)问题,请大家帮忙在线等)

本篇文章给大家谈谈asp可视化建站,以及关于建网站的(用asp做的)问题,请大家帮忙在线等对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录关

2025年7月30日 22:00

2022pubg全球总决赛(绝地求生2022全球总决赛时间)

2022pubg全球总决赛(绝地求生2022全球总决赛时间)

“2022pubg全球总决赛”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看2022pubg全球总决赛(绝地求生2022全球总决赛时间)!本文目录绝地求生2022全球总决赛时间和平精英G赛是什么2022和平精英全球总决赛赛程

2025年8月11日 14:30

eclipse2020需要jdk什么版本(最新eclipse和jdk10可以一起用吗)

eclipse2020需要jdk什么版本(最新eclipse和jdk10可以一起用吗)

各位老铁们,大家好,今天由我来为大家分享eclipse2020需要jdk什么版本,以及最新eclipse和jdk10可以一起用吗的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了

2025年8月26日 11:15

多线程线程池哪几种(什么是线程池为什么要使用线程池如何使用)

多线程线程池哪几种(什么是线程池为什么要使用线程池如何使用)

本篇文章给大家谈谈多线程线程池哪几种,以及什么是线程池为什么要使用线程池如何使用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录什么是线程池

2025年10月15日 04:45

性格用英语怎么说personality(相貌和问性格的用英语怎么说)

性格用英语怎么说personality(相貌和问性格的用英语怎么说)

各位老铁们好,相信很多人对性格用英语怎么说personality都不是特别的了解,因此呢,今天就来为大家分享下关于性格用英语怎么说personality以及相貌和问性格的用英语怎么说的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起

2026年1月25日 00:45

arange(arange英语是什么意思)

arange(arange英语是什么意思)

各位老铁们,大家好,今天由我来为大家分享arange,以及arange英语是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录arange英语

2026年5月6日 15:00

前端开发发展前景(现在前端发展怎么样)

前端开发发展前景(现在前端发展怎么样)

各位老铁们好,相信很多人对前端开发发展前景都不是特别的了解,因此呢,今天就来为大家分享下关于前端开发发展前景以及现在前端发展怎么样的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录现在前端发展怎么样web前端就业前

2025年12月15日 22:15

网上聊天vb什么意思(VB——聊天软件)

网上聊天vb什么意思(VB——聊天软件)

大家好,网上聊天vb什么意思相信很多的网友都不是很明白,包括VB——聊天软件也是一样,不过没有关系,接下来就来为大家分享关于网上聊天vb什么意思和VB——聊天软件的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录V

2025年6月25日 07:00

statue of liberty视频(自由女神像的介绍)

statue of liberty视频(自由女神像的介绍)

各位老铁们,大家好,今天由我来为大家分享statue of liberty视频,以及自由女神像的介绍的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录

2026年5月8日 19:15

字符常量是啥(字符型常量是什么)

字符常量是啥(字符型常量是什么)

各位老铁们,大家好,今天由我来为大家分享字符常量是啥,以及字符型常量是什么的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录字符型常量是什么什么是字符

2025年11月1日 06:15

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索