При возникновении числового исключения процессор i486 предпринимает одно из двух возможных действий:
- Модуль обработки операций с плавающей точкой может сам обработать исключение, производя наиболее разумный результат и не мешая при этом выполнению вычислительной программы.
- Может быть вызван программный обработчик исключений для того, чтобы обработать это исключение.
Каждое из приведенных выше шести условий исключений имеет соответствующий бит флага в слове состояния модуля обработки операций с плавающей точкой и бит маски в управляющем слове модуля обработки операций с плавающей точкой. Если исключение маскировано (соответствующий бит маски в управляющем слове = 1), то процессор i486 выполняет некоторые действия по умолчанию и продолжает вычисления. Если исключение не маскировано (маска = 0), то немедленно вызывается программный обработчик исключений перед тем, как выполнить следующую команду WAIT или команду с плавающей точкой, не принадлежащую к классу управляющих. В зависимости от значения бита NE управляющего регистра CR0, обработчик исключений вызывается либо через вектор прерывания 16 (NE = 1), либо через внешнее прерывание (NE = 0).
Обратите внимание, что если исключения маскированы, то модуль обработки операций с плавающей точкой может обнаружить множество исключений в единственной команде, так как он продолжает выполнение команды после обработки маскированного ответа. Например, модуль обработки операций с плавающей точкой мог бы обнаружить денормализованный операнд, обработать маскированный ответ на это исключение и затем выявить отрицательное перепольнение.