所以我试图用浮点数完成我的平均程序,但是我的操作数大小无效。我不明白我做错了什么。
.386
.model flat
public _Average
.code
_Average proc
finit
mov ecx, [esp + 4]
mov ebx, [esp + 8]
fldz
jecxz Done
Do:
fadd REAL8 PTR [ebx]
add ebx, 8
loop Do
fidiv REAL8 PTR [esp + 4]
Done:
ret
_Average endp
.data
end
答案 0 :(得分:2)
FIDIV
将ST(0)
除以一个可以是16位或32位的整数,但是你试图将它传递给64位操作数:
fidiv REAL8 PTR [esp + 4]
使用
fidiv WORD PTR [esp + 4]
或
fidiv DWORD PTR [esp + 4]
并确保[esp + 4]
处的值为整数。