如何在x86汇编中将8位地址移入16位寄存器?

时间:2013-03-21 05:56:45

标签: assembly x86

这里,我试图将变量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?

2 个答案:

答案 0 :(得分:5)

除了Rahul的回答之外,如果您还需要将bh归零并且正在处理80386或更新的任何内容(如.686p所示):

movzx bx, X

如果您使用X作为有符号值并且需要签名扩展bx

movsx bx, X

答案 1 :(得分:3)

BX的低8位可以作为BL寻址。

所以,你需要做的就是: mov bl, X