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
。
感谢您的时间!
答案 0 :(得分:1)
请记住,masm是一种“类型”汇编语言。看起来 ang 被定义为真实的。
问题是,“。while”生成一个cmp指令,然后是条件跳转。 并且cmp指令从reg或内存中获取一些整数值,但肯定不是真实的。因此“无效指令操作数”错误。
.endw中发生这种情况的原因很可能是因为.while / .endw构造在循环的底部而不是在开头生成测试。