低位寄存器和高位寄存器的区别

Difference between low and high bit registers

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

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

是否可以解释为:
啊: 0 0 0 0 0 0 1 0
从第一位读取所以它 returns: 2 (in decimal)
但是
中的值相同 阿尔:0 0 0 0 0 0 1 0
从末尾开始读取 returns: 64 (in decimal)

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

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

引用自(preface, page xxvii). The registers go all the way back to the 8086,他们的行为还是和当年一样。

16 位寄存器 AXBXDXCX 的内容也可以使用 8 位访问器访问。特别是,如果

AX = 0x1234

然后

AH = 0x12
AL = 0x34

因此 "high" 和 "low" 位寄存器。这些访问器存在的主要原因是为了减少指令长度。如果您只需要存储一个 8 位值,则必须将完整的 16 位编码到一条指令中是一种浪费。

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

例如,AXEAX的下半部分,EAX是(64位)RAX的下半部分。