Assembler - язык неограниченных возможностей


Обработка прерываний и исключений - часть 9


Исключение #PF — основное исключение для создания виртуальной памяти с использованием механизма страничной адресации.


INT 0Fh — зарезервировано


INT 10h — ошибка #MF «Ошибка сопроцессора»

Вызывается, только если бит NE в регистре CR0 установлен в 1 при выполнении любой команды FPU, кроме управляющих команд и WAIT/FWAIT, если в FPU произошло одно из исключений FPU (см. главу 2.4.3).


INT 11h — ошибка #АС «Ошибка выравнивания»

Вызывается, только если бит AM в регистре CR0 и флаг АС из EFLAGS установлены в 1, если CPL = 3 и произошло невыравненное обращение к памяти. (Выравнивание должно быть по границе слова при обращении к слову, к границе двойного слова, к двойному слову и т.д.)

Обработчик этого исключения получает код ошибки, равный нулю.


INT 12h — останов #МС «Машинно-зависимая ошибка»

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


INT 13h – 1Fh — зарезервировано Intel для будущих исключений


INT 20h – FFh — выделены для использования программами


Обычно для отладочных целей многие программы, работающие с защищенным режимом, устанавливают обработчики всех исключений, выдающие список регистров процессора и их содержимое, а также иногда участок кода, вызвавший исключение. В качестве примера обработчика исключения типа ошибки можно рассматривать пример программы, обрабатывающей #ВС (глава 5.8.1).





Начало  Назад  Вперед