Сборка 8086;Числа с плавающей точкой, сложение, вычитание - PullRequest
0 голосов
/ 28 ноября 2011

Мне нужны некоторые ресурсы, чтобы узнать больше о числах с плавающей запятой, мне нужно кодировать операции сложения и вычитания для таких чисел в среде emu8086 ....

Любая помощь очень ценится

Ответы [ 3 ]

1 голос
/ 28 ноября 2011

Вы можете реализовать сложение и вычитание для чисел с плавающей запятой, если вы храните каждое число в массиве размером 2.

Первый блок массива может быть базовым числом, а второй - десятичным числом.(реализовано как обычное целое число, конечно).

Возможно, это не самый эффективный способ, но он, безусловно, возможен.Ваш алгоритм должен учитывать способ хранения чисел, а затем выполнять инструкции ADD и SUB.

Вы сказали, что вам не нужен код, поэтому я не буду публиковать пример, но, надеюсь, это даст вам представление о том, как вы можете сделать это на процессоре, у которого нет модуля с плавающей запятой.

0 голосов
/ 12 июня 2019

Насколько я могу судить, emu8086 не эмулирует машину с 8087 FPU.

Любое значение с плавающей запятой, которое вы делаете, должно быть чисто программным, без использования fld / fadd / fstp или каких-либо обычных устаревших 1 x87 инструкций .

Если вы хотите использовать инструкции FP в реальном режиме, лучшим вариантом будет эмулятор, такой как DOSBox или BOCHS, который эмулирует более позднюю версию x86 + x87, а не emu8086. Это также имеет то преимущество, что позволяет вам использовать более удобные инструкции, такие как imul ax, 1234 вместо необходимости использовать 1-операнд mul.

Если вы застряли с emu8086 (или реальным микроконтроллером 8086), большинство проблем можно решить с помощью с фиксированной точкой , а не с плавающей запятой: обрабатывать фиксированное число бит как дробную часть. Это легче сделать в программном обеспечении с целочисленными инструкциями. Но это все еще позволяет вам представлять числа как 1.25.


Сноска 1: В современном x86 FPU x87 устарел; Теперь мы используем SSE и SSE2 для математических вычислений скалярных и SIMD FP, если в действительности не требуется точность 80 бит. emu8086, конечно, этого тоже не имеет. Современные процессоры x86, конечно, все еще поддерживают инструкции x87; обратная совместимость с существующими двоичными файлами является основной причиной того, что x86 все еще существует.

0 голосов
/ 28 ноября 2011

Процессор 8086 не имеет блока с плавающей запятой.Был сопроцессор с плавающей запятой под названием 8087, который предназначался для использования с 8086.

Вы можете увидеть набор инструкций для оригинального 8087 здесь: http://en.wikipedia.org/wiki/X86_instruction_listings#x87_floating-point_instructions

...