MOV分成三类,第一类不需要拓展(MOV),第二类做符号拓展(MOVS),第三类做零拓展(MOVZ),拓展类型根据源操作数决定。
这三类根据操作的数据类型其后可加l,w,b。
MOV操作的操作数可以是寄存器,也可是存储器,但不可两个都是存储器。
第一个是源操作数,第二个是目的操作数。
pop和push也属于MOV指令,不同的是他们只有一个操作数,%esp保存栈顶元素的地址,压栈。
例题:
1.mov %eax (%esp) movl
2.mov (%eax) %dx 从32b到16b,截断,只需要movw即可
3.movl %eax,$0x123 错误,立即数不能作为地址
4.movb $0xF,(%bl) 错误,(%bl) 不能作为存储器地址,把括号去了可以