1

ここでは、変数X(8ビット変数)をレジスタbx(16ビットレジスタ)に移動しようとしています。この場合、Xの値をレジスタbxに移動するにはどうすればよいですか?

.686p
.model flat,stdcall
.stack 2048

.data
X byte 5
ExitProcess proto, exitcode:dword
.code

start:
invoke  ExitProcess, 0

mov bx, X; 1>p4.asm(13): error A2022: instruction operands must be the same size

end start ;what does the end statement do?
4

2 に答える 2

5

Rahulの答えに加えて、ゼロにする必要があり、bh80386以降(で示されている.686p)で作業している場合は、次のようになります。

movzx bx, X

Xを符号付きの値として使用していて、符号拡張が必要な​​場合bx

movsx bx, X
于 2013-03-21T06:07:06.037 に答える
3

BXの下位8ビットはBLとしてアドレス指定できます。

だから、あなたがする必要があるのは: mov bl, X

于 2013-03-21T05:58:16.563 に答える