Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метода_Организация_ЭВМ.DOC
Скачиваний:
34
Добавлен:
11.06.2015
Размер:
598.02 Кб
Скачать

2.3. Исключения fpu

При выполнении команд FPU могут возникать шесть типов особых ситуаций, называемых исключениями. При возникновении исключения соответствующий флаг в регистре SR устанавливается в 1 и, если маска этого исключения в регистре CR не установлена, вызывается обычное прерывание INT 10h (если бит NE в регистре центрального а CR0 установлен в 1) или IRQ13 (INT 75h), обработчик которого может прочитать регистр SR, чтобы определить тип исключения (и FIP, и FDP) и команду, которая его вызвала, а затем попытаться исправить ситуацию. Если бит маски наступившего исключения в регистре CR установлен в 1, выполняются следующие действия по умолчанию

  • неточный результатрезультат округляется в соответствии с битами RC (на самом деле это исключение происходит очень часто. Например дробь 1/6 не может быть представлена точно десятичным вещественным числом любой точности и округляется). При этом флаг С1 показывает, в какую сторону произошло округление 0 – вниз, 1 – вверх;

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

  • переполнениерезультат преобразуется в бесконечность соответствующего знака;

  • деление на нольрезультат преобразуется в бесконечность соответствующего знака (учитывается и знак нуля);

  • денормализованный операндвычисление продолжается, как обычно;

  • недействительная операциярезультат определяется из таблицы 12.

Таблица 12. Результаты операций, приводящих к исключениям

Операция

Результат

Ошибка стека

Неопределенность

Операция с неподдерживаемым числом

Неопределенность

Операция с SNAN

QNAN

Сравнение числа с NAN

C0 = C2 = C3 = 1

Сложение бесконечностей с одним знаком или вычитание – с разным

Неопределенность

Умножение нуля на бесконечность

Неопределенность

Деление бесконечности на бесконечность или 0/0

Неопределенность

Команды FPREM и FPREM1, если делитель – 0 или делимое – бесконечность

Неопределенность и C2 = 0

Тригонометрическая операция над бесконечностью

Неопределенность и C2 = 0

Корень или логарифм, если x < 0, log(x+1), если x < -1

Неопределенность

FBSTP, если регистр-SRS пуст, содержит NAN, бесконечность или превышает 18 десятичных знаков

Десятичная неопределенность

FXCH, если один из операндов пуст

Неопределенность

3. Система команд

В таблице П1. приложения 1 приведено описание команд процессора 8086. Заметим, что остальные процессоры семейства 80х86 совместимы с 8086 программно, поэтому приведенный набор команд можно считать базовым для любого из процессоров семейства.Каждая запись таблице содержит информацию о том, какие признаки из регистра FLAGS процессора 8088 и как изменяются, при этом приняты следующие обозначения признаков: ? – неопределен после операции; * – изменился в зависимости от результатов выполнения команды; 0 - всегда сброшен; 1 - всегда установлен.

Указание регистра в круглых скобках означает ссылку на ячейку памяти, определяемую содержимым регистра.

В таблице П2 приложения 2 приведено описание команд арифметического сопроцессора. Каждая запись в таблице содержит указание на тип процессора, в котором реализована данная команда.