装配程序中的错误A2001

时间:2016-05-02 05:31:22

标签: assembly x86 masm32

Proc Code:

Values PROC ,

文字:PTR BYTE,listPtr:PTR BYTE

mov edx,Text

L1: call WriteString 

call ReadFloat

      fild 100

      fcomp comVal

      jg endLoop

      fild 100

      fcomp comVal

      jl endPRoc

    fstp REAL8 PTR [esi]

      add esi, TYPE REAL8


endProc:

值ENDP

我使用invoke storeValues, ADDR prompt, ADDR List调用它并获取错误2001并对如何修复它感到困惑

1 个答案:

答案 0 :(得分:1)

Intel Software Manual第830页中所定义,FILD采用内存操作数,而不是直接操作数:

DF /0 FILD m16int Valid Valid Push m16int onto the FPU register stack.
DB /0 FILD m32int Valid Valid Push m32int onto the FPU register stack.
DF /5 FILD m64int Valid Valid Push m64int onto the FPU register stack.

您想要在数据段中定义常量,并指向它。 类似的东西:

.data 
hundred dd 100

; ....

.code
fild dword ptr [hundred]