пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Функционирование системы прерываний в реальном режиме работы микропроцессора.

В реальном режиме работы в системе прерываний используется понятие вектора прерывания, поскольку для указания адреса программы обработки прерывания здесь требуется не одно значение, а два (значение для сегментного регистра кода и значение для указателя команд), то есть мы имеем дело не со скалярной величи­ной, а с «векторной», состоящей из двух скалярных.

Каждый вектор прерывания состоит из четырех байтов, или двух слов: пер­ вые два содержат новое значение для регистра IP, а следующие два — новое значе­ ние для регистра CS. Таблица векторов прерывания занимает 1024 байт. Таким об­ разом, в ней может быть задано 256 векторов прерываний. 

IDTR (Interrupt Descriptor Table Register — регистр таблицы дескрипторов прерываний). 

Таблица векторов прерываний заполняется (инициализируется) при запуске сис­темы, но, в принципе, может быть изменена или перемещена.
Каждый вектор прерывания имеет свой номер, называемый номером прерывания, который указывает его место в таблице. Этот номер, помноженный на четыре (сдвиг на два разряда влево и заполнение освободившихся битов нулями) и сложенный с содержимым регистра IDTR, дает абсолютный адрес первого байта вектора пре­ рываний в оперативной памяти. 

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

 

 Прерывания бывают двух видов: внутренние и внешние.

Внутренние прерывания, как мы уже знаем, возникают в результате работы про­ цессора в ситуациях, которые нуждаются в специальном обслуживании, или при выполнении специальных команд (INT, INTO). Это следующие прерывания:

1. прерывание при делении на ноль (номер прерывания 0);

• прерывание по флагу TF (Trap Flag — флаг трассировки) обычно исполь­ зуется специальными программами отладки типа DEBUG (номер прерыва­ния 1);
Флаг трассировки — специальный бит в регистре PSW (Program Status Word — слово состояния программы), который в случае равенства единице вызывает приостанов после каждой команды и генерирует прерывание для организации режима отладки с пошаговым выполнением программы. 

 

2. прерывания, возникающие при выполнении команд INT (Interrupt — прерыва­ ние) и INTO (Interrupt if Overflow — прерывание по переполнению), называют­ся программными. В качестве операнда команды INT указывается номер прерывания, которое нужно выполнить, например INT 10H. Программные прерывания как средство перехода на соответствующую процедуру были введены для того, чтобы выполнение этой процедуры осуществлялось в привилегированном режиме, а не в обычном пользо­ вательском. 

 

Внешние прерывания возникают по сигналу какого-нибудь внешнего устройства. Существует два специальных внешних сигнала среди входных сигналов процессо­ ра, при помощи которых можно прервать выполнение текущей программы и тем самым переключить работу центрального процессора. Это сигналы NMI (No Mask Interrupt — немаскируемое прерывание) и INTR (Interrupt Request — запрос на прерывание). Соответственно, внешние прерывания подразделяются на немаски­ руемые и маскируемые.

Маскируемые прерывания генерируются контроллером прерываний по заявке оп­ ределенных периферийных устройств2. Контроллер прерываний (его обозначение 18259А) поддерживает восемь уровней (линий) приоритета; к каждому уровню «привязано» одно периферийное устройство3. Маскируемые прерывания часто называют аппаратными прерываниями. 

Сам алгоритм и технология

Как известно, прерывания могут быть инициированы внешним устройством ПЭВМ или специальной командой прерывания из программы. В любом случае если пре­ рывания разрешены, то выполняется следующая процедура.

1. В стек помещается регистр флагов PSW.

2. Флаг включения-выключения прерываний IF и флаг трассировки TF, находя­ щиеся в регистре PSW, обнуляются для блокировки других маскируемых пре­ рываний и исключения пошагового режима исполнения команд.

3. Значения регистров CS и IP сохраняются в стеке вслед за PSW.

4. Вычисляется адрес вектора прерывания и из вектора, соответствующего номе­ ру прерывания, загружаются новые значения IP и CS.

Когда системная подпрограмма принимает управление, она может разрешить сно­ ва маскируемые прерывания командой STI (Set Interrupt Flag — установить флаг прерываний), которая переводит флаг IF в состояние 1, что разрешает микропро­ цессору вновь реагировать на прерывания, инициируемые внешними устройства­ ми, поскольку стековая организация допускает вложение прерываний друг в друга.

Закончив работу, подпрограмма обработки прерывания должна выполнить команду IRET (Interrupt Return), которая извлекает из стека три 16-разрядных значения и загружает их в указатель команд IP, регистр сегмента команд CS и регистр PSW соответственно. Таким образом, процессор сможет продолжить работу с того мес­ та, где он был прерван.

В случае внешних прерываний процедура перехода на подпрограмму обработки прерывания дополняется следующими шагами.

1. Контроллер прерываний получает заявку от определенного периферийного устройства и, соблюдая схему приоритетов, генерирует сигнал INTR (запрос на прерывание), который является входным для микропроцессора.

2. Микропроцессор проверяет флаг IF в регистре PSW. Если он установлен в 1, то переходим к шагу 3. В противном случае работа процессора не прерывается. Часто говорят, что прерывания замаскированы, хотя правильнее говорить, что они отключены. Маскируются (запрещаются) отдельные линии запроса на пре­ рывания посредством программирования контроллера прерываний.

3. Микропроцессор генерирует сигнал INTA (подтверждение прерывания). В от­ вет на этот сигнал контроллер прерываний посылает по шипе данных номер прерывания. После этого выполняется описанная ранее процедура передачи управления соответствующей программе обработки прерывания.

Номер прерывания и его приоритет устанавливаются на этапе инициализации си­ стемы. После запуска ОС пользователь, как мы уже отмечали, может изменить таблицу векторов прерываний, поскольку она ему доступна. 


15.06.2014; 13:15
хиты: 149
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь