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

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

Эта программа приведена в табл. 2.6.

Оператором 2 осуществляется переход к подпрограмме пользователя TIME, контролирующей своевременность решения данной карусельной задачи. Операторы 3 и 4 обнуляют последние две ячейки таблицы BANK, операторы 5 и 6 записывают в регистровую пару DE указатель стека прерываемой карусельной задачи. Команда 7 заносит в регистровую пару HL номер строки таблицы BANK, куда командами 8, 9 и 10 записывается указатель стека прерываемой задачи. Выполнение оператора 11 приводит к тому, что в регистровой паре HL оказывается записанным адрес строки таблицы BANK, где записан указатель стека новой карусельной задачи. Эта задача делается теку щей (содержимое регистровой пары HL переписывается в ячейки BANK и BANK+1), и операторами 13..17 проверяется ненулевое значение чисел за­писанных в адресуемых регистровой парой HL двух ячейках таблицы BANK (наличие нулей в обеих ячейках свидетельствует о том, что была прервана последняя карусельная задача). Если прерывается не последняя задача, то командой 21 в регистры указателя стека переписывается вершина стека новой задачи, команда 22 включает таймер, а команда 23 осуществляет переход к подпрограмме WPR. Если при выполнении операторов 13..17 окажется, что была прервана последняя карусельная задача (обнаружен конец таблицы BANK) в регистровую пару HL оператором 19 записывается адрес строки таблицы BANK, где хранится указатель стека первой карусельной задачи и осуществляется переход к оператору 12.

Таблица 2.6

Вопрос 46 Программа start и подпрограмма zagr

Указанные в заголовке программа и подпрограмма инициализируют внешние устройства, программируют таймер на квант выполнения карусель ной задачи (10 мс), формируют вершину каждого стека и заполняют таблицу BANK.

Первая команда предусматривает переход к программе пользователя, служащей для инициализации внешних устройств. Операторы 2..5 програм­мируют таймер на время 10 мс. В устройствах микро-ДАТ используется тай­мер, имеющий четыре диапазона (миллисекундный -10 .. 2550 мс, секундный - L.255 с, минутный - 1..255 мин. и часовой 1..255 ч). Адреса портов таймера 30h..36h. В регистр таймера, имеющий адрес 30п, записывается число, определяющее выбранный диапазон выдержек времени, регистр с адресом 31h -значение выдержки времени (в миллисекундном диапазоне можно устано­вить выдержки времени от 10 до 2550 мс, кратные 10 мс). Пуск таймера про­исходит по команде IN 36.

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

Операторы 8,9,10 и 11 выполняют следующие действия:

- в регистровую пару HL записывается адрес возврата из подпрограм­мы Z AGR;

- в регистровую пару DE заносится адрес начала первой карусельной

программы;

- в регистровую пару SP записывается адрес дна стека;

- по команде 11 осуществляется переход к подпрограмме ZAGR. Примечание. Для обращения к подпрограмме ZAGR нельзя использо­вать команды, вызывающие обращение к стеку CALL и RET.

Рассмотренный блок команд повторяется столько раз, сколько имеется

карусельных задач.

Команды (N+4)..(N+7) обнуляют последние две ячейки таблицы BANK, (№-8)..(N+13) включают первую карусельную задачу:

- в регистровую пару ВС записывается адрес ячейки хранения указате­ля стека первой карусельной задачи (младший байт);

- этот адрес переписывается в ячейки BANK и BANK+1;

- содержимое ячеек BANK+2 и BANK+3 переносится в регистр стека

SP (команды N+10 и N+11).

Команда IN 36 запускает таймер, после этого осуществляется переход к

подпрограмме восстановления регистров WPR.

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

Команды 1..6 формируют вершину стека карусельной задачи. Посколь­ку задача ещё не выполнялась, в регистровые пары записываются произволь­ные числа. И только имеет смысл запись в регистре команд PC, куда занесёь стартовый адрес карусельной задачи. По команде 6 в стек записывается уро

вень приоритета (OOh).

Команды 8.. 14 переносят адрес дна стека карусельной задачи сначала ] регистровую пару HL, затем в соответствующие строки таблицы BANK. Инкремент регистровой пары ВС (команда 15) приводит к тому, что в ней буде записан адрес строки таблицы BANK, предназначенной для следующей карусельной задачи.

Команда 18 осуществляет переход к программа START.

31

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