第二字节(BYTE2)
第二字节是ModR/M字节,基本用途是指示指令的两个操作数,以及该字节之后是否还有其他字节(位移量字节和立即数字节)。由于主要用于用于操作数寻址,所以又称为“寻址字节”。
Mod域(即BYTE2[7:6],寻址模式域)有2个比特位,共4种组合,用于指示操作数的来源,即其中一个来自与存储器,或者两个都来自于寄存器。具体编码格式参见下表:
REG域(BYTE2[5:3],即寄存器域)用来指示一个寄存器,可以是源操作数,也可以是目的操作数,由第一字节的D标志位指示。具体编码格式如下:
在一些指令中,主要是立即数到存储器的指令变体,REG域用作操作码的扩展位,用来标识操作的类型。例如,
Todo:添加指令示例
R/M域(BYTE2[2:0],即寄存器/存储器域),用来指示另一个操作数,可以在存储器中,也可以在寄存器中。R/M域编码含义依赖于MOD域的设定。如果MOD=11(寄存器到寄存器模式),则R/M域标识第二个寄存器操作数。如果MOD是存储器模式(即00,01,10),则R/M指示如何如何计算存储器操作数的有效地址。
如果觉得《Intel 64/x86_64/IA-32/x86处理器 - 指令格式(5) - 8086/16位指令寻址字节》对你有帮助,请点赞、收藏,并留下你的观点哦!