【发布时间】:2010-01-20 04:47:20
【问题描述】:
我在理解如何检索使用英特尔 x86 协处理器完成的计算结果时遇到了一些麻烦。
请考虑以下数据段。
.data
res real4 ?
x real4 5.0
k real4 3.4
以及以下代码段,版本 1:
.code
main:
fld x ; 5.0
fadd k1 ; 5.0 + 3.4
fistp res ; store as integer (it will round, in this case down)
mov eax, res ; eax = 00000008
end main
和第 2 版:
.code
main:
fld x ; 5.0
fadd k ; 5.0 + 3.4
fstp res ; store as real
mov eax, res ; eax = 41066666
end main
我了解第 1 版,没问题。
这是第 2 版我不明白。我可以在调试器中看到它与版本 1 一样进行了一些精确的计算,但是当存储时间是“41066666”!?
这是什么原因?
用什么“编码”把8.4变成“41066666”?
有没有办法将其转换回 8.4,以便我可以在控制台中打印(例如,使用 StdOut masm32 库函数)?
谢谢。
【问题讨论】: