Архитектура ЭВМ и систем. Коваль А.С - 71 стр.

UptoLike

Составители: 

71
му прерыванию назначен четырехбайтный вектор с номером в диапазоне
0h - FFh. Векторы определяют адреса подпрограмм обслуживания преры-
вания (ISR, Interrupt Service Routine) и размещаются в младшем килобайте
адресного пространства памяти в виде IP:CS (сегмент_ISR:смещение_ISR,
смещение записывается по младшему адресу).
Внешние прерывания вызываются сигналами на входах (см. Рис. 2.13)
запроса немаскируемого прерывания процессора (NMI) и маскируемого
прерывания (INTR). Маскируемые
прерывания игнорируются, если очи-
щен флаг I (Рис. 2.5).
немаски
ру
емое п
р
е
р
ывание
процессор
IRQ0
IRQ1
контроллер
прерываний
.
IRQ7
NMI
INTR
запросы от устройств
внутренние источники прерваний
команды INT исключения
INTA
Рис. 2.13 Источники прерываний
После завершения выполнения текущей команды процессор вырабаты-
вает сигналы подтверждения (INTA), получает по шине данных номер
прерывания от контроллера прерываний, сохраняет в стеке текущее со-
держимое Flags, CS, IP и приступает к выполнению ISR, загружая содер-
жимое вектора в CS, IP. В начале выполнения ISR процессор очищает
флаг I, запрещая дальнейшие прерывания. Если необходимо, в подпро-
грамме ISR можно разрешить дальнейшие прерывания, установив флаг I (с
помощью команды STI). Подпрограмма ISR должна заканчиваться коман-
дой IRET, которая загружает старые значения IP, CS, Flags из стека и т.о.
возобновляет работу прерванной программы.
Запросы от различных устройств в ПК обрабатываются контроллером
прерываний, который формирует сигнал INTR для процессора (Рис. 2.13).
Обычно это две микросхемы Intel8259, каждая из которых имеет
8 входов
прерываний. Запросам прерываний IRQ0-IRQ7 ПК соответствуют векторы
от 08h до 0Fh, а IRQ8-IRQ15 – векторы от 070h до 077h. Битовые маски,
позволяющие запрещать (маскировать) отдельные входы запросов преры-
ваний, находятся по адресам 021h и 0A1h для IRQ0-IRQ7 и IRQ8-IRQ15
соответственно.
К внутренним прерываниям относятся т.н. исключенияразличного ро-
да ошибки, механизм для отлаживания программ, аварийные состояния и
командные прерывания INT:
вектор 0 – возникает при ошибке деления;
                                                   71
му прерыванию назначен четырехбайтный вектор с номером в диапазоне
0h - FFh. Векторы определяют адреса подпрограмм обслуживания преры-
вания (ISR, Interrupt Service Routine) и размещаются в младшем килобайте
адресного пространства памяти в виде IP:CS (сегмент_ISR:смещение_ISR,
смещение записывается по младшему адресу).
   Внешние прерывания вызываются сигналами на входах (см. Рис. 2.13)
запроса немаскируемого прерывания процессора (NMI) и маскируемого
прерывания (INTR). Маскируемые прерывания игнорируются, если очи-
щен флаг I (Рис. 2.5).

                           IRQ0
   запросы от устройств




                                                                процессор
                           IRQ1

                                                        внутренние источники прерваний
                              контроллер    INTA
                           прерываний       INTR
                                                        команды INT       исключения
                          .                 NMI
                           IRQ7
                 немаскируемое прерывание

                                   Рис. 2.13 Источники прерываний
   После завершения выполнения текущей команды процессор вырабаты-
вает сигналы подтверждения (INTA), получает по шине данных номер
прерывания от контроллера прерываний, сохраняет в стеке текущее со-
держимое Flags, CS, IP и приступает к выполнению ISR, загружая содер-
жимое вектора в CS, IP. В начале выполнения ISR процессор очищает
флаг I, запрещая дальнейшие прерывания. Если необходимо, в подпро-
грамме ISR можно разрешить дальнейшие прерывания, установив флаг I (с
помощью команды STI). Подпрограмма ISR должна заканчиваться коман-
дой IRET, которая загружает старые значения IP, CS, Flags из стека и т.о.
возобновляет работу прерванной программы.
   Запросы от различных устройств в ПК обрабатываются контроллером
прерываний, который формирует сигнал INTR для процессора (Рис. 2.13).
Обычно это две микросхемы Intel8259, каждая из которых имеет 8 входов
прерываний. Запросам прерываний IRQ0-IRQ7 ПК соответствуют векторы
от 08h до 0Fh, а IRQ8-IRQ15 – векторы от 070h до 077h. Битовые маски,
позволяющие запрещать (маскировать) отдельные входы запросов преры-
ваний, находятся по адресам 021h и 0A1h для IRQ0-IRQ7 и IRQ8-IRQ15
соответственно.
   К внутренним прерываниям относятся т.н. исключения – различного ро-
да ошибки, механизм для отлаживания программ, аварийные состояния и
командные прерывания INT:
• вектор 0 – возникает при ошибке деления;