2013-07-28 16 views
0

我想分两个整数并获得一个浮点数,然后在结果部分显示浮动。问题是,它现在显示为一个非常大的整数,并且我不知道我是否正确地做了这件事。MASM浮点结果变成一个大的整数值

代码:

定义:

floatVal   REAL4 0.0f 
numCount   SDWORD 0 
nextNum   SDWORD 0 
totalSum   SDWORD 0 
averageNum  SDWORD ? 

代码问题:

fild totalSum 
fidiv numCount 
fstp floatVal 

再后来就显示:

mov  edx, OFFSET average_1 
call WriteString 
mov eax, floatVal 
call  WriteDec 
call  CrLf 

我现在用的是irvine32库,并这是我的第一个试图在汇编语言中使用float。

回答

1

虽然32位浮点数不小心适合eax寄存器,但WriteDec函数需要一个整数,因此会解释位模式,从而产生非预期输出。浮动不会直接映射到整数。

您应该将结果转换为整数或找到打印浮动的方法。

如果你只是对你是否正确使用调试器感兴趣。顺便说一下,您发布的代码看起来是正确的。

+0

有一个irvine函数WriteFloat,我错过了,当我正在寻找它。谢谢 –