80x86指令按照功能可分为6个大类:1、传送类指令2、算数运算类指令3、逻辑类指令4、串操作类指令5、程序转移类指令6、处理器控制类指令
1、传送类指令(1)数据传送指令

  • MOV

指令格式:MOV DEST, SRC指令功能:DEST <= (SRC) 将源地址的内容(源操作数)传送到目的地址中,传送后源操作数保持不变。注意:

  1. 目的操作数不能是CS代码段与立即数
  2. 不准许"内存单元"->"内存单元"的操作
  3. 不准许"立即数"->"段寄存器"的操作
  4. 不准许"段寄存器"->"段寄存器"的操作

  • PUSH

指令格式:PUSH SRC指令功能:首先修改堆栈指针SP或ESP的内容,然后将源操作数压入栈顶单元中。备注:

  1. 源操作数可以是立即数、寄存器(含段寄存器)或存储单元的内容(8086不能使用立即数)
  2. 操作数为16位时,SP或ESP-2;操作数为32位时,SP或ESP-4
  3. PUSH不支持进行字(8位)操作
  • POP

指令格式:POP DEST指令功能:首先将SP或ESP指向的栈顶单元的内容弹出到目的寄存器或储存单元中,然后修改SP或ESP指向栈顶。备注:

  1. 目的地址可以采用寄存器(CS除外)或存储器寻址方式,但不能是立即寻址。
  2. 操作数为16位时,SP或ESP+2;操作数为32位时,SP或ESP+4
  3. POP不支持进行字(8位)操作
  • PUSHA / PUSHAD

指令格式:PUSHA / PUSHAD指令功能:将各通用寄存器内容依次压入栈顶单元。 备注:

  1. PUSHA 16位通用寄存器依次进栈,进栈次序为AX、CX、DX、BX,以及指令执行前的SP、BP、SI、DI。

指令执行后SP-16

  1. PUSHAD 32位通用寄存器依次进栈,进栈次序为EAX、ECX、EDX、EBX,以及指令执行前的ESP、EBP、ESI、EDI。指令执行后SP-32
  • POPA / POPAD

指令格式:POPA / POPAD指令功能:将堆栈栈顶单元内容依次弹出到各通用寄存器中。备注:

  1. POPA 16位通用寄存器依次出栈,出栈次序为DI、SI、BP、SP、BX、DX、CX、AX。指令执行后SP+16
  2. POPA 32位通用寄存器依次出栈,出栈次序为EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX。指令执行后SP+32
  3. SP或ESP出栈时原先由PUSHA或PUSHAD存入的SP或ESP的原始内容将被丢弃(伪出栈)
  • XCHG

指令格式:XCHG DEST, SRC指令功能:将源地址的内容和目的地址的内容相互交换。备注:

  1. 数据交换只能在通用寄存器之间或通用寄存器与存储单元之间,不准许使用段寄存器与立即数。
  2. 指令准许字或字节操作,386以及后继机型还准许双字操作。


又香又白人人夸