1.MOV指令用来将源操作数复制到目的操作数当中,是一个数据传送指令。
第一个操作数是目的操作数,第二个操作数是源操作数
2.目的操作数的内容是会发生改变的,源操作数不会发生改变
3.原则
1.两个操作数的大小必须一致
2.两个操作数不能都为内存操作数
3.指令指针寄存器(IP EIP RIP)不能作为目的操作数
MOV reg, reg
MOV reg, mem
MOV mem, reg
MOV mem, imm
MOV reg, imm
内存到内存的拷贝 中间必须要经过寄存器
4.整数的全0/符号拓展
1.在计算机中,有符号数的最高位 0代表正数,1代表负数,负数是用补码表示的
如果我们要将一个16位的负数,写到一个32位的寄存器中,那就应该把这个32位寄存器每个位都置1,然后把这个16位的负数,写入到低16位,
如果是一个16位的正数,那么就把32位寄存器置0
2.MOVZX指令
(进行全0拓展并传送)将源操作数送入目的操作数,并把目的操作数0拓展到16位或32位
注意源操作数不能是常数
MOVXZ reg32, reg/mem8
MOVXZ reg32, reg/mem16
MOVXZ reg16, reg/nem8
3.MOVSX指令
(进行符号拓展并传送)将源操作数的内容复制到目的操作数,并把目的操作数符号拓展到16位或32位
MOVXZ reg32, reg/mem8
MOVXZ reg32, reg/mem16
MOVXZ reg16, reg/nem8
5.XCHG指令交换两个操作数的内容
不能使用立即数
XCHG reg, reg
XCHG reg, mem
XCHG mem, reg
LAHF和SAHF指令
LAHF将EFLAG寄存器的低字节复制到AH中
LAHF将AH的内容写入到EFALG寄存器的低字节