1. 数据传送指令
MOV ,MOVSX ,MOVZX
不能直接在存储器之间,段寄存器之间传送数据,必须通过通用寄存器。目的操作数不能是立即数寻址。指令不影响标志位。
PUSH ,POP
操作数可以是立即数、存储器、寄存器中的任何一种寻址方式,但是POP 指令不能是CS 寄存器。不影响标志位。
2. 地址传送指令
LEA
将原操作数的有效地址送到目的寄存器。
LDS ,LES ,LFS ,LGS ,LSS
原操作数一定是存器寻址方式,存储器指定的第一个字的内容送到寄存器,第二个字的内容送到指令中指定的段寄存器。
3. 标志寄存器传送指令
LAHF ,SAHF ,PUSHF ,POPF ,PUSHD ,POPD
4. 类型转换指令
CBW ,CWD ,CDQ ,BSWAP
5. 算术指令
ADD ,ADC
无符号数加法,向最高有效位进位CF=1
带符号数加法,操作数符号相同,结果相反,溢出OF=1
SUB ,SUBB
无符号数减法,向最高有效位借位CF=1
带符号数减法,操作数符号相反,结果和减数符号一样,溢出OF=1
INC ,DEC ,NEG
不影响标志位
MUL ,IMUL
只影响OF ,CF 标志位
无符号数的乘法,如果结果的高一半是0 ,那么CF=OF=0
带符号数的乘法,如果乘积的高一半是低一半的符号扩展,那么CF=OF=0
DIV ,IDIV
不影响任何标志位。
DAA ,DAS
压缩BCD 码十进制调整指令,AL 高4 位是十六进制A~F ,则CF=1 ,AF=1 ,并且OF 无定义。
AAA ,AAS
非压缩BCD 码十进制调整指令,同样只影响AF 和CF 标志位,其余和压缩BCD 码类似。
6. 逻辑运算指令
AND ,OR ,NOT ,XOR ,TEST
指令的操作数位长必须一致,目的操作数不能为立即数寻址,NOT 指令不允许使用立即数寻址,并且它不影响标志位。其余的指令,CF=OF=0 ,AF 无定义,SF ,ZF ,PF 根据计算结果设定。
7. 位测试修改指令
BT ,BTS ,BTR ,BTC
影响CF 状态标志
8. 位扫描指令
BSF ,BSR
影响ZF 状态标志
9. 位移指令
SHL ,SAL ,SHR ,SAR ,ROL ,ROR ,RCL ,RCR ,SHLD ,SHRD
逻辑左右移移出位补0 ,最后移出的为送CF 。算术左移和逻辑左移一样,算术右移,移出位补符号。
10. 串处理指令
MOVS ,CMPS ,SCAS ,LODS ,STOS ,INS ,OUTS
通常串处理指令同REP ,REPZ ,REPNZ ,REPE ,REPNE 连用。
11. 控制转移指令
无条件跳转指令JMP ,分为段内短跳转(8 位位移量),段内近跳转(16 或者32 位位移量)和段间远跳转。
条件跳转指令,状态标志作为测试条件。
12. 条件设置指令
SETZ ,SETNZ ,ZETS ,SETNS ,SETO ,SETNO ,SETP ,SETNP ,SETC ,SETNC 。根据状态标志位,来设置目的字节操作数的值。
SETB ,SETNB ,SETBE ,SETNBE 。根据无符号数的比较结果设置目的字节操作数。
SETL ,SETNL ,SETLE ,SETNLE 。根据无符号数的比较结果设置目的字节操作数。
13. 循环指令
LOOP ,LOOPZ ,LOOPNZ
通过测试ZF 和CL ,CX ,ECX 来决定是否结束循环。
14. 标志位相关指令
CLC ,CMC ,STC ,CLD ,STD ,CLI ,STI
15. 其他指令
CALL ,RET ,INT ,INTO ,IRET ,IRETD
MOV
不能直接在存储器之间,段寄存器之间传送数据,必须通过通用寄存器。目的操作数不能是立即数寻址。指令不影响标志位。
PUSH
操作数可以是立即数、存储器、寄存器中的任何一种寻址方式,但是POP
2.
LEA
将原操作数的有效地址送到目的寄存器。
LDS
原操作数一定是存器寻址方式,存储器指定的第一个字的内容送到寄存器,第二个字的内容送到指令中指定的段寄存器。
3.
LAHF
4.
CBW
5.
ADD
无符号数加法,向最高有效位进位CF=1
带符号数加法,操作数符号相同,结果相反,溢出OF=1
SUB
无符号数减法,向最高有效位借位CF=1
带符号数减法,操作数符号相反,结果和减数符号一样,溢出OF=1
INC
不影响标志位
MUL
只影响OF
无符号数的乘法,如果结果的高一半是0
带符号数的乘法,如果乘积的高一半是低一半的符号扩展,那么CF=OF=0
DIV
不影响任何标志位。
DAA
压缩BCD
AAA
非压缩BCD
6.
AND
指令的操作数位长必须一致,目的操作数不能为立即数寻址,NOT
7.
BT
影响CF
8.
BSF
影响ZF
9.
SHL
逻辑左右移移出位补0
10.
MOVS
通常串处理指令同REP
11.
无条件跳转指令JMP
条件跳转指令,状态标志作为测试条件。
12.
SETZ
SETB
SETL
13.
LOOP
通过测试ZF
14.
CLC
15.
CALL
![](https://i-blog.csdnimg.cn/blog_migrate/2f60c0bc47d4178ac5e2b807936153ff.gif)