常用指令
1. 数据传送指令
1.1 MOV
从源操作数向目的操作数复制数据
用法:
MOV DST,SRC
说明:
两个操作数尺寸必须一致。例如MOV EBX,AX是错误的
两个操作数不能同时为内存操作数。例如MOV [var],[2000H]是错误的
目的操作数不能是CS,EIP和IP。例如MOV CS,AX是错误的
立即数不能直接送至段寄存器。例如MOV SS,2000H是错误的
1.2 MOVZX
将源操作数内容复制到目的操作数并将该值零扩展到16位或者32位
用法:
MOVZX DST,SRC
说明:
- 只适用于无符号整数
- 目的操作数必须是寄存器
1.3 MOVSX
将源操作数内容复制到目的操作数并将该值符号扩展到16位或者32位
用法:
MOVZX DST,SRC
说明:
- 只适用于有符号整数
- 目的操作数必须是寄存器
1.4 LAHF
将EFLAGS寄存器的低字节复制到AH寄存器中
用法:
LAHF
说明:
被复制的标志包含符号标志,零标志,辅助进位标志,奇偶标志和进位标志
1.5 SAHF
复制AH寄存器的值到EFLAGS寄存器的低字节
用法:
SAHF
说明:
用于恢复FLAGS低字节标记位
1.6 XCHG
交换两个操作数的内容
用法:
XCHG SRC1,SRC2
说明:
不接受立即操作数,其它和MOV指令规则一致
1.7 直接偏移操作数
对变量地址进行偏移得到新的地址
用法:
var+n
说明:
偏移数目n为字节,所以在数组元素大小不是1字节时,取下一个元素偏移也不是1