Предыдущий раздел УПРАВЛЕНИЕ УСТРОЙСТВАМИ С ПРЕРЫВАНИЯМИ Следующий раздел

21.2. Алгоритм обработки прерываний

Использование при выдаче внешних маскируемых прерываний контроллера прерываний требует уточнения алгоритма обработки прерываний, рассмотренного в п.19.1.4:

1) поступление сигнала прерывания в ЦП. Для этого должны быть выполнены действия:

- ИУ посылает сигнал прерывания в i8259A;

- если данный тип прерываний незамаскирован, i8259A выдает сигнал прерывания на вход INTR процессора;

2) собственно прерывание. Оно выполняется ЦП по окончанию выполнения текущей машинной команды и включает действия:

- ЦП возвращает в ИУ сигнал подтверждения;

- ИУ передает по ОШ в ЦП номер прерывания N;

- ЦП помещает текущее содержимое FLAGS, CS и IP в программный стек;

- в IP загружается слово ОП, имеющее адрес 4N, а в CS4N +2;

- ЦП запрещает маскируемые прерывания путем сброса в нуль флажка IF в регистре FLAGS;

3) начальный этап программной обработки прерывания. Он выполняется обработчиком прерываний и включает действия:

- разрешение маскируемых прерываний с помощью команды sti;

- сохранение в программном стеке содержимого тех регистров, с которыми будет работать программа обработчика;

- запись в сегментный регистр данных DS значения, которое соответствует адресу-сегменту данных обработчика прерываний;

4) действия обработчика прерываний, определяемые типом прерывания;

5) завершение обработки прерывания. Сюда относятся действия:

- запись обработчиком прерываний кода 20h в порт 20h;

- восстановление содержимого регистров, запомненного ранее в стеке;

- выполнение обработчика прерываний завершается командой iret, которая извлекает из стека прежнее содержимое IP, CS и FLAGS, тем самым, возвращая управление в прерванную программу.           

 


Предыдущий раздел В начало Следующий раздел