Мегаобучалка Главная | О нас | Обратная связь  


Обобщенная схема обработки прерывания в защищенном режиме




Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

При возникновении прерывания от источника с номером п микропроцессор, находясь в защищенном режиме, выполняет следующие действия:

1. Определяет местонахождение таблицы IDT, адрес и размер которой содержится в регистре IDTR.

2. Складывает значение адреса, по которому размещена IDT, и значение N*8. По данному смещению в таблице IDT должен находиться 8-байтовый дескриптор, определяющий местоположение процедуры обработки прерывания.

3. Переключается на процедуру обработки прерывания.

 

§ 4. Система прерываний ПЭВМ IBM PC

Основные сведения

 

Все прерывания делятся на две группы: прерывания с номера 00h по номер 1Fh называются прерываниями базовой системы ввода-вывода (BIOS – Basic Input-Output System); прерывания с номера 20h по номер FFh называются прерываниями DOS. Прерывания DOS имеют более высокий уровень организации, чем прерывания BIOS, они строятся на использовании модулей BIOS в качестве элементов.

Прерывания делятся на три типа: аппаратурные, логические и программные. Аппаратурные прерывания вырабатываются устройствами, требующими внимания микропроцессора: прерывание № 2 - отказ питания; № 8 от таймера; № 9 от клавиатуры; № 12 от адаптера связи; № 14 от НГМД; № 15 от устройства печати и др.



Запросы на логические прерывания вырабатываются внутри микропроцессора при появлении “нештатных” ситуаций: прерывание № 0 при попытке деления на 0; № 4 при переполнении разрядной сетки арифметико-логического устройства; № 1 при переводе микропроцессора в пошаговый режим работы; № 3 при достижении программой одной из контрольных точек. Последние два прерывания используются отладчиками программ для организации пошагового режима выполнения программ (трассировки) и для остановки программы в заранее намеченных контрольных точках.

Запрос на программное прерывание формируется по командеINTn, где n – номер вызываемого прерывания. Запрос на аппаратное или логическое прерывание вырабатывается в виде специального электрического сигнала.

В IBM PC используется так называемая векторная система прерываний, в составе которой используется двухуровневая система приоритетов (рисунок 14.14).

 
 

Рисунок 14.14 – Система прерываний IBM PC

Здесь арбитр системы прерываний имеет два входа для приема сигналов прерываний от устройств ВК и других источников. Вход NMI имеет более высокий приоритет, чем вход INTR. Кроме того, вход NMI не маскируется, а маскируемый вход INTR маскируется маской прерываний IF из регистра флагов ЦП. Таким образом, аппаратные (внешние) прерывания делятся на два типа: маскируемые и немаскируемые.

Кроме аппаратных прерываний есть и внутренние прерывания. Это прерывания типа отказ (fault) – такого рода прерывание наступает в случаях, когда в результате различных некорректностей невозможно нормальное выполнение команды – прерывание наступает до выполнения команды. Прерывание «ловушка» (trap) – прерывание наступает в результате выполнения команды, например, команды прерывания INT N. Прерывание «аварийное завершение команды» (abort) из-за ошибки аппаратуры. Этот тип прерываний не маскируется.

4.2. Действия микропроцессора при возникновении прерывания в IBM PC

Укажем основные действия, которые выполняются микропроцессором при возникновении прерывания.

1. Регистр флагов запоминается в стеке. Запоминание состояния прерванной программы.

2. Отчистка флагов TF и IF.

Т.о. после программы обработки прерывания процессор работает обычным образом (Т = 0), а не в пошаговом режиме. Автоматически запрещаются внешние прерывания по входу INTR (I = 0), что нужно, например, для защиты начального участка программы обработки прерывания, в течение которого осуществляется включение в стек внутренних регистров микропроцессора. Затем программа обработки прерывания может разрешить внешние прерывания. Необходимо следить, чтобы в программе обработке прерывания не возникло того типа прерывания, которое она обслуживает, чтобы не произошел бесконечный вызов этой процедуры.

3. Адрес возврата (CS и IP) заполняются в стеке. Отметим, что в стек включается скорректированное содержимое указателя команд IP, соответствующее адресу команды, перед которой микропроцессор начал обслуживать прерывание(то есть адрес следующей команды)..

4. Вектор прерывания помещается в регистры CS и IP. При этом осуществляется переход к программе обработки прерывания.

После этого по номеру ВП N, полученному от внешнего устройства или сгенерированному внутри ЦП, из ОП извлекается ВП. Адрес ВП формируется следующим образом: АВП = 4N. По нему из ОП извлекаются два слова адреса обработчика, которые загружаются в регистр CS (базовый адрес) и IP (смещение). По ним выбирается первая команда программы обработки прерывания. В конце программы-обработчика ставится команда iret – возврат из прерывания, по которой из стека выталкиваются 2 слова адреса возврата к прерванной программе и загружаются в CS и IP, и третье слово - в RF.

Обслуживание прерывания по входу NMI осуществляется без прерывания обработчика, т.е. по схеме с ОПР, т.к. сигнал запроса сбрасывается только после выполнения команды IRET.

На входе INTR сигналом запроса является сигнал высокого уровня. По этому сигналу арбитр заталкивает в стек IP, CS, RF и вырабатывает два ответных сигнала (импульса) INTA1, INTA2. Получив второй из них, программируемый контроллер прерываний ПКП сбрасывает сигнал на входе INTR и посылает по ШД в ЦП номер ВП, соответствующий причине прерывания с наивысшим в данный момент времени приоритетом (IRQi). По ВП запускается программа-обработчик, которая не может быть прервана (т.к. IF=0) до тех пор, пока сама не установит маску IF=1 (по команде STI). Отметим еще раз, что эта п/п может быть прервана сигналом прерывания на входе NMI, т.к. на него флаг IF не действует (АПР). Кроме того, эта п/п может быть прервана и некоторыми внутренними причинами прерывания – например, делением на 0.

Рекомендуемая структура программы-обработчика для IBM PC представлена на рисунке 14.15.

 
 

 

 


Как видно из пояснений, эти действия несколько отличаются от обработки прерываний в PDP-11, хотя, по существу, выполняются одни и те же этапы.

Такая многоуровневая обработка прерываний в определённой степени усложняет использование прерываний, особенно в случаях, когда обработка одного прерывания прерывается другим прерыванием. В этих случаях при возврате из прерывания может оказаться испорченным содержимое некоторых регистров, вследствие чего состояние прерванной программы будет восстановлено не полностью, что чревато появлением трудно обнаруживаемых ошибок.

Взаимодействие программ, использующих прерывания представлено ниже.

Рисунок 14.16 – Взаимодействие программ, использующих прерывания

Здесь IRET – команда возврата из прерывания, по которой из стека считываются содержимое регистра флагов и регистров CS и IP, после чего продолжается выполнение прерванной программы.

 

Пример: Установить курсор на 4-ю строку в 10-й столбец.

MOV AH, 02; 02 - функция установки курсора

MOV BH, 00; экран 0

MOV DH, 03; строка 4

MOV DL, 09; столбец 10

INT 10H; передача управления в BIOS

 




Читайте также:



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (720)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.012 сек.)
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7