下面的代码只是我目前正在尝试编写的程序的一小部分,但程序的其他部分都没有相关性,因此我只粘贴了必要的内容。无论如何,我想要做的是将inputLoopCounter中存储的值移动到ecx中,以确定循环应该执行多少次。但是,当我尝试组装此程序时,我收到问题标题中提到的错误。有人可以解释一下这个原因吗?
.data
inputLoopCounter BYTE -1
.code
mov ecx,inputLoopCounter
答案 0 :(得分:3)
一种可能的解决方案是将inputLoopCounter BYTE -1
替换为inputLoopCounter DWORD -1
。
答案 1 :(得分:0)
MASM会记住有关符号的内容,因此foo BYTE -1
表示从中加载指令的操作数大小。
英特尔语法汇编语言(NASM)的另一个主要特点是,无论[inputLoopCounter]
是什么inputLoopCounter
,都会很快收集从mov [inputLoopCounter], 0
加载4B的指令。
在NASM中,mov byte ptr [inputLoopCounter], 0
是语法错误,因为任何一个操作数都没有隐含的操作数大小。 (在MASM中,它将是 $scope.persons = res.data;
。)