Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M5 / Прерывания и исключения.doc
Скачиваний:
24
Добавлен:
16.04.2013
Размер:
238.08 Кб
Скачать

Приоритеты событий, вызывающих прерывания

Прио­ритет

Описание

1

Аппаратный RESETи машинный контроль

  • внешний сигнал RESET#=0 (повторный запуск),

  • отказ типа #MC(машинный контроль)

2

Ловушка при переключении задач:

  • бит T=1 в сегментеTSS.

3

Внешние сигналы:

  • FLUSH#=0 (очистка кэш-памяти),

  • STOPCLK#=0 (перевод в энергосберегающий режим),

  • SMI#=0 (вход в системный режим),

  • INIT=1 (инициализация процессора).

4

Ловушки на предыдущей инструкции:

  • останов в контрольной точке,

  • исключение отладки (признак EFLRGS.TF=1), либо точка останова при выборке данных из памяти или вводе/выводе.

5

Внешние сигналы прерывания:

  • немаскируемое прерывание NMI=1,

  • маскируемое прерывание INTR=1.

6

Ошибки при выборке следующей инструкции:

  • контрольная точка при выборке инструкции,

  • нарушение границы сегмента инструкций,

  • отказ страницы при выборке инструкции (#PF).

7

Ошибки при декодировании следующей инструкции:

  • длина инструкции больше 15 байт,

  • недействительный код операции (#UD),

  • FPUнедоступен (#NM).

8

Ошибки при выполнении инструкции:

  • #OF(переполнение),

  • #BR(выход за границы массива),

  • #TS(недействительныйTSS),

  • #NP(отсутствие сегмента),

  • #SS(ошибка обращения к стеку),

  • #GP(нарушение общей защиты),

  • #PF(ошибка обращения к странице) при выборке данных,

  • #AC(ошибка выравнивания),

  • #MF(исключениеFPU),

  • #XF(исключениеXMM).

Отметим, что в этом приоритетном списке указан также ряд входных управляющих сигналов, назначение которых описано в разд. 9.5. При поступлении этих сигналов одновременно с другими событиями, вызывающими переход на обслуживание прерываний или исключений, процессор реагирует в соответствии с их приоритетами, приведенными в табл.$.2.

Обработка прерываний в реальном режиме

В реальном режиме для перехода к обслуживанию поступившего запроса прерывания или исключения процессор обращается к таблице векторов прерываний, которая должна располагаться в начальной области памяти, начиная с адреса 0...0h. Элементами таблицы являются вектора прерываний– 4-байтовые указатели входа в подпрограммы обслуживания различных типов прерываний, т.о. для обеспечения обслуживания всех 256 возможных видов прерываний, размер таблицы составляет 1024 байт. Формат вектора прерываний для реального режима показан на рис.$.1.

31

16

15

0

Селектор (CS)

Смещение(IP)

Рис. $.1. Формат вектора прерываний в реальном режиме

При возникновении прерывания процессор производит следующие действия:

  • Заносит текущее значение регистров CSиIPв стек.

  • Заносит текущее значение регистра FLAGSв стек.

  • Устанавливает значение признака IF=0 в регистреEFLAGS(запрещение прерываний).

  • Устанавливает значения признаков TF=RC=AC=0 в регистре EFLAGS.

  • Загружает в регистры CS,IPновое содержимое, заданное в выбранном векторе таблицы прерывании.

В реальном режиме процессор не заносит в стек код ошибки и использует только младшие 16 разрядные регистры IPиFLAGS(но не 32-разрядныеEIPиEFLAGS). Возврат из подпрограммы обслуживания прерывания выполняется с помощью инструкцииIRET, которая восстанавливает сохраненные в стеке содержимое регистровFLAGS,CSиIP. обеспечивая возвращение к выполнению прерванной программы.