Обмен по прерыванию программы. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обмен по прерыванию программы.



Этот вид обмена отличается от асинхронного тем, что сигнал готовности ВУ к обмену анализируется не программным, а аппаратным путем. ЭВМ может выполнять любую не связанную с обменом программу (будем называть ее основной), а когда из ВУ по линии "Запрос прерывания" (рис. 1.1) поступит сигнал готовности ВУ к приему или выдаче информации, прервать (приостановить) выполнение этой программы на время выполнения программы обмена данными. Все эти действия осуществляются с помощью контроллера прерываний, входящего в состав устройства управления базовой ЭВМ.

Команды E I (Разрешение прерывания) и D I (Запрещение прерывания) переводят контроллер прерываний в одно из двух состояний, в которых он соответственно реагирует или не реагирует на сигналы готовности ВУ, передаваемые по линии "Запрос прерывания". Если контроллер прерываний установлен в состояние разрешения прерывания, то выполняются следующие действия.

Шаг 1. По завершению выполнения текущей команды основной программы управление передается контроллеру прерываний. Если в этот момент на линии "Запрос прерывания" нет сигнала о готовности какого-либо ВУ, то начинается выборка и исполнение следующей команды основной программы и данный шаг повторяется. При наличии запроса прерывания выполняется второй шаг.

Шаг 2. Контроллер прерываний переходит в состояние запрещения прерывания, в ячейку памяти с адресом 000 заносится содержимое СК (адрес следующей команды основной программы, которая выполнялась бы при отсутствии запроса прерывания), и управление передается команде расположенной в ячейке 001. Так происходит переход к подпрограмме обработки прерывания (с первой командой в ячейке 001), функции которой определяются содержанием следующих шагов.

Шаг 3. Производится запоминание в памяти содержимого аккумулятора и регистра переноса. Для этого требуется минимум три команды: пересылка содержимого аккумулятора в специально отведенную буферную ячейку (например, В1), циклический сдвиг содержимого аккумулятора влево (для того, чтобы содержимое регистра переноса попало в аккумулятор) и запись этого содержимого в другую буферную ячейку (например, В2). Таким образом, необходимый минимум информации о прерванной программе сохраняется - в ячейке 000 хранится адрес продолжения прерванной программы, а в ячейках В1 и В2 хранится содержимое двух других основных регистров А и С.

Шаг 4. Производится поиск источника прерывания. Для этого в любой, наиболее целесообразной, последовательности опрашиваются флаги всех ВУ (команда TSF). При обнаружении ВУ с установленным флагом (флаг=1) выполняется переход к тому участку подпрограммы, в котором описаны действия по обмену данными с этим ВУ.

Шаг 5. Выполняется передача данных и их предварительная обработка, если это необходимо.

Шаг 6. Восстанавливается содержимое регистра переноса и аккумулятора. Для этого требуется минимум пять команд: очистка аккумулятора, вызов содержимого ячейки В2 в очищенный аккумулятор, циклический сдвиг вправо для восстановления содержимого регистра переноса, очистка аккумулятора и вызов содержимого буферной ячейки В1 в очищенный аккумулятор.

Шаг 7. Контроллер прерываний вновь переводится в состояние разрешение прерывания (команда ЕI) и осуществляется возврат к выполнению прерванной программы, т.е. к команде, адрес которой хранится в ячейке 000 (команда BR (0)). Здесь следует отметить, что команда BR () должна располагаться непосредственно за командой ЕI. Иначе при появлении во время обработки прерывания будет стерт (заменен на новый) адрес возврата и путь возврата к прерванной программе будет разрушен.

Пример 2.2 Составить программу, которая периодически (с периодом в три цикла команды) наращивает на 1 содержимое аккумулятора. Восемь младших разрядов аккумулятора должны выводиться на ВУ-1 по его запросу, а по запросу ВУ-3 код, записанный в регистр данных контроллера ВУ-3, должен помещаться в ячейку 25.

Основная программа решения задачи примера 2.2

 

Содержимое

 
Адрес Код Мнемоника Комментарии
20 FA00 EI Установка состояния разрешения прерывания
21 F200 CLA Очистка аккумулятора
22 F800 INC Цикл для наращивания содержимого аккумулятора
23 F100 NOP  
24 C022 BR 22  
25 0000   Ячейка для хранения кодов, поступающих с ВУ-1

 

Подпрограмма обработки прерываний для примера 2.2

 

Содержимое

 
Адрес Код Мнемоника Комментарии
00     Ячейка для хранения адреса возврата (этот адрес будет занесен сюда на 2-м шаге)
01 C030 BR 30 Первая команда подпрограммы - переход к основному ее тексту, размещенному в ячейках 30-4С
.......... .........    
30 304B MOV 4B Сохранение в буферных ячейках 4В и 4С содержимого аккумулятора и регистра переноса (ШАГ 3)
31 F600 ROL  
32 304C MOV 4C  
33 E103 TSF 3 Опрос флага ВУ-3. Если он сброшен, то переход к опросу флага ВУ-1. В противном случае переход на ввод данных из ВУ-3
34 C036 BR 36  
35 C039 BR 39  
36 E101 TSF 1 Опрос флага ВУ-1. Если он сброшен, то переход к сбросу флага ВУ-2. В противном случае переход на вывод данных в ВУ-1.
37 C043 BR 43  
38 C03E BR 3E  
39 F200 CLA Ввод данных из ВУ-3, пересылка их в ячейку 25, сброс флага ВУ-3, переход к восстановлению содержимого основных регистров и выходу из подпрограммы
3A E203 IN 3  
3B E003 CLF 3  
3C 3025 MOV 25  
3D C044 BR 44  
3E F200 CLA Пересылка в аккумулятор содержимого буферной ячейки 4В, вывод на ВУ-1 восьми младших разрядов аккумулятора, сброс флага ВУ-1, переход восстановлению А и С и выходу из подпрограммы.
3F 404B ADD 4B  
40 E301 OUT 1  
41 E001 CLF 1  
42 C044 BR 44  
43 E002 CLF 2 Очистка флага ВУ-2 (ШАГ 5)
44 F200 CLA Восстановление содержимого регистра переноса и аккумулятора (ШАГ 6)
45 404C ADD 4C  
46 F700 ROR  
47 F200 CLA  
48 404B ADD 4B  
49 FA00 EI Возобновление состояния разрешения прерывания и выход из подпрограммы (ШАГ 7)
4A C800 BR (0)  
4B 0000   Ячейки для сохранения содержимого аккумулятора и регистра переноса
4C 0000    

Если команды этой программы занести в память базовой ЭВМ, установить в СК пусковой адрес 20 и нажать кнопку ПУСК, то начнет выполняться бесконечный цикл наращивания содержимого аккумулятора. Когда же на пульте управления (рис 1.1) будет нажата любая из трех кнопок ("Готов" ВУ1, ВУ2 или ВУ3), то будет выполнен переход к подпрограмме обработки прерываний. Она может быть построена по стандартной схеме (как в таблице) или в другой форме, учитывающий конкретные особенности реализуемой задачи.

 

Домашнее задание № 3



Поделиться:


Последнее изменение этой страницы: 2021-05-12; просмотров: 146; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.111.125 (0.005 с.)