3.3.1.1 通用数据传送指令
MOV dst,
src;传送指令(move)
执行操作:(dst) ← (src)
功能: 将源操作数(字节或字)传送到目的地址。
注意:
● 目的操作数dst和源操作数src不能同时用存储器寻址方式,这个限制适用于所有指令;
● 目的操作数dst不能是CS,也不能用立即数方式;
● 目的操作数dst和源操作数src不允许同时为段寄存器;
● MOV指令不影响标志位。
PUSH src ; 进栈指令(push onto the stack)
执行操作: (SP) ← (SP)-2
((SP)) ← (src)
POP dst ; 出栈指令(pop from the stack)
执行操作: (dst) ← ((SP))
(SP) ← (SP)+2
PUSH和POP指令分别将数据存入堆栈或把堆栈中的数据取出。堆栈是以LIFO(后进先出)方式工作的一个存储区,程序中定义的堆栈段就是这样一个LIFO存储区。数据存入堆栈单元或从堆栈单元中取出都由堆栈指针SP指示,而SP总是指向栈顶,所以进栈和出栈指令都会自动修改SP。
PUSH指令执行时,SP的内容先减2,然后将数据压入SP所指示的字单元,存储的方法同样是高8位存入高地址字节,低8位存入低地址字节。POP指令执行时,将SP所指示的栈顶地址的内容取出放入目的地址,然后SP增2,指向新的栈顶地址。
注意:
● PUSH和POP指令只能是字操作,因此存取字数据后,SP的修改必须是+2或-2;
● PUSH和POP指令不能使用立即数方式;
● POP指令的dst不允许是CS寄存器;
● PUSH和POP指令都不影响标志位。
PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
XCHG opr1, opr2 ; 交换指令(exchange)
执行操作:(opr1) ←→ (opr2)
XCHG指令使两个操作数opr1,和opr2互相交换,其中一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
注意:
● 不允许使用段寄存器
● 不影响标志位
|