3.3 80X86指令系统
其指令系统可以是以下的6组:
- 数据传送指令
- 算术指令
- 逻辑指令
- 串处理指令
- 控制转移指令
- 处理机控制指令
数据传送指令
传送指令MOV
- 其目的操作数不能是立即码
- 其目的操作时不能是代码段
- 其目的操作数和源操作数不能都是段地址
- IP不能作为源操作数,也不能作为目的操作数
- 立即数不能直接传送给段寄存器
- 两个操作数必须有一个是寄存器,除了立即寻址以外
- MOV BP OFFSET TABLE 是直接将table的偏移地址传送给 BP
交换指令 ECHG
- ECHG OPERA1, OPERA2 两个操作数不能同时是段寄存器,也不能同时是存储器,必须有一个是寄存器
- 操作数不能是立即数
地址传送指令
- LEA 简单的理解,和MOV OFFSET TABLE 有点类似
- LDS 将偏移地址赋给目的操作数,段地址赋给DS
- LES 将偏移地址赋给目的操作数,段地址赋给ES
栈操作指令
- 堆栈的数据必须是字,针对于DS
- PUSH SRC 源操作数不能使立即数
- POP DET 目的操作数,不能POP代码段或者是立即数
地址传送指令
- LAHF 传送标志位的最低7位到AH
- SAHF 把AH传送给标志位的最低7位,0,2,4,6,7(CF, PF, AF, ZF, SF)
- PUSHF 把标志寄存器的内容压入到堆栈中
- POPF 把堆栈中的内容放入到标志寄存器中