2017-02-24 6 views
1

"AH-DH"
上位ビットのAH、BH、CH、およびDHレジスタ。
"AL-DL"
低ビットのAL、BL、CL、およびDLレジスタです。下位ビットレジスタと上位ビットレジスタの相違点

これはAMD64のボリューム1から引用されていますが、私はそれをIntelsのプログラマーのマニュアルで見てきました。
私はそれが何を意味するのか明確には分かりません。 エンディアンオーダーと関係がありますか? amdとintelの両方のマイクロプロセッサーはリトルエンディアンのオーダーです。
AH:

は、それは次のように説明することができる2(10進数)
しかし
ALで同じ値を:それを返すように0 0 0 0 0 0 1 0
は最初のビットから読み出され64(10進数)

+0

@dhke yeahあなたは正しく編集されています。 –

答えて

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ビットレジスタの場合、明示的なレジスタ名によって下位の部分だけにアクセスできます。

たとえば、AXは、EAXの下位部分であり、EAXは、(64ビット)RAXの下位部分です。

関連する問題