0

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

代码:

定义:

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。

4

1 回答 1

1

虽然 32 位浮点数意外装入eax寄存器,但该WriteDec函数需要一个整数,因此将位模式解释为产生意外输出。浮点数不会以这种方式直接映射到整数。

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

If you are just interested whether you are doing it right use a debugger. The code you posted seems correct, by the way.

于 2013-07-28T01:15:52.567 回答