MASM浮点结果变为大整数值

时间:2013-07-28 00:48:40

标签: assembly masm irvine32

我正在尝试除以两个整数并得到浮点数,然后在结果部分显示浮动。问题是,它现在显示为一个非常大的整数,我不知道我是否做得对。

代码:

定义:

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 个答案:

答案 0 :(得分:1)

虽然32位浮点意外地适合eax寄存器,但WriteDec函数需要一个整数,因此将位模式解释为产生非预期的输出。浮点数不会直接映射到整数。

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

如果您只是感兴趣,是否正确使用调试器。顺便说一句,你发布的代码似乎是正确的。