【问题标题】:error A2070: invalid instruction operands while using nested while loop in assembly language错误 A2070:在汇编语言中使用嵌套 while 循环时指令操作数无效
【发布时间】:2014-11-28 19:58:20
【问题描述】:

我正在尝试使用 masm 在程序集中嵌套 while 循环。我在第 15 行收到“错误 A2070:无效指令操作数”,即在运行以下代码时内部 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

我找不到原因。谁能帮帮我?

【问题讨论】:

标签: assembly x86 masm irvine32


【解决方案1】:

错误在这里:

.while j<i

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

mov dl, i
.while j<dl

顺便说一句:不要相信“外星人”函数(Irvine 的 WriteDecCrlf)。当一个寄存器无意中改变了它的内容时,这可能是由于这样的功能。

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2015-02-13
    相关资源
    最近更新 更多