2017-02-24 44 views
1

“AH-DH”
高位AH,BH,CH和DH寄存器。
“AL-DL”
低位AL,BL,CL和DL寄存器。低位和高位寄存器的区别

它是从AMD64第1卷引用的,我也在英特尔程序员手册中看到过。
我不清楚这是什么意思。 它与endian命令有什么关系?由于amd和intel微处理器都是小端的顺序。

是否可以解释为:
AH:0 0 0 0 0 0 1 0
从第一比特读所以它返回:2(十进制)
但在
AL的值相同: 0 0 0 0 0 0 1 0
从结尾读取并返回:64(十进制)

+0

@dhke是啊你是正确的编辑。 –

回答

3

AH是AX的大一半,AL是较小的一半,同样对于B,C,和D寄存器。因为我们直接指定高位或低位,而不是仅仅要求首先出现,所以排序并不真正起作用。

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

我认为这是我正在寻找的答案...很好的图表。 –

2

报价是(preface, page xxvii)。寄存器一直回到to the 8086,它们的行为仍然与当时相同。

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

AX = 0x1234 

然后

AH = 0x12 
AL = 0x34 

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

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

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