43. Форматы данных сопроцесcора

Сопроцессор расширяет номенклатуру форматов данных, с которыми работает основной процессор.

Форматы данных, с которыми работает сопроцессор:

двоичные целые числа в трех форматах — 16, 32 и 64 бита;

Целые числа

В программе целые двоичные числа описываются обычным способом — с использованием директив DW, DD и DQ.

упакованные целые десятичные (BCD) числа — длина максимального числа составляет 18 упакованных десятичных цифр (9 байтов);

упакованные целые десятичные (BCD) числа

Сопроцессор поддерживает один формат упакованных целых десятичных чисел, или BCD-чисел. Из-за того что максимальная длина упакованного десятичного числа в сопроцессоре составляет только 9 байт, в регистры RO…R7 можно поместить только 18 упакованных десятичных цифр. Старший десятый байт игнорируется. Самый старший бит этого байта используется для хранения знака числа.

Упакованные десятичные числа также представляются в стеке сопроцессора в расширенном формате. Упакованные десятичные числа в программе описываются директивой DT. Например, целое число 5 365 904 в формате упакованного десятичного числа может быть описано следующим образом: ch_dt dt 5365904 представление в памяти: ch_dt=04 59 36 05 00 00 00 00 00 00. Нужно отметить, что в сопроцессоре имеются всего две команды для работы с упакованными десятичными числами — это команды сохранения и загрузки.

вещественные числа

(знак)(мантиса)10^E(знак порядка)(порядок)

Если целая часть мантисы состоит из одной не равной нулю цифры, то число с плавающей точкой называется нормализованным; в двоичном представлении число с плавающей точкой называют нормализованным, если целая часть мантисы = 1.

Основной тип данных, с которыми работает сопроцессор, — вещественный. Данные этого типа описываются тремя форматами: коротким, длинным и расширенным

Вещественные числа

Хранятся в прямом коде. В коротком и длинном формате мантиса не содержит единицу нормализованного вещественного двоичного числа – ее надо добавить, в расширенном – мантиса хранится полностью.

q-характеристика – это число степень числа два, на которое умножается мантиса + фиксированное смещение. Пример  q = 01111111 = 127d, p = 127 – 127 = 0


Кроме этих основных форматов, сопроцессор поддерживает специальные численные значения – специальные комбинации бит, для отображения чисел, которые не являются вещественными  к которым относятся:

денормализованные вещественные числа — это числа, меньшие минимального нормализованного числа для каждого вещественного формата, поддерживаемого сопроцессором;

Денормализованные вещественные числа

Нуль (+0 и -0);

Значение нуля

положительные и отрицательные значения бесконечности;

Значение бесконечности

Нечисла;

Битовые последовательности в регистре стека сопроцессора, которые не совпадают ни с одним из форматов значений.

SNAN (Signaling Non a Number) — сигнальные нечисла;

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

QNAN (Quiet Non A Number) — спокойные (тихие) нечисла.

Нечисла

а – SNAN, б – QNAN, в – неопределенность.

17.07.2015