КАТЕГОРИИ: Архитектура-(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) |
Обработка прерывания в реальном режиме
Система прерываний. Аппаратные и программные средства системы прерываний Система прерываний - это совокупность программных и аппаратных средств, реализующих механизм прерываний. К аппаратным средствам системы прерываний относятся: · выводы микропроцессора - на них формируются сигналы, извещающие микропроцессор либо о том, что некоторое внешнее устройство «просит уделить ему внимание» (INTR), либо о том, что требуется безотлагательная обработка некоторого события или катастрофическая ошибка (NMI) · INTR - вывод для входного сигнала запроса на прерывание, · NMI - вывод для входного сигнала немаскируемого прерывания · INTA - вывод для выходного сигнала подтверждения получения сигнала прерывания микропроцессором (этот сигнал поступает на одноименный вход микросхемы конроллера 8259А; · программируемый контроллер прерываний 8259А (предназначен для фиксирования сигналов прерываний от восьми различных внешних устройств; он выполнен в виде микросхемы; обычно используют две последовательно соединенные микросхемы, поэтому кол-во возможных источников внешних прерываний до 15 плюс одно немаскируемое прер.; именно он формирует номер вектора прерывания и выдает его шину данных); · внешние устройства (таймер, клавиатура, магнитные диски и т.п.)
К программным средствам системы прерываний Реального режима относятся: · таблица векторов прерываний. Занимает первый килобайт ОП (адреса 00000h-003FFh). Она содержит адреса (векторы - «векторы», т.к. два значения для указания адреса) обработчиков прерываний и состоит из 256 (0..255) элементов по 4 байта каждый: - 2 байта - новое значение для регистра IP - 2 байта - новое значение для регистра CS. Расположение таблицы векторов прерываний в процессорах i80286 и старше определяется значением регистра IDTR. Таблица векторов прерываний инициализируется при запуске системы, но в принципе может быть изменена и перемещена. Каждый вектор имеет свой номер и называется номером прерывания. · два флага в регистре флагов flags/eflags: · IF (Interrupt Flag) - флаг прерывания. Предназначен для маскирования (запрещения) аппаратных прерываний. Если IF=1, микропроцессор обрабатывает внешние прерывания, если = 0, то игнорирует; · TF(Trace Flag) - флаг трассировки. Если он=1, то микропроцессор переходит в режим покомандной работы. В этом режиме в микропроцессоре генерируется внутреннее прерывание с номером 1; · машинные команды микропроцессора: int, into (прерывание по переполнению), iret, cli, sti
производится в три этапа: 1) прекращение выполнения текущей программы; Должно произойти так, чтобы потом вернуться и продолжить работу. Для этого необходимо сохранить содержимое регистров, так как они являются ресурсами, разделяемыми между программами. Обязательными для сохранения являются регистры cs, ip, flags (пара CS:IP содержит адрес команды, с которой необходимо начать выполнение после возврата, flags - состояние флагов после выполнения последней команды прерванной программы). !!! Эти регистры сохраняются микропроцессором автоматически. Сохранение остальных регистров - должно обеспечиваться программистом!!! Наиболее удобным местом хранения регистров является стек. После сохранения регистров в стеке микропроцессор сбрасывает бит флага IF (т.е.=0) (!!! В стеке при этом записан регистр flags с еще установленным IF!!!). Этим предотвращается возможность возникновения вложенных внешних прерываний и порча регистров исходной программы вследствие неконтролируемых действий со стороны программы - обработчика вложенного прерывания. После того как необходимые действия по сохранению контекста завершены, обработчик аппаратного прерывания может разрешить вложенные прерывания командой sti. 2) переход к выполнению и выполнение программы обработки прерывания; Здесь определяется источник прерывания и вызывается соответствующий обработчик прерывания. В реальном режиме микропроцессора допускается 256 источников - по кол-ву элементов таблицы векторов прерываний. Структура элемента: · 2 байта - значение смещения начала программы-обработчика прерывания от начала кодового сегмента · 2 байта - значение базового адреса сегмента, в котором находится программа-обработчик. Как определить адрес, по которому находится вектор прерывания с номером N? смещение эл-та таблицы векторов прерываний = N * 4 Полный размер таблицы? 4*256=1024 Итак, на втором этапе микропроцессор 1. По номеру источника прерывания определяет смещение в таблице векторов прерываний 2. Помещает первые два байта в регистр IP 3. Помещает вторые два байта в регистр CS 4. Передает управление по адресу CS:IP Далее выполняется сама программа обработки прерывания. (Она тоже может быть прервана поступлением запроса от более приоритетного источника. Все источники прерывания имеют приоритеты.)
3) возврат управления прерванной программе. Необходимо привести стек в состояние, в котором он был сразу после передачи управления данной процедуре. Для этого программист должен указать необходимые действия по восстановлению регистров и очистке стека.!! Этот участок необходимо защитить от возможного искажения содержимого регистров (в результате появления аппаратного прерывания) с помощью команды cli. Последние команды в обработчике прерывания - sti, iret sti - разрешить аппаратные прерывания (устанавливает флаг IF=1, не имеет операндов). iret - извлечь последовательно три слова из стека и поместить их соответственно в регистры ip, cs, flags.
Дата добавления: 2014-01-15; Просмотров: 653; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |