Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
379727.doc
Скачиваний:
36
Добавлен:
22.09.2019
Размер:
1.92 Mб
Скачать

11. Машинный формат с плавающей точкой (Float Point Representation). Параметры форматов сопроцессора intel (fpu 80x87).

Типы с плавающей точкой

Типы значений с плавающей точкой Real, Single, Double, Extended и Comp (вещественный, с одинарной точностью, с двойной точностью, с повышенной точностью и сложный) хранятся в виде двоичного представления знака (+ или -), показателя степени и значащей части числа. Представляемое число имеет значение:

+/- значащая часть Х 2^показатель степени, где значащая часть числа представляет собой отдельный бит слева от двоичной десятичной точки (то есть 0 <= значащая часть <= 2).

В следующей далее схеме слева расположены старшие значащие биты, а справа - младшие значащие биты. Самое левое значение хранится в самых старших адресах. Например, для значения вещественного типа e сохраняется в первом байте, f - в следующих пяти байтах, а s - в старшем значащем бите последнего байта.

Вещественный тип

Шестибайтовое (48-битовое) вещественное число (Real) подраз-

деляется на три поля:

1 39 8

+---+------..-------+--------+

| s | f | e |

+---+------..-------+--------+

msb lsb msb lsb

Вещественный тип не может использоваться для хранения ненормализованных чисел, значений, не являющихся числом (NaN), а также бесконечно малых и бесконечно больших значений. Ненормализованное число при сохранении его в виде вещественного принимает нулевое значение, а не числа, бесконечно малые и бесконечно большие зна-чения при попытке использовать для их записи формат вещественного числа приводят к ошибке переполнения.

Здесь и далее msb означает более значащий бит (старшие разряды), lsb - менее значащий (младшие разряды).

Тип числа с одинарной точностью

Четырехбайтовое (32-битовое) число типа Single подразделяется на три поля:

1 8 23

+---+------+-------..---------+

| s | e | f |

+---+------+-------..---------+

msb lsb msb lsb

Тип числа с двойной точностью

Восьмибайтовое (64-битовое) число типа Double подразделяется на три поля:

1 11 52

+---+------+-------..--------+

| s | e | f |

+---+------+-------..--------+

msb lsb msb lsb

Тип числа с повышенной точностью

Десятибайтовое (80-битовое) число типа Extended подразделя-

ется на четыре поля:

1 15 1 63

+---+--------+---+--------..-------+

| s | e | i | f |

+---+--------+---+--------..-------+

msb lsb msb lsb

Сложный тип

Восьмибайтовое (64-битовое) число сложного типа (Comp) подразделяется на два поля:

1 63

+---+-----------..--------------+

| s | d |

+---+-----------..--------------+

msb lsb

в противном случае переменная представляет собой 64-битовое значение, являющееся дополнением до двух.

Процессор числовых данных 8087, называемый также арифметическим (математическим) сопроцессором130 или устройством с плавающей точкой, специально разработан для эффективного выполнения арифметических операций.

Он может работать с двоичными и десятичными целыми, а также вещественными числами, длина которых составляет 2 – 10 байт.

К восьми регистрам данных сопроцессора можно обращаться или как к стеку, из которого можно извлечь или включить операнд, или пользуясь индексированием относительно указателя стека, или произвольным образом. При относительной стековой адресации, когда требуемый регистр выбирается индексированием относительно указателя стека, регистры располагаются как бы по окружности, причем регистр 7 следует за регистром 0. Так как все числа внутри процессора 8087 хранятся во временном вещественном формате, каждый регистр имеет длину 80 бит. С каждым регистром данных ассоциирован 16-битный регистр признака (тэга), который показывает, является содержимое регистра данных действительным, нулевым, специальным значением или пустым.

Процессор 8087 распознает шесть типов ошибок, причём каждый тип можно индивидуально замаскировать от генерирования прерывания установкой соответствующих битов в 16-битном регистре управления. Если ошибка замаскирована, она не вызывает прерывания, а процессор 8087 реализует стандартную реакцию и переходит к следующей команде. Стандартными реакциями являются:

-для недействительной операции – возвращение «не-числа», если один из операндов – «не-число», и неопределённости в других случаях;

-для ненормализованности операнда – продолжение операции над этим числом;

-для деления на нуль и переполнения порядка – возвращение бесконечности с правильным знаком;

-для антипереполнения – денормализация результата;

-для ошибки точности – округление результата.

Как правило, ошибку точности следует замаскировать в арифметике с плавающей точкой, так как в большинстве применений ошибки точности возникают очень часто.

Процессор 8087 содержит около 75000 транзисторов на кристалле размером 5,5x5,5 мм; его напряжение питания составляет +5 В, а потребляемая мощность – около 2 Вт. Так же, как и процессоры 8086/8088, сопроцессор 8087 выпускается в 40-контактном корпусе с двухрядным расположением контактов.

Процессор 8087 имеет 68 команд, которые по выполняемым им функциям можно разделить на шесть групп: 15 команд управления процессором, 9 – передачи данных, 7 – сравнения, 7 – операций с константами, 25 – арифметических и 5 – трансцендентных.

Все команды арифметического сопроцессора начинаются с буквы F. Далее, для удобства программиста все команды работы с целыми двоичными числами начинаются с комбинации FI, а с упакованными двоично-десятичными – с комбинации FB. От генерации ассемблером команды ожидания можно отказаться, явно указав в команде сопроцессора префикс FN вместо F.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]