←предыдущая следующая→
1 2
ВТОРОЙ СЕМЕСТР
СЕМИНАР N 3
ОРГАНИЗАЦИЯ СИСТЕМЫ ПРЕРЫВАНИЙ МИКРОПРОЦЕССОРА 8086
Микропроцессор 8086 имеет простую, но достаточно универсаль-
ную систему прерываний. Каждому прерыванию поставлен в соот-
ветствие код типа. Допускается обработка до 256 типов прерываний.
Прерывания могут инициироваться внешними устройствами и командами
программных прерываний. В некоторых случаях прерывания генерирует
сам микропроцессор.
Возможные источники прерываний:
Немаскируемое прерывание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іNMI
ЪДДДДДДДДДДї Ъ Д Д Д Д Д Д Д Д ДіД Д Д Д Д Д Д ї
ДДД>і і V МП 8086
ДДД>і і INT і ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДїі
Запросы ДДД>і ГДДДДДДДД>і Схемы прерываний і
от ДДД>іКонтроллері і АДДДВДДДДДВДДДДДВДДДДДВДДДДДДДЩі
уст- ДДД>іпрерыванийі і і і і
ройств ДДД>і і і ЪДДДБДДДї і ЪДДДБДДДї і і
ДДД>і і іКомандаі і іОшибка і і
ДДД>і і і і INT і і іделенияі і і
АДДДДДДДДДДЩ АДДДДДДДЩ і АДДДДДДДЩ і
і ЪДДДБДДДї ЪДДДДДБДДДДДї і
іКомандаі іОдношаговыйі
і і INT0 і і режим і і
АДДДДДДДЩ АДДДДДДДДДДДЩ
А Д Д Д Д Д Д Д Д Д Д Д Д Д Д Д Д Щ
Внешние прерывания
В микропроцессоре имеются два входа прерываний - маскируемо-
го прерывания INT и немаскируемого прерывания NMI.
На вход INT подается сигнал от программируемого контроллера
прерываний, который обрабатывает сигналы запросов прерываний от
периферийных устройств. Для программы контроллер прерываний выг-
лядит, как порт ввода-вывода, в котором фиксируется код типа
прерывания. Его основная функция заключается в восприятии сигна-
лов от периферийных устройств, определении запроса с максимальным
приоритетом и генерировании сигнала INT, если запрос имеет
больший приоритет, чем выполняемая микропроцессором программа.
Если установлен сигнал на линии INT и установлен в 1 флажок
разрешения прерывания IF, то после завершения выполнения текущей
команды происходит прерывание и процессор выполняет следующие
действия:
1) выдает контроллеру прерывания подтверждение прерывания;
2) считывает из контроллера прерывания код типа прерывания;
3) заносит в стек содержимое регистра флагов;
4) заносит в стек содержимое регистров IP и CS;
5) вызывает и выполняет процедуру прерывания;
6) извлекает из стека содержимое CS и IP;
7) извлекает из стека содержимое регистра флагов;
8) возвращается к выполнению следующей команды прерванной прог-
раммы.
Линия немаскируемого прерывания NMI используется для сигна-
лизации о катастрофических событиях в системе. Немаскированные
- 2 -
прерывания имеют фиксированный код 2. Немаскированное прерывание
выполняется быстрее маскированного, так как не требует подтверж-
дения и считывания типа.
Если установлен сигнал на линии NMI, то после завершения
выполнения текущей команды происходит прерывание и процессор
выполняет следующие действия:
1) заносит в стек содержимое регистра флагов;
2) заносит в стек содержимое регистра IP и CS, запоминая тем
самым точку возврата из процедуры прерывания;
3) вызывает и выполняет процедуру прерывания;
4) извлекает из стека содержимое CS и IP;
5) извлекает из стека содержимое регистра флагов;
6) возвращается к выполнению следующей команды.
Наибольшее время запаздывания реакции на внешние прерывания
получается при выполнении команд умножения, деления и многобитно-
го сдвига.
Внутренние прерывания
В процессоре 8086 предусмотрено несколько внутренних преры-
ваний, генерируемых при выполнении программы. Команда INT n
вызывает прерывание сразу после своего завершения. Тип прерывания
n, закодированный программистом в команде, определяет вызываемую
процедуру прерывания. Следовательно, эту команду можно использо-
вать для отладки процедур прерываний, обслуживающих периферийные
устройства.
Команда INTO генерирует прерывание типа 4 после своего
завершения, если установлен флаг переполнения OF.
Процессор самостоятельно генерирует прерывание типа 0 сразу
после выполнения команд деления DIV и IDIV, если имело место
деление на 0.
Если установлен флаг пошаговой работы TF, процессор автома-
тически генерирует прерывание типа 1 после выполнения каждой
команды. Пошаговый режим предназначен для отладки программ.
Внутренние прерывания характеризуются следующими свойствами:
1) Тип прерывания либо предопределен, либо содержится в коде
команды.
2) Подтверждение прерывания не выдается.
3) Внутренние прерывания нельзя запретить, кроме прерываний
пошаговой работы.
4) Любое внутреннее прерывание (за исключением прерывания поша-
говой работы) имеет более высокий приоритет, чем внешние прерыва-
ния. Если запрос NMI или INT появляется при выполнении команды,
которая сама генерирует внутреннее прерывание (например, ошибка
деления), оно обрабатывается первым.
По командам внутреннего прерывания процессор выполняет
следующие действия:
1) заносит в стек содержимое регистра флагов;
2) заносит в стек содержимое регистра IP и CS;
3) вызывает и выполняет процедуру прерывания;
4) извлекает из стека содержимое CS и IP;
5) извлекает из стека содержимое регистра флагов;
6) возвращается к выполнению следующей команды.
Приоритеты прерываний в порядке их убывания:
1) прерывание из-за ошибки деления;
2) программное прерывание, инициируемое командой INT;
3) команда прерывания при переполнении;
- 3 -
4) немаскируемое прерывание NMI;
5) маскируемое прерывание INT;
6) прерывание пошаговой работы.
Таблица указателей векторов прерываний
Таблица указателей векторов прерываний осуществляет связь
между кодом типа прерывания и процедурой, которая обслуживает
прерывание данного типа. Таблица занимает 1 Кбайт памяти с диапа-
зоном адресов 0 - 3FF и может содержать до 256 элементов. Каждый
элемент i таблицы представляет собой полный начальный логический
адрес процедуры, которая обслуживает прерывание типа
←предыдущая следующая→
1 2
|
|