Микропроцессор - 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