“啊-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(十进制)
AH 是 AX 的大半部分,AL 是小半部分,B、C 和 D 寄存器也是如此。因为我们直接指定高位或低位,而不是只要求先出现的位,所以字节序并没有真正发挥作用。
AX = 0x288
________|________
/ \
0000 0010 1000 1000
\_______/ \_______/
AH=0x2 AL=0x88
引文来自(前言,第xxvii页)。寄存器一直追溯到 到 8086,它们的行为仍然与那时相同。
16 位寄存器
AX
、BX
、DX
、CX
的内容也可以使用 8 位访问器访问。特别是,如果
AX = 0x1234
然后
AH = 0x12
AL = 0x34
因此就有“高”和“低”位寄存器。这些访问器存在的主要原因是为了减少指令长度。如果您只需要存储 8 位值,则必须将完整的 16 位编码到指令中是浪费的。
但是,对于 32 位和 64 位寄存器,只有较低部分可以通过显式寄存器名称访问。
例如,
AX
是EAX
的下部,EAX
是(64位)RAX
的下部。