Учебники

Микропроцессор — 8086 прерываний

Прерывание — это метод создания временной остановки во время выполнения программы и позволяет периферийным устройствам получать доступ к микропроцессору. Микропроцессор отвечает на это прерывание 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