- •Глава 5 центральные устройства эвм
- •5.1.Основная память
- •5.1.1.Состав, устройство и принцип действия основной памяти
- •5.1.2. Размещение информации в основной памяти ibm pc
- •5.1.3. Расширение основной памяти ibm pc
- •5.2. Центральный процессор эвм
- •5.2.1. Структура базового микропроцессора
- •" Таблица 5.1 Творческая деятельность компьютерных фирм в 1997 г.
- •5.2.2. Система команд микропроцессора
- •5.2.3.Взаимодействие элементов при работе микропроцессора
- •5.2.4. Работа микропроцессора при выполнении программного прерывания
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. В чем заключается подготовка ЦП к выполнению программного прерывания?