错误A2070:在汇编语言中使用嵌套while循环时无效的指令操作数

时间:2014-11-28 19:58:20

标签: assembly x86 masm irvine32

我正在尝试使用masm在程序集中循环嵌套。我得到了"错误A2070:无效的指令操作数"在第15行,即运行以下代码时内部while循环的endw指令。

INCLUDE Irvine32.inc
.data
i byte 1
j byte 2
.code
main PROC  
xor eax,eax
 .while i<5
mov j, 2
.while j<i
    mov al, j
    call writeDec
    call crlf
    inc j
.endw
inc i
 .endw
exit
main ENDP
END main

我无法找到原因。任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

错误在于:

.while j<i

您无法直接比较两个内存内容。可以将存储器内容与寄存器进行比较,例如:

mov dl, i
.while j<dl
顺便说一句:不要相信外星人&#34;功能(欧文WriteDecCrlf)。当寄存器无意中更改其内容时,这可能是由于这样的功能。