Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii_EvM_shpory.doc
Скачиваний:
33
Добавлен:
14.04.2019
Размер:
333.82 Кб
Скачать

56)Организация прерываний в эвм. Программные и аппаратные.

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

Таблица векторов начинается с адреса 0000:0000 и ее размер составляет 1024 байта. Поскольку адрес программы обработки прерывания может быть любым, то для его определения требуется 32 разряда (4 байта). Следовательно, размер каждой записи в таблице векторов составляет 4 байта. Адреса TSR-программ в таблице записываются таким образом, что адрес программы обработки прерывания 0 находится по адресу 0000:0000, программы обработки прерывания прерывания 1 - по адресу 0000:0004, прерывания 2 - по адресу 0000:0008

Аппаратные прерывания :

Аппаратные прерывания вызываются событиями, физически связанными в аппаратуре с соответствующими векторами прерываний. Например, клавиатура в PC связана с прерыванием 9. Нажатие клавиши вызывает прерывание выполняемой программы и переход по адресу, находящемуся в векторе прерывания, соответствующему прерыванию 9. В памяти этот вектор находится по адресу 0х24 (9*4 байт ).

Программные прерывания :

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

1. прочитать содержимое элемента таблицы векторов прерываний для вектора с нужным номером;

2. запомнить это содержимое в области данных программы;

установить новый адрес в таблице векторов прерываний так, чтобы он соответствовал началу программы обработки прерывания;

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

Для чтения вектора используется функция 35h прерывания 21h. Перед ее вызовом регистр AL должен содержать номер вектора в таблице. После выполнения функции в регистрах ES:BX будет искомый адрес обработчика прерывания. Функция 25h прерывания 21h устанавливает для вектора с номером, находящимся в AL, обработчик прерывания DS:DX.

В Си библиотека Quick C содержит функции _dos_getvec(), _dos_setvect(). Первая функция получает адрес из таблицы векторов прерываний, вторая устанавливает новый адрес; имеется функция для организации цепочки прерываний - _chain_intr().

57)Прерывания. Программный опрос. Использование векторов прерываний.

В конце каждого машинного цикла команды основной программы процессор выполняет проверку наличия требования прерываний от внешних устройств. Если сигнал прерывания есть в процессоре, и оно разрешено , то процессор переключается на выполнение подпрограммы обработки прерывания. После охранения содержимого регистров процессора, используемых в подпрограмме начинается последовательный опрос контр. регистров СУ ВУ, которые работают в режиме прерывания. Как только подпрограмма обнаружит готовность внешнего устройства к обмену информацией сразу выполниться действие по его обслуживанию. Завершается подпрограммы после опроса всех ВУ и восстановления содержимого регистров процессора первоначальной основной программы. Приоритет ВУ определяется порядком опроса самих внешних устройств. Соответственно необходимость проверки готовности всех внешних устройств увеличивает время обслуживания ВУ, которые опрашиваются последними. Поэтому обслуживание прерываний с опросом готовность ВУ применяется только в тех случаях, когда нет жестких требований на ограничение на время обработки сигнала от прерывания.

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

В ответ на сигнал контроллера ВУ требования прерывания процессор формирует управляющий сигнал предоставления прерывания с индексом «входящее», который разрешает контроллеру ВУ, запрашивающего прерывание, выдачу вектора прерывания в шину адреса системного интерфейса. Для этого используется регистр векторов прерывания и схема совпадения U3. Регистр векторов прерывания обычно реализуется при помощи различных перемычек, что позволяет использовать для конкретных ВУ требуемые вектора прерывания. Управляющий сигнал предоставления прерывания с индексом «входящее» формируется в контроллере с помощью схемы совпадения U2. Этот сигнал используется для организации последовательного аппаратного опроса готовность ВУ и реализует тем самым требуемые приоритеты ВУ. Процессор при поступлении в него по общей линии системного интерфейса требования прерывания, формирует управляющий сигнал предоставления прерывания с индексом «входящий», который поступает сначала в контроллер ВУ с наивысшим приоритетом, если это устройство не требовало обслуживания, то его контроллер пропускает и передает сигнал предоставления прерывания на следующий контроллер, иначе дальнейшее распространение сигнала прекращается и контроллер возвращает на шину адреса вектор прерывания. Аппаратный опрос готовность ВУ производится гораздо быстрее, чем программный, но если обслуживание запрашивает 2 и более ВУ, обслуживание менее приоритетных ВУ будет отложено на время обслуживания более приоритетных устройств системе прерываний с программным опросом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]