error A2070: invalid instruction operands while using nested while loop in assembly language

◇◆丶佛笑我妖孽 提交于 2019-12-02 05:33:00

问题


I am trying nested while loop in assembly using masm. I am getting the "error A2070: invalid instruction operands" at line 15 i.e at the endw directive of internal while loop while running the following code.

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

I cant find the reason for this. Can anyone help me?


回答1:


The error is here:

.while j<i

You cannot compare two memory contents directly. It is possible to compare a memory content with a register, e.g.:

mov dl, i
.while j<dl

BTW: Don't trust an "alien" function (Irvine's WriteDec and Crlf). When a register unintentionally changes its contents, this can due to such a function.



来源:https://stackoverflow.com/questions/27195196/error-a2070-invalid-instruction-operands-while-using-nested-while-loop-in-assem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!