1
main proc
 finit
 .while ang < 91
    invoke func, ang
    fstp res
    print real8$(ang), 13, 10
    print real8$(res), 13, 10
    fld ang
    fld1
    fadd
    fstp ang
 .endw
 ret
main endp

这段 MASM 代码有什么问题?

我收到一个错误.endw。我已经进行了一些测试以确保自己做到这一点。汇编告诉我invalid instruction operands

感谢您的时间!

4

1 回答 1

1

请记住,masm 是一种“类型化”的汇编语言。看起来ang被定义为真实的。

问题是,“.while”生成一个 cmp 指令,然后是一个条件跳转。cmp 指令从 reg 或 memory 中获取一些整数值,但肯定不是真实的。因此出现“无效指令操作数”错误。

在 .endw 中发生这种情况的原因很可能是因为 .while / .endw 构造在循环底部而不是在开始时生成其测试。

于 2010-06-10T06:44:20.443 回答