【问题标题】:MASM Floating Point result turning into a large integer valueMASM 浮点结果变成一个大整数值
【发布时间】:2013-07-28 00:48:40
【问题描述】:

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

代码:

定义:

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。

【问题讨论】:

    标签: assembly masm irvine32


    【解决方案1】:

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

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

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

    【讨论】:

    • 有一个 irvine 函数 WriteFloat,我在寻找它时错过了它。谢谢
    猜你喜欢
    • 2015-05-28
    • 1970-01-01
    • 2018-10-09
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多