这里,我试图将变量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?
答案 0 :(得分:5)
除了Rahul的回答之外,如果您还需要将bh
归零并且正在处理80386或更新的任何内容(如.686p
所示):
movzx bx, X
如果您使用X作为有符号值并且需要签名扩展bx
:
movsx bx, X
答案 1 :(得分:3)
BX的低8位可以作为BL寻址。
所以,你需要做的就是:
mov bl, X