2017-01-08 26 views
0

私は私に多くのことを混乱x86アセンブリ言語の質問を学ぶために始めています以下のように、それは次のようになります。私たちはその上下16ビットを入れ替えることができ、32ビットの値を考えるとx86アセンブリ言語上位と下位ビット

。例えば、我々は値

0100 0101 0110 0111 0000 0001 0010 0011 

を取得するために、その上下16ビットを入れ替えることができ

0000 0001 0010 0011 0100 0101 0110 0111 

与えられた私は、AXレジスタは、EAXの下半分が含まれていますが、それについてthatsのことを知っています。ああ助けていただければ幸いです。

+0

をあなたがそれを行う方法を求めているEAXの上位と下位16ビットを入れ替える

は使用して16回の内容を回転させる必要が?たとえば16ビットだけ回転します。 'rol eax、16'。 – Jester

+2

あなたの質問は何ですか正確にあなたの質問 –

+0

"123"と書いているように、右の方が右にあります(右に行くほど10の下限が10^0( "ones")になります)に達する)。したがって、基本2(バイナリ)フォーマットで同じ方向を持つためには、 "1"は右端の最後の桁です(「最下位ビット」とも呼ばれます)。左の最初のビットの値は2^31です。これは人間のビジュアル化です。マシンには左右どちらもありません。HWセルがインターリーブされたような奇妙な順序で格納することができます。 – Ped7g

答えて

2

私はAXレジスタにEAXの下半分が含まれていることを知っていますが、それについては知っています。

EAXレジスタは32ビットのレジスタであるため、32ビットの値を保持できます。 EAX

0000 0001 0010 0011 0100 0101 0110 0111 
^    ^^    ^
|     | |     bit 0 
|     | bit 15 
|    bit 16 
bit 31 

下半分はEAXの上半分を占める15
に0から番号のビットを占め: そのビットは、これはビットが番号付けされている方法である31

0から番号付けされています

AXレジスタは、より大きなEAXレジスタの下半分に位置する16ビットレジスタです。そのビットは0から15の番号が付けられます。
EAXレジスタの上半分には別の名前はありません!

rol eax, 16 ;Rotating to the left 

を使用した場合と同じ値が表示されます:

ror eax, 16 ;Rotating to the right 
+0

ありがとう、本当に助かりました! – Alex

関連する問題