【发布时间】:2016-05-04 18:04:27
【问题描述】:
下面的代码只是我目前正在尝试编写的程序的一小部分,但程序的其他部分与此无关,所以我只粘贴了必要的部分。无论如何,我要做的是将 inputLoopCounter 中存储的值移动到 ecx 中,以确定循环应该执行多少次。但是,当我尝试组装这个程序时,我得到了问题标题中提到的错误。谁能解释一下这个原因?
.data
inputLoopCounter BYTE -1
.code
mov ecx,inputLoopCounter
【问题讨论】:
-
不是 x86 专家,但问题可能在于将“BYTE”放入需要 32 位值的寄存器中?也许只是加载
cl。实际上,在从内存中加载时,可能需要使用括号 []。我会把它留给真正的专家,他们很快就会来到这里:) -
或者
movsx ecx, byte ptr [inputLoopCounter],如果你真的希望你的变量是一个字节,但仍然想将它加载到一个双字寄存器中。 -
@Michael 如果它不是绝对必要的字节,我是否可以将 BYTE 更改为 DWORD 以使其工作?编辑:谢谢 Jose Manuel Abarca Rodriguez,您回答了我的问题。这是一个非常业余的错误。
-
@JoseManuelAbarcaRodríguez 当然,为什么不呢。