Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12-12-2013_11-21-32 / пособие_m.doc
Скачиваний:
76
Добавлен:
10.05.2015
Размер:
484.35 Кб
Скачать

4.1. Прерывания в реальном режиме

В микропроцессоре имеются два входа для внешних прерываний – маскируемого прерывания INT и немаскируемого прерывания NMI. На вход INT обычно подключается выход программируемого контроллера прерываний, на входы которого подаются сигналы запросов прерываний от периферийных устройств. Его основная функция заключается в восприятии сигналов от подключенных периферийных устройств, определении запроса от устройства с максимальным приоритетом и генерировании сигнала INT.

Когда сигнал на линии INT активен, действия микропроцессора зависят от состояния флага IF разрешения прерываний. Если этот флаг сброшен, то прерывания по входу INT запрещены, микропроцессор игнорирует запрос прерывания и переходит к выполнению следующей команды.

Если же прерывания по входу INT разрешены (флаг IF=1), то микропроцессор распознает запрос прерывания и обрабатывает его. После этого контроллер выдает на шину данных байт типа прерывания (беззнаковое целое в диапазоне 0 – 255), ассоциируемый с запрашивающим обслуживание периферийным устройством.

Запросы внешних прерываний подключаются также к входной линии немаскируемого прерывания NMI. Этот вход применяется для сигнализации микропроцессору о катастрофическом событии, требующем немедленной реакции, например, об аварийном падении питающего напряжения, обнаружении ошибки в памяти и т.д.

Обработка всех прерываний и особых случаев производится одинаково и состоит из двух этапов. На первом этапе выполняется следующая последовательность действий:

- содержимое регистра флагов сохраняется в стеке;

- содержимое регистра кодового сегмента сохраняется в стеке;

- содержимое регистра указателя команды (IP) сохраняется в стеке;

- по номеру n производится выборка содержимого вектора, которое помещается в оба регистра CS и IP, чтобы следующая команда выполняла процедуру обслуживания прерывания, адресованную данным вектором.

Таким образом, при каждом прерывании микропроцессор сохраняет содержимое регистра флагов, регистров CS и IP, а затем переходит к процедуре обслуживания прерывания.

Адрес возврата, а точнее содержимое регистров CS и IP, сохраняется в стеке во время выполнения процедуры прерывания. Возврат к основной программе осуществляется при помощи команды IRET, при выполнении которой осуществляется загрузка регистров CS и IP из стека.

По номеру прерывания микропроцессор выбирает один из 256 обработчиков прерывания, обращаясь к таблице векторов прерываний, находящейся в памяти. Эта таблица состоит из четырехбайтных элементов и начинается с нулевого физического адреса памяти, занимая максимум 1 Кбайт. Каждый элемент таблицы представляет собой полный указатель селектор:смещение точки входа обработчика прерывания.

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

    1. Прерывания в защищенном режиме

В защищенном режиме вместо векторов прерываний используется набор из 256 дескрипторов прерываний, которые располагаются в таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). Таблица дескрипторов прерываний занимает 2 Кбайта (256 дескрипторов по 8 байт в каждом) и располагается в том месте оперативной памяти, которое определяется регистром таблицы дескрипторов прерываний IDTR. Разрядность этого регистра составляет 48 бит, из которых 32 разряда указывают базовый адрес таблицы, а 16 разрядов определяют предел таблицы.

Сама таблица может находиться в любой области памяти. Команды LIDT и SIDT загрузки и сохранения позволяют загрузить и сохранить содержимое регистра IDTR.

Каждая отдельная запись в таблице дескрипторов прерываний IDT содержит адрес процедуры обслуживания прерываний в виде селектора сегмента и 32-разрядного смещения. Для образования индекса таблицы IDT процессор умножает номер прерывания или особого случая на восемь.

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

Возврат из обоих прерываний осуществляется по команде IRET. Единственным отличием является то, что микропроцессор в защищенном режиме имеет доступ к таблице дескрипторов прерываний вместо таблицы векторов прерываний в реальном режиме.

Соседние файлы в папке 12-12-2013_11-21-32