Предыдущий раздел | УПРАВЛЕНИЕ УСТРОЙСТВАМИ С ПРЕРЫВАНИЯМИ | Следующий раздел |
Использование при выдаче внешних маскируемых прерываний контроллера прерываний требует уточнения алгоритма обработки прерываний, рассмотренного в п.19.1.4:
1) поступление сигнала прерывания в ЦП. Для этого должны быть выполнены действия:
- ИУ посылает сигнал прерывания в i8259A;
- если данный тип прерываний незамаскирован, i8259A выдает сигнал прерывания на вход INTR процессора;
2) собственно прерывание. Оно выполняется ЦП по окончанию выполнения текущей машинной команды и включает действия:
- ЦП возвращает в ИУ сигнал подтверждения;
- ИУ передает по ОШ в ЦП номер прерывания N;
- ЦП помещает текущее содержимое FLAGS, CS и IP в программный стек;
- в IP загружается слово ОП, имеющее адрес 4N, а в CS – 4N +2;
- ЦП запрещает маскируемые прерывания путем сброса в нуль флажка IF в регистре FLAGS;
3) начальный этап программной обработки прерывания. Он выполняется обработчиком прерываний и включает действия:
- разрешение маскируемых прерываний с помощью команды sti;
- сохранение в программном стеке содержимого тех регистров, с которыми будет работать программа обработчика;
- запись в сегментный регистр данных DS значения, которое соответствует адресу-сегменту данных обработчика прерываний;
4) действия обработчика прерываний, определяемые типом прерывания;
5) завершение обработки прерывания. Сюда относятся действия:
- запись обработчиком прерываний кода 20h в порт 20h;
- восстановление содержимого регистров, запомненного ранее в стеке;
- выполнение обработчика прерываний завершается командой iret, которая извлекает из стека прежнее содержимое IP, CS и FLAGS, тем самым, возвращая управление в прерванную программу.
Предыдущий раздел | В начало | Следующий раздел |