КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Работа микропроцессора при выполнении программного прерывания
Программы-обработчики прерываний могут находиться в различных частях основной памяти (место их расположения в разных версиях операционной системы может быть различным). Для обеспечения совместимости программ под разными версиями операционной системы обращение к обработчикам прерываний осуществляется по их номерам. Связь между номером прерывания и адресом основной памяти, соответствующим точке входа в обработчик прерывания, осуществляется через таблицу векторов прерываний, занимающую 1 Кбайт сегмента 0 основной памяти (при работе в DOS). При работе в защищенном режиме связь между номером прерывания и адресом обработчика прерывания осуществляется через дескрипторную таблицу прерываний (IDT — Interrupt Descriptor Table), местонахождение которой определяется системным регистром микропроцессора IDTR. Поскольку адрес любого байта основной памяти определяется базовым адресом сегмента (2 байта) и смещением в сегменте (2 байта), вектор прерываний разделен на «четверки» байтов, имеющие структуру, показанную на рис. 5.7.
Рис. 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. В чем заключается подготовка ЦП к выполнению программного прерывания?
Дата добавления: 2015-06-26; Просмотров: 1106; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |