「最初のビット」が最下位ビットを意味する場合は、次を試してください。
...
mov ebx, eax
and ebx, 01
命令が名前付きレジスタのすべてのビットを一度に操作し、「and」命令がオペランドをビットごとに結合することを理解していないようです。
次も機能し、間違いなくリクエストのより直接的な解釈です(「eaxの最初のビットを取得してからEBXに入れる」)が、EAXの内容を破壊します:
...
and eax, 1
mov ebx, eax
アセンブリ コードでは、レジスタがほとんどないため、それらの内容が貴重になる傾向があるため、新しい結果を計算する際に 1 つのレジスタの内容を破棄することは通常避けられます。(できないときはできないが、この場合は避けやすい)。
最後に、次のように記述できます。
...
mov ebx, 1
and ebx, eax
これは問題なく動作し、他の 2 つと同じくらい高速です。私が最初に言及することによって、私が気にかけている値 (EAX の内容) を強調するので、私は最初のものを好みます。この種のスタイルはあまり重要ではないように思えるかもしれませんが、多くのコード、特にアセンブラーなどの難解なものを書く場合、後で読みやすくするためにそれを行うことは非常に価値があります。
Intel のリファレンス マニュアルを見つけて注意深く読んで、各マシン命令が何をするかを理解することは、あなたの苦労の価値があります。それは大きな本なので、大変な作業のように思えます。最初に必要と思われる指示に集中してください。