请问一个关于浮点指令的有关问题

请教一个关于浮点指令的问题
Assembly code

include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib

.data
fpValue        DWORD        10
start:
finit
fld fpValue
end start


最近正在学浮点指令,这应该是浮点指令里面很简单的一段代码吧,我知道fld应该改为fild才算是把10压入浮点寄存器,但用fld压入浮点寄存器产生的结果让我很疑惑
首先,fpValue的值为10,汇编后用补码表示就是0000000AH,因为我调用的命令是fld,所以系统会把它当成一个浮点型存储进浮点寄存器中,那这个0000000A到底代表哪个浮点数呢?我算了一下,因为是DWORD,所以应该把它当成单精度浮点型,我计算方法如下
第一位是0,代表正数
中间8个0,代表指数为0,
后面23为有效数字为000 0000 0000 0000 0000 1010,也就是二进制的纯小数0.000 0000 0000 0000 0000 1010,其十进制形式为0.0000011920928955078125
这样,该浮点数的十进制表示为(1+0.0000011920928955078125)x2^(0-127)=5.8774787606037591639290373047591e-39
但是我用OllyDbg调试发现,压入浮点寄存器的值为1.401298e-44,很不理解,是我算错了,还是我的计算方法不对呢,请高手指点一下,十分感谢!


------解决方案--------------------
网上搜索看了下,这类指数为 0 的属于“非规范化数”,有着特殊的表示和规范。这里,简单地,就是它没有缺省的尾数位,指数增 1。可用参考下面这个链接的 5.4 节。
http://www.cnblogs.com/kingwolfofsky/archive/2011/07/21/2112299.html