Исключения и прерывания защищённого режима.

        Далее приводится полный список исключений и прерываний. В этой таблице применяются следующие обозначения:
Номер вектора - номер вектора прерывания, на которое отображено исключение.
Название - используется в документации Intel и состоит из заглавных букв английского названия исключения, например, #DE - Divide Error.
Error code - наличие dw-кода ошибки, который процессор добавляет в стек обработчика перед передачей ему управления.

Исключения и прерывания защищённого режима.
Номер вектора Название Описание Тип Error Code Источник исключения
0 #DE Ошибка деления Fault Нет Команды DIV и IDIV
1 #DB Отладка Fault/Trap Нет Любая команда или команда INT 1
2 - Прерывание NMI Прерывание Нет Немаскируемое внешнее прерывание
3 #BP Breakpoint Trap Нет Команда INT 3
4 #OF Переполнение Trap Нет Команда INTO
5 #BR Превышение границ Fault Нет Команда BOUND
6 #UD Недопустимая команда (Invalid Opcode) Fault Нет Недопустимая команда или команда UD21
7 #NM Устройство не доступно (No Math Coprocessor) Fault Нет Команды плавающей точки или команда WAIT/FWAIT
8 #DF Двойная ошибка Abort Да (Нуль) Любая команда
9 - Превышение сегмента сопроцессора (зарезервировано) Fault Нет Команды плавающей точки2
0Ah #TS Недопустимый TSS Fault Да Переключение задач или доступ к TSS
0Bh #NP Сегмент не присутствует Fault Да Загрузка сегментных регистров или доступ к сегментам
0Ch #SS Ошибка сегмента стека Fault Да Операции над стеком и загрузка в SS
0Dh #GP Общая защита Fault Да Любой доступ к памяти и прочие проверки защиты
0Eh #PF Страничное нарушение Fault Да Доступ к памяти
0Fh - Зарезервировано Intel-ом. Не использовать.   Нет  
10h #MF Ошибка плавающей точки в x87 FPU (Ошибка математики) Fault Нет Команда x87 FPU или команда WAIT/FWAIT
11h #AC Проверка выравнивания Fault Да (Нуль) Обращение к пямяти3
12h #MC Проверка оборудования Abort Нет Наличие кодов и их содержимое зависит от модели4
13h #XF Исключение плавающей точки SIMD Fault Нет Команды SSE и SSE25
14h-1Fh - Заререзвировано Intel-ом. Не использовать      
20h-FFh - Прерывания определяются пользователем Прерывание   Внешнее прерывание или команда INT n

Примечания:
1. Команда UD2 появилась в процессоре Pentium Pro.
2. Процессоры IA-32 после Intel386 не генерируют это исключение.
3. Это исключение появилось в процессоре Intel486.
4. Это исключение появилось в процессоре Pentium и развивается в процессорах семейства P6.
5. Это исключение появилось в процессоре Pentium III.

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

Вопросы? Замечания? Пишите: sasm@narod.ru

  Copyright © Александр Семенко.
TopList

Hosted by uCoz