![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В реальном режиме работы система прерываний использует понятие вектора прерывания. Термин «вектор прерываний» используется потому, что для указа-
1 WC (Word Counter) — счетчик слов, см. рис. 3.11.
ния адреса используется не одно значение, а два, то есть мы имеем дело не со скалярной величиной, а с «векторной».
Итак, каждый вектор прерываний состоит из 4 байтов или 2 слов: первые два содержат новое значение для регистра IP, а следующие два — новое значение регистра QS. Таблица векторов прерываний занимает 1024 байта. Таким образом, в ней может быть задано 256 векторов прерываний. В процессоре i8086 эта таблица располагается на адресах OQOOOH-Q03FFH. Расположение этой таблицы в процессорах i80286 и старше определяется значением регистра IDTR — Interrupt Descriptor Table Register. При включении или сбросе процессора i80x86 этот регистр обнуляется. Однако при необходимости можно в регистре IDTR указать смещение и, таким образом, перейти на новую таблицу векторов прерываний.
Таблица векторов прерываний заполняется (инициализируется) при запуске системы, но в принципе может быть изменена или перемещена.
Каждый вектор прерывания имеет свой номер, называемый номером прерывания, который указывает его место в таблице. Этот номер, помноженный на четыре (сдвиг на два разряда влево и заполнение освободившихся битов нулями), и сложенный с содержимым регистра IDTR, дает абсолютный адрес первого байта вектора в оперативной памяти.
Подобно вызову процедуры, прерывание заставляет микропроцессор сохранить в стеке информацию для последующего возврата, а затем перейти к группе команд, адрес которых определяется вектором прерывания. Таким образом, Прерывание вызывает Косвенный переход к своей подпрограмме обработки за счет получения ее адреса из вектора прерывания.
В IBM PC, как и в других вычислительных системах, прерывания бывают двух видов: внутренние и внешние.
Внутренние прерывания, как мы уже знаем, возникают в результате работы процессора. Они возникают в ситуациях, которые нуждаются в специальном обслуживании, или при выполнении специальных инструкций — INT или INTO. Это следующие прерывания:
Q прерывание при делении на ноль; номер прерывания — 0;
Q прерывание по флагу TF (trap flag1). В этом случае прерывание обычно используется специальными программами отладки типа DEBUG. Номер прерывания — 1;
Q инструкции INT (interrupt — выполнить прерывание с соответствующим номером) и INTO (interrupt if overflow — прерывание по переполнению). Эти прерывания называются программными.
В качестве операнда команды INT указывается номер прерывания, которое нужно выполнить, например I NT 10H. Программные прерывания как средство перехода
1 Trap Flag — специальный бит в регистре PSW (program status word, слово состояния программы), который в случае значения TF-1 вызывает «останов» после каждой команды и генерируется прерывание для организации режима отладки с пошаговым выполнением программы. Чаще всего этот регистр в микропроцессорах Intel 80x86 называют регистром флагов.
на соответствующую процедуру были введены для того, чтобы выполнение этой процедуры осуществлялось в привилегированном режиме, а не в обычном пользовательском.
Внешние прерывания возникают по сигналу какого-нибудь внешнего устройства. Существуют два специальных внешних сигнала среди входных сигналов процессора, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (no mask interrupt, немаскируемое прерывание) и INTR (interrupt request, запрос на прерывание). Соответственно, внешние прерывания подразделяются на немаскируемые и маскируемые.
Маскируемые прерывания генерируются контроллером прерываний по заявке определенных периферийных устройств1. Контроллер прерываний (его обозначение — i8259A) поддерживает восемь уровней (линий) приоритета; к каждому уровню «привязано» одно периферийное устройство2. Маскируемые прерывания часто называют еще аппаратными прерываниями. В ПК, начиная с IBM PC AT, построенных на базе микропроцессора i80286, используются два контроллера прерываний i8259A; они соединяются каскадным образом. Схема последовательного соединения этих контроллеров изображена на рис. 3.12.
Таким образом, на IBM PC AT предусмотрено 15 линий IRQ3, часть которых используется внутренними контроллерами системной платы, а остальные заняты стандартными адаптерами либо не используются. Ниже перечислены линии запроса на прерывание, которые мы приводим потому, что каждый специалист по вычислительной технике должен знать основные стандарты ПК. Итак, линии IRQ:
0 — системный таймер;
1 — контроллер клавиатуры;
2 — сигнал возврата по кадру (EGA/VGA), на AT соединен с IRQ 9;
3 - обычно СОМ2/СОМ4;
4 - обычно СОМ1/СОМЗ;
5 — контроллер HDD (на первых компьютерах IBM PC XT), обычно свободен
на IBM PC AT и используется звуковой картой;
6 — контроллер FDD;
7 — LPT1, многими LPT-контроллерами не используется;
8 — часы реального времени с автономным питанием (RTC — real time clock);
9 — параллельна IRQ 2;
' Сигнал запроса на прерывание чаще всего является сигналом готовности внешнего устройства (соответствующего контроллера внешнего устройства) на выполнение следующей команды, связанной с управлением операциями ввода/вывода.
2 В качестве внешнегр периферийного устройства, занимающего одну линию запроса на
прерывание, может быть использовано специальное управляющее устройство, которое
позволяет разделять эту самую линию запроса между несколькими внешними устройст
вами.
3 IRQ (Interrupt Request) — запрос на прерывание.
10 — не используется, то есть свободно;
Дата публикования: 2015-01-23; Прочитано: 848 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!