Прерывание — это метод создания временной остановки во время выполнения программы и позволяет периферийным устройствам получать доступ к микропроцессору. Микропроцессор отвечает на это прерывание ISR (подпрограммой обработки прерываний), которая представляет собой короткую программу для инструктирования микропроцессора о том, как обрабатывать прерывание.
На следующем рисунке показаны типы прерываний, которые мы имеем в микропроцессоре 8086 —
Аппаратные прерывания
Аппаратное прерывание вызывается любым периферийным устройством, посылая сигнал через указанный контакт в микропроцессор.
8086 имеет два вывода аппаратного прерывания, то есть NMI и INTR. NMI является немаскируемым прерыванием, а INTR является маскируемым прерыванием, имеющим более низкий приоритет. Еще один связанный контакт прерывания — это INTA, называемый подтверждением прерывания.
NMI
Это один немаскируемый вывод прерывания (NMI), имеющий более высокий приоритет, чем маскируемый вывод запроса прерывания (INTR), и он имеет прерывание типа 2.
Когда это прерывание активировано, происходят следующие действия:
-
Завершает текущую инструкцию, которая выполняется.
-
Помещает значения регистра флага в стек.
-
Выдвигает значение CS (сегмент кода) и значение IP (указатель инструкции) адреса возврата в стек.
-
IP загружается из содержимого слова местоположения 00008H.
-
CS загружается из содержимого следующего слова местоположения 0000AH.
-
Флаг прерывания и флаг прерывания сбрасываются в 0.
Завершает текущую инструкцию, которая выполняется.
Помещает значения регистра флага в стек.
Выдвигает значение CS (сегмент кода) и значение IP (указатель инструкции) адреса возврата в стек.
IP загружается из содержимого слова местоположения 00008H.
CS загружается из содержимого следующего слова местоположения 0000AH.
Флаг прерывания и флаг прерывания сбрасываются в 0.
ВВЕДЕНИ
INTR является маскируемым прерыванием, потому что микропроцессор будет прерываться только в том случае, если прерывания разрешены с использованием команды установки флага прерывания. Его не следует включать с помощью команды очистки флага прерывания.
Прерывание INTR активируется портом ввода / вывода. Если прерывание включено и NMI отключено, то микропроцессор сначала завершает текущее выполнение и дважды посылает «0» на вывод INTA. Первый «0» означает, что INTA информирует внешнее устройство о готовности, а во время второго «0» микропроцессор получает 8-битный, скажем, X, от программируемого контроллера прерываний.
Эти действия предпринимаются микропроцессором —
-
Сначала завершает текущую инструкцию.
-
Активирует выход INTA и получает тип прерывания, скажем, X.
-
Значение регистра флага, значение CS возвращаемого адреса и значение IP возвращаемого адреса помещаются в стек.
-
Значение IP загружается из содержимого слова местоположения X × 4
-
CS загружается из содержимого местоположения следующего слова.
-
Флаг прерывания и флаг прерывания сбрасываются на 0
Сначала завершает текущую инструкцию.
Активирует выход INTA и получает тип прерывания, скажем, X.
Значение регистра флага, значение CS возвращаемого адреса и значение IP возвращаемого адреса помещаются в стек.
Значение IP загружается из содержимого слова местоположения X × 4
CS загружается из содержимого местоположения следующего слова.
Флаг прерывания и флаг прерывания сбрасываются на 0
Программные прерывания
Некоторые инструкции вставляются в нужную позицию в программу для создания прерываний. Эти инструкции по прерыванию можно использовать для проверки работы различных обработчиков прерываний. Включает в себя —
INT- инструкция прерывания с номером типа
Это 2-байтовая инструкция. Первый байт предоставляет код операции, а второй байт — номер типа прерывания. В этой группе 256 типов прерываний.
Его выполнение включает в себя следующие этапы —
-
Значение регистра флага помещается в стек.
-
Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.
-
IP загружается из содержимого слова местоположения «номер типа» × 4
-
CS загружается из содержимого местоположения следующего слова.
-
Флаг прерывания и Флаг ловушки сбрасываются на 0
Значение регистра флага помещается в стек.
Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.
IP загружается из содержимого слова местоположения «номер типа» × 4
CS загружается из содержимого местоположения следующего слова.
Флаг прерывания и Флаг ловушки сбрасываются на 0
Начальный адрес для прерывания типа 0 — 000000H, для прерывания типа 1 — 00004H, аналогично для типа 2 — 00008H и так далее. Первые пять указателей являются выделенными указателями прерывания. то есть
-
Прерывание ТИПА 0 представляет деление на нулевую ситуацию.
-
Прерывание ТИПА 1 представляет одношаговое выполнение во время отладки программы.
-
Прерывание типа 2 представляет немаскируемое прерывание NMI.
-
Прерывание ТИПА 3 представляет прерывание точки останова.
-
Прерывание ТИПА 4 представляет прерывание переполнения.
Прерывание ТИПА 0 представляет деление на нулевую ситуацию.
Прерывание ТИПА 1 представляет одношаговое выполнение во время отладки программы.
Прерывание типа 2 представляет немаскируемое прерывание NMI.
Прерывание ТИПА 3 представляет прерывание точки останова.
Прерывание ТИПА 4 представляет прерывание переполнения.
Прерывания от типа 5 до типа 31 зарезервированы для других усовершенствованных микропроцессоров, а прерывания от 32 до типа 255 доступны для аппаратных и программных прерываний.
INT 3-точка прерывания Инструкция по прерыванию
Это однобайтовая инструкция с кодом операции CCH. Эти инструкции вставляются в программу таким образом, что, когда процессор достигает этого уровня, он останавливает нормальное выполнение программы и выполняет процедуру точки останова.
Его выполнение включает в себя следующие этапы —
-
Значение регистра флага помещается в стек.
-
Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.
-
IP загружается из содержимого слова местоположения 3 × 4 = 0000CH
-
CS загружается из содержимого местоположения следующего слова.
-
Флаг прерывания и Флаг ловушки сбрасываются на 0
Значение регистра флага помещается в стек.
Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.
IP загружается из содержимого слова местоположения 3 × 4 = 0000CH
CS загружается из содержимого местоположения следующего слова.
Флаг прерывания и Флаг ловушки сбрасываются на 0
INTO — прерывание по команде переполнения
Это однобайтовая инструкция и их мнемоническое INTO . Код операции для этой инструкции — CEH. Как следует из названия, это условная команда прерывания, то есть она активна, только когда флаг переполнения установлен в 1 и переходит к обработчику прерываний, чей номер типа прерывания равен 4. Если флаг переполнения сбрасывается, то выполнение продолжается до Следующая инструкция.
Его выполнение включает в себя следующие этапы —
Значения регистров флага помещаются в стек.
Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.
IP загружается из содержимого слова местоположения 4 × 4 = 00010H
CS загружается из содержимого местоположения следующего слова.
Флаг прерывания и флаг Trap сбрасываются на 0