无法识别高级宏 - 初学者MASM

时间:2010-06-07 19:03:23

标签: assembly masm masm32

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

感谢您的时间!

1 个答案:

答案 0 :(得分:1)

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

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

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