logo
несколько программ / bsp33

Обработка особых случаев

В арифметическом сопроцессоре имеются два механизма обработки ошибок, возникающих при выполнении различных команд.

Первый механизм основан на генерации так называемого прерывания особого случая (INT 10h). Это прерывание вырабатывается в том случае, когда происходит какая-нибудь ошибка (например, деление на нуль) при условии, что соответствующие биты масок особых случаев в регистре управления не установлены.

При втором способе обработки ошибок все особые случаи маскируются (соответствующие биты управляющего регистра устанавливаются в единицу) и в случае ошибки сопроцессор в качестве результата возвращает некоторое заранее известное особое значение (нечисло, неопределенность или бесконечность).

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

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

Рассмотрим возможные особые случаи сопроцессора в реальном режиме.