Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ВМСС / Глава 5 ЦЕНТРАЛЬНЫЕ УСТРОЙСТВА ЭВМ.doc
Скачиваний:
53
Добавлен:
02.05.2014
Размер:
1.14 Mб
Скачать

5.2.4. Работа микропроцессора при выполнении программного прерывания

Программы-обработчики прерываний могут находиться в различ­ных частях основной памяти (место их расположения в разных верси­ях операционной системы может быть различным). Для обеспечения совместимости программ под разными версиями операционной сис­темы обращение к обработчикам прерываний осуществляется по их номерам.

Связь между номером прерывания и адресом основной памяти, соответствующим точке входа в обработчик прерывания, осуществ­ляется через таблицу векторов прерываний, занимающую 1 Кбайт сегмента 0 основной памяти (при работе в DOS). При работе в защи­щенном режиме связь между номером прерывания и адресом обработ­чика прерывания осуществляется через дескрипторную таблицу пре­рываний (IDT — Interrupt Descriptor Table), местонахождение кото­рой определяется системным регистром микропроцессора IDTR.

Поскольку адрес любого байта основной памяти определяется ба­зовым адресом сегмента (2 байта) и смещением в сегменте (2 байта), вектор прерываний разделен на «четверки» байтов, имеющие струк­туру, показанную на рис. 5.7.

1-й байт

2-й байт

3-й байт

4-й байт

Смещение

Сегмент

Рис. 5.7. Структура записи в векторе прерываний

Для получения адреса обработчика прерывания № nh необходимо:

  • по номеру прерывания определить адрес первого байта «четвер­ки» в векторе прерываний (он равен п*4);

  • выбрать 4 байта из 0 сегмента основной памяти, начиная с байта 4nh;

  • два последних байта поместить в регистр CS;

  • два первых байта поместить в счетчик команд IP.

После этого начнет выполняться первая команда обработчика пре­рывания № nh.

Таблица векторов прерываний используется не только для хране­ния адресов обработчиков прерываний, но и для указания на места хранения в ОП служебной информации. Для этой цели служат векто­ры прерываний IDh, lEh, IFh, 41h, 43h, 46h, 4Ah. Так, вектор IDh содержит адрес таблицы параметров видеосистемы (а не обработчи­ка прерывания); вектор lEh - таблицы параметров дискет; вектор IFh- адрес знакогенератора адаптера CGA и т.д.

Команда INT, кроме определения адреса обработчика прерыва­ний, выполняет следующие действия:

• сохраняет в стеке часть слова состояния процессора:

(SP) <—— (SP) - 2

(вершина стека) <— (регистр флагов)

(SP) <——(SP) - 2

(вершина стека) <-— (CS)

(SP) <—(SP) - 2

(вершина стека) <— (IP)

• сбрасывает флаги разрешения прерывания и трассировки:

(IF) <— О (TF) <— О

• заносит адрес точки входа обработчика прерываний в регистры CS и IP:

(CS) <— (номер прерывания * 4 + 2)

(IP) <— (номер прерывания * 4)

Команда INT относится к парным командам - каждый обработчик прерывания заканчивается командой IRET (возврат из прерывания).

По команде IRET (без параметров) выполняются следующие дей­ствия:

(IP) <— (вершина стека)

(SP) <— (SP) + 2

(CS) <— (вершина стека)

(SP) <— (SP) + 2

(регистр флагов) <— (вершина стека)

(SP) <— (SP) + 2

Каждый обработчик прерываний BIOS и DOS (Windows) может выполнять несколько различных функций. В команде INT никак не определяется, какую именно функцию должен выполнить обработчик прерываний. Поэтому перед обращением к команде INT в регистры микропроцессора должна быть занесена информация, определяющая, какую функцию необходимо выполнить.

Например, по команде INT 13h могут быть выполнены следующие функции:

00h — сброс дисковой системы;

01h — определение состояния дисковой системы (успешное завер­шение, некорректная команда, не найдена адресная метка и т.д.);

02h — чтение секторов в основную память;

03h — запись секторов из основной памяти;

04h — контроль секторов (есть ошибка — нет ошибки);

05h — форматирование дорожки;

06h — для жесткого диска — форматирование дорожки с установ­кой флагов плохих секторов;

07h — для жесткого диска — форматирование диска, начиная с указанной дорожки;

08h — определение типа и текущих параметров диска и т.д.

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

При выполнении команды INT номер функции должен содержать­ся в регистре АН микропроцессора. Остальные регистры должны включать необходимые для этой функции параметры. Например, для функции 02h остальные регистры микропроцессора должны содер­жать:

AL — число читаемых секторов;

СН — номер дорожки, на которой расположены читаемые сек­тора;

CL — номер сектора;

DH — номер головки;

DL — номер дисковода;

ES:BX — адрес буфера для чтения.

В результате выполнения этой функции при возникновении ошиб­ки флаг CF устанавливается в 1; в регистр AL заносится число счи­танных секторов, в регистр АН записывается код состояния, сформи­рованный после окончания операции:

00 — успешное завершение;

01 — некорректная команда;

02 — адресная метка не найдена;

FF — сбой операции опроса (для жесткого диска).

Кроме команд INT и IRET, в IBM PC с прерываниями работают команды CLI (запрещение маскируемых прерываний) и STI (отмена запрета прерывания).

Контрольные вопросы

1.Для чего необходима стековая память?

2. Как организована стековая память IBM PC?

3. Чем различаются стандарты XMS и EMS использования дополни­тельной памяти IBM PC?

4. Каким образом определяется физический адрес ОП в реальном и в защищенном режимах?

5. Для чего необходим регистр флагов в исполнительном блоке МП?

6. Каким образом взаимодействуют узлы МП при выполнении ариф­метической команды?

7. Чем объясняется использование матричной организации ОП?

8. Каким образом заносится информация в постоянное ЗУ?

9. В каких случаях приходится сталкиваться с «вращением байтов» и чем оно объясняется?

10. Чем отличается память с выборкой по содержанию от памяти с произвольным доступом?

11. С какой целью в ЭВМ реализован режим прерываний?

12. Какая информация включается в состав слова состояния процес­сора?

13. Какие действия выполняют команды, вызывающие программные прерывания?

14. В чем заключается подготовка ЦП к выполнению программного прерывания?

22

Соседние файлы в папке Лекции по ВМСС