我在理解如何检索使用 Intel 的 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 库函数)?
谢谢。