さて、私は次のコードスニペットを扱っています:
push %ebp
mov %esp,%ebp
push %ebx
mov 0x8(%ebp),%eax
movzwl %ax,%edx
したがって、正の値を扱う場合、これは期待どおりに動作します。%edx にコピーされる値は、%eax (または %ax) の末尾の 16 ビットです。
ただし、負の数を入れると、すべてがおかしくなり始め、期待どおりに動作していないように見えます。
たとえば、%eax の値が -67043552 の場合、%edx にコピーされる値は 65312 です。
組み立て初心者ですので、私の勘違いでしたら申し訳ありません。どんな助けでも大歓迎です。