x86汇编极端新手查询:“无效指令操作数”?

时间:2016-05-04 18:04:28

标签: assembly x86 masm32

下面的代码只是我目前正在尝试编写的程序的一小部分,但程序的其他部分都没有相关性,因此我只粘贴了必要的内容。无论如何,我想要做的是将inputLoopCounter中存储的值移动到ecx中,以确定循环应该执行多少次。但是,当我尝试组装此程序时,我收到问题标题中提到的错误。有人可以解释一下这个原因吗?

.data
inputLoopCounter BYTE -1

.code
mov   ecx,inputLoopCounter

2 个答案:

答案 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; 。)