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

Interruptэто метод создания временной остановки во время выполнения программы, позволяющий периферийным устройствам получить доступ к микропроцессору. Микропроцессор реагирует на это прерывание сигналомISR (Interrupt Service Routine), которая представляет собой короткую программу, инструктирующую микропроцессор о том, как обрабатывать прерывание.

На следующем изображении показаны типы прерываний, которые есть в микропроцессоре 8086.

Аппаратные прерывания

Аппаратное прерывание вызывается любым периферийным устройством, отправляя сигнал через указанный вывод на микропроцессор.

8086 имеет два контакта аппаратного прерывания, то есть NMI и INTR. NMI - немаскируемое прерывание, а INTR - маскируемое прерывание с более низким приоритетом. Еще один связанный вывод прерывания - это INTA, называемый подтверждением прерывания.

НМИ

Это единственный вывод немаскируемого прерывания (NMI) с более высоким приоритетом, чем вывод запроса маскируемого прерывания (INTR), и это прерывание типа 2.

Когда это прерывание активируется, происходят следующие действия:

  • Завершает текущую инструкцию, которая выполняется.

  • Помещает значения регистра флага в стек.

  • Помещает значение CS (сегмент кода) и значение IP (указатель инструкции) адреса возврата в стек.

  • IP загружается из содержимого слова по адресу 00008H.

  • CS загружается из содержимого следующей позиции слова 0000AH.

  • Флаг прерывания и флаг прерывания сбрасываются в 0.

INTR

INTR - это маскируемое прерывание, потому что микропроцессор будет прерван только в том случае, если прерывания разрешены с помощью команды установки флага прерывания. Его не следует включать с помощью инструкции сброса флага прерывания.

Прерывание INTR активируется портом ввода-вывода. Если прерывание разрешено, а NMI отключен, микропроцессор сначала завершает текущее выполнение и дважды отправляет «0» на вывод INTA. Первый «0» означает, что INTA информирует внешнее устройство о готовности, а во время второго «0» микропроцессор получает 8 бит, скажем X, от программируемого контроллера прерываний.

Эти действия выполняет микропроцессор -

  • Сначала завершает текущую инструкцию.

  • Активирует выход INTA и принимает тип прерывания, скажем X.

  • Значение регистра флага, значение CS адреса возврата и значение IP адреса возврата помещаются в стек.

  • Значение IP загружается из содержимого местоположения слова X × 4

  • CS загружается из содержимого следующего слова.

  • Флаг прерывания и флаг прерывания сбрасываются на 0

Программные прерывания

Некоторые инструкции вставляются в желаемую позицию в программу для создания прерываний. Эти инструкции прерывания можно использовать для проверки работы различных обработчиков прерываний. Он включает -

INT - инструкция прерывания с номером типа

Это 2-байтовая инструкция. Первый байт обеспечивает код операции, а второй байт предоставляет номер типа прерывания. В этой группе 256 типов прерываний.

Его выполнение включает в себя следующие шаги -

  • Значение регистра флага помещается в стек.

  • Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.

  • IP загружается из содержимого слова location 'type number' × 4

  • CS загружается из содержимого следующего слова.

  • Флаг прерывания и флаг ловушки сбрасываются на 0

Начальный адрес для прерывания type0 - 000000H, для прерывания type1 - 00004H, аналогично для type2 - 00008H и …… и так далее. Первые пять указателей - это выделенные указатели прерываний. т.е. -

  • TYPE 0 прерывание представляет собой деление на нулевое положение.

  • TYPE 1 прерывание представляет собой пошаговое выполнение во время отладки программы.

  • TYPE 2 прерывание представляет собой немаскируемое прерывание NMI.

  • TYPE 3 прерывание представляет собой прерывание от точки останова.

  • TYPE 4 прерывание представляет собой прерывание переполнения.

Прерывания от Типа 5 до Типа 31 зарезервированы для других усовершенствованных микропроцессоров, а прерывания с 32 по Тип 255 доступны для аппаратных и программных прерываний.

Инструкция прерывания INT 3-Break Point

Это 1-байтовая инструкция с операционным кодом CCH. Эти инструкции вставляются в программу, так что когда процессор достигает их, он останавливает нормальное выполнение программы и следует процедуре точки останова.

Его выполнение включает в себя следующие шаги -

  • Значение регистра флага помещается в стек.

  • Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.

  • IP загружается из содержимого места слова 3 × 4 = 0000CH

  • CS загружается из содержимого следующего слова.

  • Флаг прерывания и флаг ловушки сбрасываются на 0

INTO - прерывание при переполнении инструкции

Это 1-байтовая инструкция и их мнемоника INTO. Код операции для этой инструкции - CEH. Как следует из названия, это условная инструкция прерывания, т. Е. Она активна только тогда, когда флаг переполнения установлен в 1 и переходит к обработчику прерывания, номер типа прерывания которого равен 4. Если флаг переполнения сброшен, выполнение продолжается до следующая инструкция.

Его выполнение включает в себя следующие шаги -

  • Значения флаговых регистров помещаются в стек.

  • Значение CS адреса возврата и значение IP адреса возврата помещаются в стек.

  • IP загружается из содержимого позиции слова 4 × 4 = 00010H

  • CS загружается из содержимого следующего слова.

  • Флаг прерывания и флаг ловушки сбрасываются на 0