【发布时间】:2019-11-08 13:54:42
【问题描述】:
如何解决将 8 位值移动到 BX 寄存器(16 位)的问题?
mov al, 10h
mov bx, al
为此我得到:
operands do not match: 16 bit and 8 bit register
【问题讨论】:
-
您需要转换大小或依赖部分寄存器。例如。
movzx bx, al、movsx bx, al或xor bh, bh; mov bl, al。 -
或者更好,
movzx ebx, al写入完整的寄存器,而不是只写入 16 位的部分寄存器。 -
@PeterCordes 我们不知道这是 16 位代码还是 32 位代码:)
-
@Jester:啊。鉴于 OP 报告“不工作”,这可能是 emu8086 或其他一些遗留问题。幸运的是,Fuz 回答了这两种情况。
-
该错误信息具体是emu8086生成的错误,所以环境上没有什么疑问。我已经更新了标签。
标签: assembly x86-16 emu8086 sign-extension zero-extension