часть (исключая перечисленные ранее специальные численные значения), то при
его представлении в памяти появляется возможность считать первый разряд ве-
щественного числа единичным по умолчанию и учитывать
наличие только на
аппаратном уровне. Это дает возможность увеличить диапазон
чи-
сел, так как появляется лишний разряд, пригодный для представления мантиссы
числа. Но это справедливо только для короткого и длинного форматов веществен-
ных чисел. Расширенный формат как внутренний формат представления числа
любого типа в сопроцессоре содержит целую единичную часть вещественного
в явном виде.
Как определить вещественное число или зарезервировать место для его разме-
щения в программе на ассемблере?
Короткое вещественное число длиной в 32 разряда определяется директивой
DD. При этом обязательным в записи числа является наличие десятичной точки,
даже если оно не имеет дробной части. Для транслятора десятичная точка являет-
ся указанием, что число нужно представить в виде числа с плавающей точкой
в коротком формате (см. рис. 17.7). Это же касается длинного и расширенного фор-
матов представления вещественных чисел, определяемых директивами
и DT.
Другой способ задания вещественного числа директивами DD, DQ и DT — экспонен-
циальная форма с использованием символа «е>>. Вид вещественного числа в поле
операндов директив DD, DQ и
можно представить синтаксической диаграммой
(рис. 17.8).
d
цифра
Рис. 17.8. Синтаксис вещественных чисел в директивах DD, DQ и DT
Чтобы окончательно разобраться в тонкостях представления вещественных
чисел различных форматов в памяти, рассмотрим несколько примеров.
Определим в программе вещественное число 45,56 в коротком формате. Это
можно сделать тремя способами:
dd 45.56
dd
dd 0.4556e2
Форматы данных
В памяти это число будет выглядеть так:
42.
Учитывая, что в архитектуре Intel принят «перевернутый» порядок следова-
ния байтов в памяти в соответствии с принципом «младший байт по младшему
адресу», истинное представление числа 45,56 будет следующим:
71.
Двоичное представление в памяти числа 45,56 иллюстрирует рис. 17.9.
Знак
i
0100 0010 ООН ОНО ООН 1101 0111 0001
Характеристика 45.
.56
= 132
Позиция воображаемой точки
Рис.
Двоичное представление в памяти вещественного числа в директиве DD
Из рисунка видно, что старшая единица мантиссы при представлении в памяти
отсутствует.
Определим теперь в программе вещественное число 45,56 в длинном формате.
Это можно сделать двумя способами:
dq 45.56
dq
В памяти это число будет выглядеть так:
Перевернув его, получим истинное значение:
Разберите его по компонентам вещественного числа самостоятельно.
Наконец, определим в программе вещественное число 45,56 в расширенном
формате:
dt 45.56
В памяти это число будет выглядеть так:
Перевернув его, получим истинное значение в памяти:
Двоичное представление числа 45,56 полезно рассмотреть подробнее (рис.
Знак мантиссы
У
Характеристика А
i
= 5)
Позиция воображаемой точки
Рис.
Двоичное представление в памяти вещественного числа в директиве DT
462 Глава 17. Архитектура и программирование сопроцессора
0100 0000 0000 0100
0000 1010
ООН 1101 0111 0000 1010 11100001 0111 0001.
Данное число имеет следующее назначение битов:
• 0 — знак
100 0000 0000 0100 - характеристика q = 16 388;
01 — целая часть числа (45);
т 10
1101 0111 0000 1010
1101 0111 0000 1010 1110 0001 0111 0001 -
дробная часть числа (0,56).
Как видно, в мантиссе явно присутствует старшая единица, чего не было в ко-
ротком и длинном форматах представления вещественного числа.
Дальнейшее обсуждение требует четкого понимания того, каким образом из
дробного десятичного числа получается его расширенное вещественное представ-
ление. Рассмотрим этот процесс по шагам.
1. Переведем десятичную дробь 45,56 в двоичное представление. Подробно алго-
ритм такого перевода описан в главе 4. В результате получим эквивалентное
двоичное представление:
2. Нормализуем число. Для этого переносим точку влево до тех пор, пока в целой
части числа не останется одна двоичная единица. Число переносов влево (или
вправо, если десятичное число было меньше единицы) станет порядком числа.
Но будьте внимательны — в
характеристики заносится смещенное значе-
ние порядка (см. табл. 17.2). Таким образом, после перемещения точки получа-
ем значение порядка равное 5. Соответственно, характеристика будет выгля-
деть так:
383 - 16
=
Сформированный результат в виде вещественного числа в расширенном фор-
мате состоит из трех компонентов:
знака — 0;
характеристики — 100000000000100;
• мантиссы - 1011 01100011 1101 0111 0000
1101 0111 0000 1010 1110
Позже вы научитесь пользоваться отладчиком для работы с сопроцессором и по-
лучите возможность просматривать содержимое регистров стека (см. раздел «Ис-
пользование
При этом содержимое регистров стека будет изображать-
ся в шестнадцатеричном виде: 40 04
3d 70 аЗ d7 Оа 3d 71.
что это
представление полностью совпадает с приведенным ранее представлением числа
в памяти, если оно описано в директиве DT.
В качестве итога еще раз подчеркнем, что расширенный формат представления
вещественного числа является единственным форматом представления чисел в ре-
гистрах сопроцессора. Само преобразование производится автоматически при за-
грузке числа в стек сопроцессора. Исключение составляет расширенный формат.
Форматы данных 463
Do'stlaringiz bilan baham: |