如果我有一个 IEEE 浮点十六进制 42F6E979,如何将其转换为十进制?我相信十进制表示是 = 123.456001
(大多数)汇编语言实际上并没有非常严格地强制执行类型,因此您只需使用该值初始化一个位置,然后将其视为/使用浮点数。最简单的转换方法通常是这样的:
.data
myfloat dd 042F6E979H
mydec db 10 dup(?)
.code
mov ebx, offset mydec
fld myfloat
fbstp [ebx]
这实际上会产生二进制编码的十进制,因此您必须将每个字节拆分为两个数字才能显示。当然,这是针对 x86 的——大多数其他架构都会使这项工作变得更加困难。例如,在 PowerPC 上,您有fctiw
,它只是转换为整数(与 x86 的一般顺序相同)fist
)。要使用它,通常需要乘以 10 的倍数以获得所需的小数位数,然后转换为整数,并将小数点放在结果中的正确位置。当/如果 1)您接近浮点数范围的限制,或者 2)您想要比单个整数所能表示的更高的精度时,它可能会变得有点难看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)