大会8086;浮点数,加,减

时间:2011-11-27 22:55:31

标签: assembly x86-16

我需要一些资源来了解有关浮点数的更多信息,我需要在emu8086环境中对这类数字进行加法和减法操作....

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

如果将每个数字存储在大小为2的数组中,则可以实现浮点数的加法和减法。

数组的第一个块可以是基数,第二个是十进制数(当然是作为常规整数实现)。

这可能不是最有效的方式,但肯定是可能的。您的算法必须考虑数字的存储方式,然后执行ADD和SUB指令。

你说你不想要代码所以我不会发布一个例子,但希望这能让你知道如何在没有浮点单元的处理器上做到这一点。

答案 1 :(得分:0)

8086处理器没有浮点单元。有一个名为8087的浮点协处理器,它意味着与8086一起使用。

您可以在此处查看原始8087的指令集:http://en.wikipedia.org/wiki/X86_instruction_listings#x87_floating-point_instructions

答案 2 :(得分:0)

据我所知,emu8086不会仿真具有8087 FPU的计算机。

您要做的任何浮点运算都必须是纯软件,而不是使用fld / fadd / fstp或任何通常的传统 1 {{ 3}}。

如果要在实模式下使用FP指令,最好的选择是DOSBox或BOCHS之类的仿真器,它仿真更新的x86 + x87,而不是emu8086。这样的好处还在于,您可以使用更方便的指令,例如imul ax, 1234,而不必使用1-运算符mul

如果您不喜欢emu8086(或真正的8086微控制器),则大多数问题可以使用x87 instructions来解决,而不是浮点数:将固定位数作为小数部分。使用带整数指令的软件更容易做到这一点。但是它仍然可以让您表示诸如1.25之类的数字。


脚注1:在现代x86中,x87 FPU已过时;我们现在将SSE和SSE2用于标量和SIMD FP数学运算,除非实际需要80位精度。 emu8086当然也没有。当然,现代x86 CPU仍支持x87指令。向后兼容现有二进制文件是x86仍然存在的主要原因。