私はやろうとしています
and eax, 0fh
と私は0fh
手段を知っています15
。から
and eax, 0fh
の最後の 4 ビットを除くすべてをクリアすることになっていますeax
。(32-4)=28 ビットの 1 と 4 つの 0 を取得する方法がわかりません。
私はやろうとしています
and eax, 0fh
と私は0fh
手段を知っています15
。から
and eax, 0fh
の最後の 4 ビットを除くすべてをクリアすることになっていますeax
。(32-4)=28 ビットの 1 と 4 つの 0 を取得する方法がわかりません。
28 個の 1 ビットの後に 4 個の 0 ビットが続くわけではありません。これは逆です。0fh
は:
000...0001111
and
1ビットで何かをすると、その何かが返されます。and
0 ビットを使用すると、常にゼロになります (ビット単位の演算子に関する論文については、こちらを参照してください) 。
AND
したがって、 で数値を入力000..001111
すると、右端の 4 ビットを除くすべてがクリアされます。
簡潔にするために、代わりにこの命令を見てみましょう。
and al, 0fh
0fh
00001111
バイナリに変換されます。
各ビットの内容に関係なくx
、これはバイナリで得られるものです。
al xxxxxxxx
0fh 00001111
------------
and 0000xxxx
具体例:
al 01010101
0fh 00001111
------------
and 00000101