- •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. Обработка прерывания в реальном режиме и в защищенном режиме
Код ошибки
При реализации некоторых особых случаев в стек обработчика дополнительно заносится код ошибки (после сохранения адреса возврата). Структура кода ошибки имеет вид:
резерв |
Index |
TI |
IDT |
EXT |
31 16 15 3 2 1 0
Рисунок 14.13 – Структура кода ошибки
Младшее слово кода ошибки практически совпадает с селектором сегмента или системного объекта. Поле индекса указывает на дескриптор, использование которого вызвало особый случай. Биты TI и IDT указывают на таблицу, в которой находится «виновный» дескриптор.
IDT = 1 → IDT
I
→ GDT
→ LDT
TI = 0
I DT = 0
TI = 1
Установка бита EXT = 1 означает, что особый случай вызван не выполняемой программой, а внешним сигналом прерывания. С использованием кода ошибки обработчик прерывания может проанализировать «виновный» дескриптор, извлекая его из соответствующей таблицы.
В тех случаях, когда обработчик прерывания располагается на другом уровне привилегий (в другом кольце защиты) по сравнению с прерываемой программой, в стеке обработчика, помимо всего прочего, сохраняется адрес вершины стека прерываемой программы в виде пары SS:ESP. Сохранение вершины стека осуществляется до включения в стек содержимого регистра флагов. Как правило, обработчики прерываний – особых случаев стараются размещать на наивысшем уровне привилегий (PL = 0). Возможен также вариант оформления обработчиков в виде подчиненных (конформных) сегментов кода.
3.7. Обобщенная схема обработки прерывания в защищенном режиме
При возникновении прерывания от источника с номером п микропроцессор, находясь в защищенном режиме, выполняет следующие действия:
1. Определяет местонахождение таблицы IDT, адрес и размер которой содержится в регистре IDTR.
2. Складывает значение адреса, по которому размещена IDT, и значение N*8. По данному смещению в таблице IDT должен находиться 8-байтовый дескриптор, определяющий местоположение процедуры обработки прерывания.
3. Переключается на процедуру обработки прерывания.
§ 4. Система прерываний пэвм ibm pc
4.1. Основные сведения
Все прерывания делятся на две группы: прерывания с номера 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) из-за ошибки аппаратуры. Этот тип прерываний не маскируется.
