Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
I8086.DOC
Скачиваний:
50
Добавлен:
02.05.2014
Размер:
1.36 Mб
Скачать
    1. Обработка прерываний

      1. Таблица векторов прерываний

Как уже упоминалось, микропроцессор 8086 использует векторную систему прерываний, при которой каждому обработчику прерывания назначается свой номер, называемый вектором. Всего имеется 256 векторов прерываний.

Таблица векторов прерываний занимает младший 1 Кбайт физического адресного пространства микропроцессора. Каждому вектору в ней соответствует четырёхбайтовая область. Первое слово любого вектора прерывания содержит смещение, а второе слово – селектор сегмента обработчика прерывания, назначенного этому вектору. Таким образом, каждый вектор является дальним адресом (парой “сегмент : смещение”) соответствующего обработчика прерывания.

      1. Действия микропроцессора по обработке прерывания

Независимо от причины возникновения прерывания микропроцессор обрабатывает их одинаковым образом.

Закончив выполнение инструкции, в ходе которого возник запрос прерывания, микропроцессор сохраняет в стеке текущее содержимое регистра флагов и дальний адрес текущей (для прерывания по ошибке деления) или следующей команды (для всех остальных причин возникновения прерывания), т.е. записывает в стек сначала содержимое регистра флагов, затем содержимое регистра CS, а в конце – содержимое регистраIP. Затем в регистре флагов сбрасывается флажки разрешения прерыванияIFи трассировкиTF, чем обеспечивается блокировка возникновения новых маскируемых внешних прерываний и запрещаются пошаговые прерывания по выполнении каждой инструкции. Наконец, из таблицы векторов прерываний извлекается дальний адрес обработчика прерывания, и его компоненты загружаются в регистрыCSиIP, благодаря чему производится переход на обработку прерывания.

Следует обратить внимание на то, что, когда происходит немаскируемое прерывание, следующие немаскируемые прерывания блокируются аппаратурой микропроцессора до выполнения инструкции возврата из прерывания IRET. Маскируемые прерывания при этом также оказываются запрещены, но за счёт сброса флажкаIFв регистре флагов. Если этот флажок будет установлен, микропроцессор будет способен обрабатывать маскируемые прерывания, хотя останется заблокированным для немаскируемых прерываний.

      1. Приоритет прерываний

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

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

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

На третьем месте стоят маскируемые внешние прерывания. Поскольку выполнение прерывания приводит к сбросу флажка IFв регистре флагов, выполнение маскируемого прерывания откладывается до тех пор, пока флажокIFне будет вновь установлен.

Самый низкий приоритет имеет трассировочное прерывание.