Программирование разветвляющегося процесса
Для реализации алгоритмов, пути в которых зависят от исходных данных, используют команды условной передачи управления.
Пример
В качестве примера (несколько упрощенного по сравнению с заданиями лабораторной работы № 2) рассмотрим программу вычисления функции
причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис. 9.1.
В данной лабораторной работе используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда.
Оценив размер программы примерно в 20—25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде табл. 9.4.
Таблица 9.4.Пример программы
Адрес | Команда | Примечание | |
Мнемокод | Код | ||
IN | 010 000 | Ввод х | |
WR 30 | 22 0 030 | Размещение х в ОЗУ(ОЗО) | |
SUB #16 | 24 1 016 | Сравнение с границей — (д: —16) | |
JS 010 | Переход по отрицательной разности | ||
RD 30 | 21 0 030 | Вычисления по первой формуле | |
SUB #11 | 24 1011 | ||
WR 31 | 22 0 031 | ||
MUL 31 | 25 0 031 | ||
SUB #125 | 24 1125 | ||
JMP 020 | 10 0 020 | Переход на вывод результата | |
RD 30 | 210 030 | Вычисления по второй формуле | |
MUL 30 | 25 0 030 | ||
WR 31 | 22 0 031 | ||
RD 30 | 210 030 | ||
MUL #72 | 25 1072 | ||
ADD 31 | 23 0 031 | ||
ADI 106400 | 43 0 000 | ||
DIVI 100168 | 46 0 000 | ||
Адрес | Команда | Примечание | |
Мнемокод | Код | ||
OUT | 02 0 000 | Вывод результата | |
HLT | 09 0000 | Стоп |
1. Разработать программу вычисления и вывода значения функции:
для вводимого из IR значения аргумента х. Функции и допустимые пределы изменения аргумента приведены в табл. 9.5, варианты заданий — в табл. 9.6.
2. Исходя из допустимых пределов изменения аргумента функций (табл. 9.5) и значения параметра а для своего варианта задания (табл. 9.6) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.
3. Ввести текст программы в окно Текст программы,при этом возможен набор и редактирование текста непосредственно в окне Текстпрограммы или загрузка текста из файла, подготовленного в другом редакторе.
4. Ассемблировать текст программы, при необходимости исправить синтаксические ошибки.
5. Отладить программу. Для этого:
а) записать в IR значение аргумента ;x>а (в области допустимых значений);
б) записать в PC стартовый адрес программы;
в) проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 5, г и 5, д; иначе перейти к п. 5, е;
г) записать в PC стартовый адрес программы;
д) наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 5, а — 5, в;
е) записать в IR значение аргумента х < а (в области допустимых значений); выполнить пп. 5, б и 5, в;
ж) записать в IR недопустимое значение аргумента х и выполнить пп. 5, б и 5, в.
6. Для выбранного допустимого значения аргумента х наблюдать выполнение отлаженной программы в режиме Шаг (не менее 10 шагов) и записать в форме табл. 9.2 содержимое регистров ЭВМ перед выполнением каж.дой команды.
7. В выполняемой программе обеспечить вывод значений Х на монитор. Предусмотреть обработку нажатия клавиши, для прерывания расчета. Опрос клавиатуры организовать через систему прерываний.
8. Произвести расчет для значении х а-10, а-7, а-5, а-3, а, а+3, а+5, а+7, а+10. Результат оформить в виде таблицы.
Таблица 9.6.Варианты задания 2 | |||||||
Номер варианта | Номер варианта | ||||||
-20 | |||||||
Содержание контрольной работы
Работа должна содержать следующие разделы:
1. Формулировка варианта задания.
2. Граф-схема алгоритма решения задачи.
3. Размещение данных в ОЗУ.
4. Программа в форме табл. 9.4.
5. Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.
6. Результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.
7. Ответы на контрольные вопросы
Контрольные вопросы
1. Как работает механизм косвенной адресации?
2. Какая ячейка будет адресована в команде с косвенной адресацией через ячейку 043, если содержимое этой ячейки равно 102 347?
3. Как работают команды передачи управления?
4. Что входит в понятие "отладка программы"?
5. Какие способы отладки программы можно реализовать в модели?
Задание для четных вариантов