![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Как известно, прерывания могут быть инициированы внешним устройством ПК или специальной командой прерывания из программы. В любом случае, если прерывания разрешены, то выполняется следующая процедура:
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 (inter
rupt request), который является входным для микропроцессора.
2. Микропроцессор проверяет флаг IF в регистре PSW. Если он установлен в 1,
то переходим к шагу 3. В противном случае работа процессора не прерывает
ся. Часто говорят, что прерывания замаскированы, хотя правильнее говорить,
что они отключены. Маскируются (запрещаются) отдельные линии запроса
на прерывания посредством программирования контроллера прерываний.
3. Микропроцессор генерирует сигнал INTA (подтверждение прерывания). В от
вет на этот сигнал контроллер прерывания посылает по шине данных номер
прерывания. После этого выполняется описанная нами ранее процедура пере
дачи управления соответствующей программе обработки прерывания.
Номер прерывания и его приоритет устанавливаются на этапе инициализации системы. После запуска ОС пользователь, как мы уже отмечали, может изменить таблицу векторов прерывания, поскольку она ему доступна.
Дата публикования: 2015-01-23; Прочитано: 304 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!