Описание процессора i8086 для программиста

         

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


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

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

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



Содержание раздела