失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Intel 64/x86_64/IA-32/x86处理器 - 指令格式(6) - 8086/16位指令位移量字节/立即数字节

Intel 64/x86_64/IA-32/x86处理器 - 指令格式(6) - 8086/16位指令位移量字节/立即数字节

时间:2022-10-08 01:41:26

相关推荐

Intel 64/x86_64/IA-32/x86处理器 - 指令格式(6) - 8086/16位指令位移量字节/立即数字节

第三~六字节(BYTE3~BYTE6)

这4个字节是指令的可选字节,通常用来指示存储器操作数的位移量,和/或立即操作数的值。

位移量字节可以是单字节或者双字节。只要有可能,程序语言翻译器(例如汇编器)总是试图生成单字节的位移量。MOD域指示后续有几个字节的位移量。遵循Intel的规范,如果是双字节位移量,则第3字节存储低位字节,第4字节存储高位字节,即低位字节存储在存储器的低地址处,高位字节存储在高地址处。如果是单字节位移量,8086处理器自动地将其符号扩展为16位位移量,然后在用于有效地址计算。

立即数总是在任何的位移量之后出现。立即数的存储规则同位移量。

示例:

Intel的指令文档规格

如下的汇编代码

MOV ax, 1234H

MOV bx, 5678H

经汇编器翻译以后会生成的机器指令

b8 34 12

bb 78 56

将以上指令用二进制格式表示如下

1011 1000 0011 0100 0001 0010

1011 1011 1001 1010 0111 1000

MOV ax, 1234H指令分解如下

第一字节:操作码:1011, W位:1,REG域:000(即AX)

第二字节:立即数低位字节34H

第三字节:立即数高位字节12H

MOV bx, 5678H指令分解如下

第一字节:操作码1011,W位:1,REG域:011(即BX)

第二字节与第三字节:立即数5678H。

REG域的寄存器代码如下表所示

如果觉得《Intel 64/x86_64/IA-32/x86处理器 - 指令格式(6) - 8086/16位指令位移量字节/立即数字节》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。