
- •1. 6. Основы программной инициализации и изменения режимов работы pic
- •1. 7. Основные функции и назначения основных битов приказов инициализации
- •1. 8. Слова рабочих приказов
- •§ 3. Организация прерываний в реальном и защищенном режимах в старших моделях семейства Intel 80x86, Pentium
- •3.1. Аппаратные средства системы прерываний Intel 80x86
- •3.2. Реальный режим и его основные особенности
- •3.3. Основные отличия r-режима старших моделей Intel 80x86 от Intel 8086
- •3.4. Особенности организации прерываний в реальном режиме
- •3.4.1. Программные средства системы прерываний реального режима
- •3.4.2. Идеология организации прерываний в процессорах Intel 80х86
- •3.4.3. Этапы обработки прерываний в реальном режиме процессоров Intel 80х86
- •3.4.4. Основные отличия обработки прерываний в r-режиме по сравнению с базовой моделью Intel 8086
- •3.4. Организация прерываний в защищенном режиме
- •3.4.1 Основные положения
- •3.5. Расширенная классификация прерываний в защищенном режиме
- •3.6. Дескрипторная таблица прерываний и ее элементы
- •Шлюз ловушки
- •Шлюз прерывания
- •Шлюз задач
- •Код ошибки
- •3.7. Обобщенная схема обработки прерывания в защищенном режиме
- •§ 4. Система прерываний пэвм ibm pc
- •4.1. Основные сведения
- •4.2. Действия микропроцессора при возникновении прерывания в ibm pc
- •4.3. Обработка прерывания в реальном режиме и в защищенном режиме
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