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

Вопрос 43 Программа обработки прерываний

Программа состоит из двух частей: индивидуальной и общей. Индивидуальная часть программы содержит по 8 ячеек для каждого уровня прерываний и осуществляет запись в стек содержимого регистров Н, L, D и Е.

При выполнении оператора 3 в регистр D заносится уровень приорите­та прерывающей программы, а в регистр Е - номер строки таблицы перехо­дов GDIR, в которой указан адрес начала прерывающей программы включе­ния оперативной задачи. В операторе 3 программы приведена формула, по­зволяющая определить содержимое регистров D и Е по уровню приоритета

программы.

Обратите внимание на то, что переход к оперативной программе осу­ществляется по команде JMP (команда трёхбайтная).

Операторы 6 и 7общей части программы обработки прерывании OBPR осуществляют запись в стек содержимого регистров PSW и ВС, операторы 8 и 9 записывают уровень приоритета прерываемой программы в стек. Уровень приоритета прерывающей программы, хранящийся в регистре D, заносится в ячейку GSTAC и в регистр контроллера прерываний (адрес контроллера пре­рываний - 00h). Новая программа станет текущей, и будут разрешены только уровни прерываний выше уровня приоритета новой программы.

По команде 14 в регистры Н и L записывается адрес начала таблицы переходов GDIR, операторы 15 и 16 осуществляют переход к соответствую­щей строке таблицы переходов GDIR.

Вопрос 44. Программа включения оперативной задачи

Таких программ столько, сколько имеется уровней приоритета опера­тивных задач (в системе микро-ДАТ - шесть).

Командами 2,3 и 4 указатель стека прерываемой задачи записывается в регистры Н и L и таблицу GSTAC, номера ячеек которой определяются по номеру уровня приоритета прерывающей программы, и адрес записи млад­шего байта вычисляется по приведённой в таблице формуле. По команде CALL осуществляется переход к подпрограмме, определяющей указатель стека прерывающей программы. Если прерывается оперативная задача, то указатель стека не изменяется (запись в регистрах Н и L не изменится). При прерывании карусельной задачи в регистры Н и L будет записано дно сис­темного стека. Оператор 6 переписывает содержимое регистров Н и L в ре­гистр указателя стека, оператор 8 осуществляет переход к оперативной про­грамме пользователя PP. После выполнения этой программы операторами 10 и 11 возвращается в регистр указателя стека адрес вершины стека ранее пре­рванной программы и происходит переход к подпрограмме WPR, которая произведёт восстановление регистров. Команды 14, 15 и 16 перепишут уро­вень приоритета восстанавливаемой программы в ячейку GSTAC и контрол­лер прерываний. Этим самым восстанавливаемая программа станет текущей и будут разрешены прерывания задачам, имеющим уровень приоритета выше уровня приоритета включаемой задачи. Команды 17, 18, 19 и 20 восстановят записи в указанных в программе регистрах, по команде RET произойдет пе­реход к программе (в регистры PC будет записан адрес возврата в програм­му).

Таблица 2.5

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