1

我需要一些资源来了解更多关于浮点数的信息,我需要在emu8086环境中为这类数字编写加法和减法运算......

任何帮助深表感谢

4

3 回答 3

1

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

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

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

您说您不需要代码,所以我不会发布示例,但希望这能让您了解如何在没有浮点单元的处理器上执行此操作。

于 2011-11-27T23:28:12.320 回答
1

据我所知,emu8086不能模拟具有 8087 FPU 的机器。

您所做的任何浮点都必须是纯软件,而不是使用fld//faddfstp任何通常的遗留1 x87 指令

如果您想在实模式下使用 FP 指令,最好的选择是模拟 DOSBox 或 BOCHS 之类的模拟器,它们模拟更新的 x86 + x87,而不是 emu8086。这还具有让您使用更方便的指令的优点,例如imul ax, 1234,而不必使用 1-operand mul

如果您坚持使用 emu8086(或真正的 8086 微控制器),大多数问题都可以用fixed-point解决,而不是实际的 floating point:将固定数量的位视为小数部分。这在带有整数指令的软件中更容易做到。但它仍然可以让您表示数字,例如1.25.


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

于 2019-06-12T14:35:30.027 回答
0

8086 处理器没有浮点单元。有一个称为 8087 的浮点协处理器,它是用来与 8086 一起使用的。

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

于 2011-11-27T23:03:46.130 回答