" AH-DH"
高位AH,BH,CH和DH寄存器
" AL-DL"
低位AL,BL,CL和DL寄存器。
它引自AMD64第1卷,我在Intels程序员手册中也看到了这一点。
我不清楚它是什么意思。
它与字节顺序有什么关系吗?因为amd和intel微处理器都是小端序。
可以解释为:
AH:0 0 0 0 0 0 1 0
从第一位读取,使其返回:2(十进制)
但是相同的价值
AL:0 0 0 0 0 0 1 0
从末尾读取并返回:64(十进制)
答案 0 :(得分:3)
AH是AX的较大一半,AL是较小的一半,类似于B,C和D寄存器。因为我们直接指定高阶位或低阶位,而不仅仅是要求先发生什么,所以endianness并没有真正发挥作用。
AX = 0x288
________|________
/ \
0000 0010 1000 1000
\_______/ \_______/
AH=0x2 AL=0x88
答案 1 :(得分:2)
引用来自(preface, page xxvii)。寄存器一直追溯to the 8086,它们的行为仍然与当时相同。
还可以使用8位访问器访问16位寄存器AX
,BX
,DX
,CX
的内容。特别是,如果
AX = 0x1234
然后
AH = 0x12
AL = 0x34
因此"高"和"低"位寄存器。这些访问器存在的主要原因是减少指令长度。如果您只需要存储一个8位值,则必须将完整的16位编码为指令是浪费的。
但是,对于32位和64位寄存器,只有下部可以通过显式寄存器名访问。
例如,AX
是EAX
的下半部分,EAX
是(64位)RAX
的下半部分。