
- •Базы данных
- •Вопрос 29 Основные функции систем управления базами данных
- •Вопрос 30 Реляционные базы данных
- •Базовые понятия реляционных баз данных
- •Фундаментальные свойства отношений
- •Недостатки реляционной модели баз данных
- •Вопрос 31 Реляционная модель данных
- •Вопрос 32 Манипулирование данными
- •Реляционная алгебра
- •Вопрос 33
- •Вопрос 34
- •Вопрос 36 Реляционное исчисление кортежей и доменов
- •Вопрос 38. Состав программного обеспечения информационно-управляющих систем
- •Вопрос 39. Программы организации и контроля вычислительного процесса
- •Вопрос 40. Особенности операционных систем реального времени
- •Вопрос 41. Операционная система реального времени qnx
- •Вопрос 42. Операционная система реального времени "Карусель"
- •Вопрос 43 Программа обработки прерываний
- •Вопрос 44. Программа включения оперативной задачи
- •Вопрос 45. Программа включения карусельной задачи
- •Вопрос 46 Программа start и подпрограмма zagr
Вопрос 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.