На главную Назад
Добро пожаловать, уважаемый посетитель!

Ассемблер отдельно порождает поля данных дествительных чисел с

помощью четырех-, восьми- и десятибайтовых описаний.Короткому

действительному числу здесь соответствует оператор DD; длинному

действительному числу соответствует оператор DQ; а временному

действительному чисоу - оператор DT.

 

К сожалению, Макроассемблер фирмы IBM не обслуживает числа с

плавающей точкой процессора 8087.Если вы укажите действительное

число в качестве операнда оператора DD или DQ, то в качестве данных

получите запутанный набор нулей и единиц.Этот формат плавающих

чисел соответствует формату, используемому внутри интерпретатора

языка Бейсик, и не является форматом ИИЭР, используемым в

сопроцессоре 8087.Поэтому программа для сопроцессора 8087 должна

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

 

Существует два метода, которые можно использовать для

построения действительных чисел.Первый метод - ручное

ассемблирование.Вы выписываете действительное число в праивльном

формате с помощью бумаги и ручки.Эта операция содержит:

тщательный анализ числа, преобразование десятичного числа в

двоичную форму, разделение порядка и мантиссы, смещение порядка, и

наконец, преобразование результата в двоичную или шестнадцатеричную

систему.Это реальный метод, но он требует изрядного опыта и

огромных затрат времени программиста.Второй метод порожления

действительных чисел - косвенный метод, требующий большого

количества машинного времени, но гораздо меньших затрат времени

программиста.Здесь вы записываете действительное число в виде

произведения ил частного двух или более целых.Ассемблер может

непосредственно порождать целые числа с помощью команд DW, DD или

DQ.Сразу же после инициализации микросхемы 8087 программа может

построить необходимые ей действительные числа, выполняя необходимые

умножения и деления.Например, в программе нужна константа с

плавающей точкой 1.234*105.Сформировать такую константу в целом

представлении программист сможет легко, используя следующий оператор

DD 123400

 

Заметим, что число слишком велико для представления оператором

DW, но удовлетворяет ограничениям 32-битовых целых чисел.

 

Но предположим, что нужно построить число 1.234*10**-5, которое

очень мало.В этом случае в программе потребуется два целых числа:

одно целое число соответствует значению мантиссы, а другое

соответствует десяти в степени порядка.Можно воспользоваться

следующими определениями

 

DW1234

DD100000000

 

чтобы построить необходимое число.Программист делит дробную

часть числа 1234 на значение 10**8 и получает нужное число.

 

При использовании такого подхода возникают сложности в работе с

очень большими или малыми числами.Эти числа требуют представления

степеней десяти, которые по значению много больше любых

представимых целых чисел.Далее приводится пример, который строит

действительный формат каждой третьей степени десяти и может помочь

в таком случае.Отложим рассмотрение этой программы до тех пор,

пока не изучим необходимые для нее команды.С помощью таких

действителтных представлений степеней 10 записать числа от 1036 до

10-24 будет достаточно легко.Программа может разбить число на

целую часть и степень десяти, а умножение и деление дадут верное

значение.Микросхема 8087 также допускает и другие способы

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

целые числа и степени 10, наиболее просты, особенно для людей,

работающих с сопроцессором 8087 впервые.


 

Mail.ru