低8位寄存器和高8位寄存器的区别;它们的值是否以相反的位字节顺序使用位?

问题描述 投票:0回答:2

“啊-DH”
高位 AH、BH、CH、DH 寄存器。
“AL-DL”
低位 AL、BL、CL 和 DL 寄存器。

引用自AMD64第1卷,我也在Intel的程序员手册中看到过。
我不太明白这是什么意思。 它与字节顺序有什么关系吗?由于 amd 和 intel 微处理器都是小端顺序。

可以解释为:
啊: 0 0 0 0 0 0 1 0
从第一位读取,因此返回:2(十进制)

中的值相同 AL: 0 0 0 0 0 0 1 0
从末尾读取并返回:64(十进制)

x86 cpu-architecture cpu-registers
2个回答
4
投票

AH 是 AX 的大半部分,AL 是小半部分,B、C 和 D 寄存器也是如此。因为我们直接指定高位或低位,而不是只要求先出现的位,所以字节序并没有真正发挥作用。

         AX = 0x288
 ________|________
/                 \
0000 0010 1000 1000
\_______/ \_______/
 AH=0x2    AL=0x88

3
投票

引文来自(前言,第xxvii页)。寄存器一直追溯到 到 8086,它们的行为仍然与那时相同。

16 位寄存器

AX
BX
DX
CX
的内容也可以使用 8 位访问器访问。特别是,如果

AX = 0x1234

然后

AH = 0x12
AL = 0x34

因此就有“高”和“低”位寄存器。这些访问器存在的主要原因是为了减少指令长度。如果您只需要存储 8 位值,则必须将完整的 16 位编码到指令中是浪费的。

但是,对于 32 位和 64 位寄存器,只有较低部分可以通过显式寄存器名称访问。

例如,

AX
EAX
的下部,
EAX
是(64位)
RAX
的下部。

© www.soinside.com 2019 - 2024. All rights reserved.