Мне нужны некоторые ресурсы, чтобы узнать больше о числах с плавающей запятой, мне нужно кодировать операции сложения и вычитания для таких чисел в emu8086 среда ....
Любая помощь высоко ценится
Мне нужны некоторые ресурсы, чтобы узнать больше о числах с плавающей запятой, мне нужно кодировать операции сложения и вычитания для таких чисел в emu8086 среда ....
Любая помощь высоко ценится
Насколько я могу судить, emu8086 не эмулирует машину с FPU 8087.
Любые операции с плавающей запятой должны быть чисто программными, без использования fld
/ fadd
/ fstp
или каких-либо обычных устаревших1 инструкции x87.
Если вы хотите использовать инструкции FP в реальном режиме, лучше всего использовать эмулятор, такой как DOSBox или BOCHS, который эмулирует более новый x86 + x87, а не emu8086. Это также имеет то преимущество, что позволяет вам использовать более удобные инструкции, такие как imul ax, 1234
, вместо того, чтобы использовать 1-операнд mul
.
Если вы застряли с emu8086 (или настоящим микроконтроллером 8086), большинство проблем можно решить с помощью fixed- точка, а не с плавающей запятой: рассматривайте фиксированное количество битов как дробную часть. Это проще сделать в программном обеспечении с целочисленными инструкциями. Но он по-прежнему позволяет вам представлять такие числа, как 1.25
.
Сноска 1: В современных x86 x87 FPU устарел; теперь мы используем SSE и SSE2 для скалярной и SIMD FP-математики, если на самом деле не требуется 80-битная точность. emu8086, конечно, тоже не имеет этого. Современные процессоры x86, конечно, по-прежнему поддерживают инструкции x87; обратная совместимость с существующими двоичными файлами является основной причиной существования x86.
Вы можете реализовать сложение и вычитание для чисел с плавающей запятой, если сохраните каждое число в массиве размера 2.
Первый блок массива может быть базовым числом, а второй — десятичным числом (конечно, реализованным как обычное целое число).
Возможно, это не самый эффективный способ, но вполне возможный. Ваш алгоритм должен будет учитывать способ хранения чисел, а затем выполнять инструкции ADD и SUB.
Вы сказали, что вам не нужен код, поэтому я не буду публиковать пример, но, надеюсь, это даст вам представление о том, как вы можете сделать это на процессоре, у которого нет модуля с плавающей запятой.
Процессор 8086 не имеет модуля с плавающей запятой. Был сопроцессор с плавающей запятой под названием 8087, который предназначался для использования с 8086.
Вы можете увидеть набор инструкций для оригинального 8087 здесь: http://en.wikipedia.org/wiki/X86_instruction_listings#x87_floating-point_instructions