Assembly 指令的操作数大小无效

Assembly 指令的操作数大小无效,assembly,x86,masm,x87,Assembly,X86,Masm,X87,所以我试图用浮点数来完成我的平均程序,但是我得到了一个无效的操作数大小。我不明白我做错了什么 .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

所以我试图用浮点数来完成我的平均程序,但是我得到了一个无效的操作数大小。我不明白我做错了什么

.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

FIDIV
ST(0)
除以一个可以是16位或32位的整数,但您试图向其传递一个64位操作数:

fidiv   REAL8 PTR [esp + 4]
使用其中一个

fidiv   WORD PTR [esp + 4]


并确保
[esp+4]
处的值为整数。

为什么不告诉我们错误在哪一行?这不是一个“树桩小组”网站。另外,您是否考虑过操作数大小无效的可能性?在第一次操作中可能存在类似的问题。ebx真的指向浮点变量吗?
fidiv   DWORD PTR [esp + 4]