80x86常用指令总结

1.    数据传送指令
MOVMOVSXMOVZX
不能直接在存储器之间,段寄存器之间传送数据,必须通过通用寄存器。目的操作数不能是立即数寻址。指令不影响标志位。
PUSHPOP
操作数可以是立即数、存储器、寄存器中的任何一种寻址方式,但是POP指令不能是CS寄存器。不影响标志位。

2.         地址传送指令
LEA
将原操作数的有效地址送到目的寄存器。
LDSLESLFSLGSLSS
原操作数一定是存器寻址方式,存储器指定的第一个字的内容送到寄存器,第二个字的内容送到指令中指定的段寄存器。

3.         标志寄存器传送指令
LAHFSAHFPUSHFPOPFPUSHDPOPD

4.         类型转换指令
CBWCWDCDQBSWAP

5.         算术指令
ADDADC
无符号数加法,向最高有效位进位CF=1
带符号数加法,操作数符号相同,结果相反,溢出OF=1
SUBSUBB
无符号数减法,向最高有效位借位CF=1
带符号数减法,操作数符号相反,结果和减数符号一样,溢出OF=1

INCDECNEG
不影响标志位

       MULIMUL
只影响OFCF标志位
无符号数的乘法,如果结果的高一半是0,那么CF=OF=0
带符号数的乘法,如果乘积的高一半是低一半的符号扩展,那么CF=OF=0

       DIVIDIV
不影响任何标志位。

       DAADAS
压缩BCD码十进制调整指令,AL4位是十六进制A~F,则CF=1AF=1,并且OF无定义。

       AAAAAS
非压缩BCD码十进制调整指令,同样只影响AFCF标志位,其余和压缩BCD码类似。

6.         逻辑运算指令
ANDORNOTXORTEST
指令的操作数位长必须一致,目的操作数不能为立即数寻址,NOT指令不允许使用立即数寻址,并且它不影响标志位。其余的指令,CF=OF=0AF无定义,SFZFPF根据计算结果设定。

7.         位测试修改指令
BTBTSBTRBTC
影响CF状态标志

8.         位扫描指令
BSFBSR
影响ZF状态标志

9.         位移指令
SHLSALSHRSARROLRORRCLRCRSHLDSHRD
逻辑左右移移出位补0,最后移出的为送CF。算术左移和逻辑左移一样,算术右移,移出位补符号。

10.     串处理指令
MOVSCMPSSCASLODSSTOSINSOUTS
通常串处理指令同REPREPZREPNZREPEREPNE连用。

11.     控制转移指令
无条件跳转指令JMP,分为段内短跳转(8位位移量),段内近跳转(16或者32位位移量)和段间远跳转。
条件跳转指令,状态标志作为测试条件。

12.     条件设置指令
SETZSETNZZETSSETNSSETOSETNOSETPSETNPSETCSETNC。根据状态标志位,来设置目的字节操作数的值。
SETBSETNBSETBESETNBE。根据无符号数的比较结果设置目的字节操作数。
SETLSETNLSETLESETNLE。根据无符号数的比较结果设置目的字节操作数。

13.     循环指令
LOOPLOOPZLOOPNZ
通过测试ZFCLCXECX来决定是否结束循环。

14.     标志位相关指令
CLCCMCSTCCLDSTDCLISTI

15.     其他指令
CALLRETINTINTOIRETIRETD
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值