7.1. Система прерываний

У микропроцессора есть два физических контакта для приема сигналов внешних прерываний – INTR и NMI. На вход INTR поступают сигналы от микросхем контроллера прерываний, который реализует приоритетную обработку прерываний, инициируемых подсоединенными к этому контроллеру внешними устройствами. Внешние прерывания поступают от таймера, клавиатуры, гибких и жестких дисков, сопроцессора, последовательных и параллельных портов, через микросхемы контроллера прерываний. Вход NMI используется для сообщения микропроцессору о некотором событии, требующем безотлагательной обработки. Например, «ошибка сопроцессора» или «напряжение в сети понизилось».

Внутренние прерывания возникают внутри микропроцессора во время вычислительного процесса. Их можно разделить на два класса

· программные прерывания – это прерывания инициируемые командой

     int xxh

где xxh – номер прерывания, состоящий из двух шестнадцатеричных цифр;

· обработка исключительных ситуаций, возникающих при выполнении команд: деление на ноль, некорректная команда и т.д.

Внешние  прерывания, приходящие по входу INTR, называются маскируемыми. Эти прерывания могут быть запрещены командой CLI, очищающей флаг IF регистра флагов. В этом случае подпрограммы обработки внешних прерываний не вызываются.

Чтобы вновь разрешить эти прерывания, следует установить IF=1, например, с помощью команды STI.

Внешние прерывания NMI и внутренние прерывания обрабатываются микропроцессором независимо от значения флага IF.

Если установить флаг TF равным 1, то после выполнения каждой команды вызывается подпрограмма обработки прерывания номер 1. Такой режим работы называется пошаговым, а флаг TF – флагом трассировки. Прерывание номер 1, генерируемое в этом случае микропроцессором после каждой команды, является внутренним. Если TF=0, то прерывание номер 1 не генерируется, и команды выполняются обычным образом.