80x86系列处理器指令集详解
1. 8086指令集概述
8086的机器指令长度为1 - 6字节。多数指令的第一个字节包含操作码(opcode),第二个字节包含操作数的寻址模式,其余字节包含地址信息或立即数。典型的双操作数指令格式如下:
| 字节 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | — | — | — | — | — | — | — | — |
| 字节1 | OPCODE | D | W | | | | | |
| 字节2 | MOD | REG | R/M | | | | | |
| 字节3 | | | | | | | | |
| 字节4 | | | | | | | | |
| 字节5 | | | | | | | | |
| 字节6 | | | | | | | | |
其中,第一个字节的6位操作码标识操作,W位指定操作数大小(W = 0表示8位数据,W = 1表示16位数据)。对于寄存器到寄存器、寄存器到内存、内存到寄存器的操作,第二个字节的REG字段包含寄存器编号,D位指定REG字段中的寄存器是源操作数还是目标操作数(D = 0表示源,D = 1表示目标);对于其他类型的操作,REG字段包含操作码的3位扩展。
MOD和R/M字段指定第二个操作数,不同的MOD值代表不同的寻址模式:
- MOD = 11:寄存器模式。
- MOD = 00:无位移的内存模式,除非R/M = 110,此时跟随一个16位位移。
- MOD = 01:带8位位移(DB)的内存模式。
- MOD = 10:带16位位移(D16)的内存模式。
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



