Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Команды прерываний




Ещё один из способов изменения порядка выполнения программы заключается в использовании в программе прерываний.

Прерывания — это инициируемый определенным образом процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возобновлением прерванной программы.

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

Прерывания дают возможность операциям ввода-вывода от микропроцессора, т.е. когда устройство ввода-вывода требует обслуживания со стороны микропроцессора, оно сообщает об этом микропроцессору формированием соответствующего запроса (сигнала), по которому может быть прервано выполнение текущей программы.

Прерывания могут быть внешними (аппаратными) и внутренними.

Внешние или аппаратные прерывания в свою очередь делятся на немаскируемые и маскируемые.

Немаскируемые - обрабатываются микропроцессором независимо от состояния флага прерывания IF. К ним относятся прерывания, приходящие по линии NMI, сигнализирующие о каких-то неординарных (катастрофических) событиях в системе.

Маскируемые - предназначены для фиксации запросов от различных периферийных устройств (например, клавиатуры) — вход INTR.

Внутренние прерывания также делятся на две группы: программные прерывания и прерывания в особой ситуации (или исключения), которые возникают при ненормальном внутреннем состоянии микропроцессора, возникшем при обработке некоторой команды программы (например, прерывание из-за ошибки при делении, если возникает условие деления на нуль), или при попытке выполнить несуществующую команду.

Программные прерывания — это планируемые прерывания, так как с их помощью программист обращается в нужное для него время за обслуживанием своих запросов к операционной системе или к BIOS, или к собственным программам обработки прерываний.

Этот вид прерываний обрабатывается командой INT xx, где xx — номер прерывания.

Обработка прерываний в реальном режиме как внешних, так, и внутренних производится в три этапа:

1. прекращение выполнения текущей программы;

2. переход к выполнению программы обработки прерывания;

3. возврат управления прерванной программе.

 

Все возможные прерывания нумеруются числами от 0 до 255.

Для каждого прерывания есть своя процедура обработки прерывания.

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

Перед тем, как такая программа начнёт свою работу, механизм микропроцессора, отвечающий за обработку прерывания, оставляет запись в стеке о том, какая работа производилась до прерывания.

Для этого микропроцессор заносит в стек текущее содержимое трёх регистров: CS, IP, регистра флагов. (CS и IP — полный адрес возврата в прерванную программу).

Когда обработчик прерываний закончит свою работу, он должен возобновить работу прерванной программы. Для этого из стека считываются три слова и восстанавливаются по ним регистры CS, IP и регистр флагов.

Для осуществления этих действий используется команда IRET — “возврат из прерывания”.

Описанные действия микропроцессором выполняются совершенно одинаково для всех видов прерываний.

 

Далее процессор загружает CS и IP из соответствующего вектора прерываний, осуществляя, тем самым, переход на обработчик прерывания связанный с этим вектором.

 

Краткая выдержка из таблицы векторов

00h — внутреннее прерывание, деление на 0;

01h — внутреннее прерывание, пошаговое выполнение (при TF=1);

02h — немаскируемое прерывание (выводит NMI процессора);

08h — аппаратное прерывание от системного таймера;

09h — аппаратное прерывание от клавиатуры;

0Eh — аппаратное прерывание от гибкого диска;

13h — программное прерывание, программы BIOS управление дисками;

16h — программное прерывание, программы BIOS управления клавиатур;

21h — программное прерывание, диспетчер функций DOS;

22h — программное прерывание, адрес перехода при завершении процесса, используемый DOS;

25h — программное прерывания, абсолютное чтение диска (функция DOS);

26h — программное прерывание, абсолютная запись на диск (функция DOS);

60h …66h — зарезервировано для программных прерываний пользователя;

68h …6Fh — программные прерывания, свободные векторы;

70h — аппаратное прерывание от часов реального времени (с питанием от аккумулятора);

76h — аппаратное прерывание от жёсткого диска;

 

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

Особенно характерен в этом отношении вектор 21H, через который осуществляется вызов практически всех функций DOS: ввода с клавиатуры и вывода на экран и т.д.

Для вызова требуемой функции надо не только выполнить команду INT с соответствующим номером, но и указать системе в одном из регистров (для этой цели всегда используется регистр AH) номер вызываемой функции, в другие регистры — исходные данные, после чего выполнить команду INT 21H, которая передает управление DOS.

Например, вывод на экран строки текста можно осуществить функцией 09H, которая требует, чтобы в регистрах DS:DX содержался полный адрес выводимой строки. (Регистр DS-начальный адрес сегмента данных, а в регистр DX-заносится относительный адрес строки). Длина выводимой строки не указывается, так как функция 09H DOS выводит на экран строку от указанного адреса до символа доллара $.

Для завершения программы используется функция DOS с номером 4CH. Эта функция предполагает, что в регистре AL находится код завершения программы, который она передает DOS. Если программа завершилась успешно, код завершения должен быть равен 0, поэтому мы в одном предложении MOV AX, 4C00H загружаем в AH 4CH, а в Al - 0 и вызываем DOS командой INT 21H.

6.6 Команды ввода/вывода

Любые микропроцессорные системы должны иметь в системе своих команд команды вода/вывода с внешних устройств. Для данного семейства таких команд две – ввод из внешнего порта – IN и вывод во внешний порт – OUT.

Формат команд: - IN <accumulator>, <address>

- OUT <address>, < accumulator>

Здесь первый операнд, в который записывается или откуда считывается соответственно вводимое или выводимое значение – это регистр-аккумулятор – AL или AX. Адрес порта, в который вводится или откуда считывается значение, является вторым операндом и в данной команде им может быть или 8-ми разрядная константа, или содержимое регистра DX. Следует помнить, что в первом случае команды можно адресовать только такие порты ввода/вывода, адрес которых находится в пределах от 0 до 256, при этом старшие биты адреса устанавливаются в 0. Во втором случае, при использовании регистра DX, можно адресовать порты ввода/вывода во всём адресном пространстве таких устройств.

Эти команды не изменяют состояния флагов микропроцессора.




Поделиться с друзьями:


Дата добавления: 2014-11-09; Просмотров: 3437; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.