Практическая работа № 3. Команды управления и ветвления
Цель работы:
1. Изучение команд управления ходом вычислений для модельной ЭВМ.
2. Разработка программы реализующей ветвящийся вычислительный процесс на модели учебной ЭВМ.
Теоретические сведения:
Команды управления модельной ЭВМ
К этому классу команд относятся, которые изменяют естественный порядок выполнения команд программы. Эти команды меняют содержимое программного счетчика, обеспечивая переходы по программе. Существуют следующие виды команд управления:
- команды переходов;
- команды вызова подпрограмм (процедур);
- системные команды управления процессом обработки информации и внутренними ресурсами процессора.
1. Команды передачи управления;
Различают два вида переходов в программах:
- безусловный переход;
- условный переход.
В последнем случае передача управления происходит, если выполняется заданное в коде команды условие, иначе выполняется следующая по порядку команда.
В качестве условий обычно используются признаки результата предыдущей операции, которые хранятся в специальном регистре признаков (флажков). Чаще всего формируются и проверяются признаки:
- нулевого результата;
- отрицательного;
- результата;
- наличия переноса из старшего разряда;
- четности числа единиц в результате и др.
Различают три разновидности команд передачи управления:
- переходы;
- вызовы подпрограмм;
- возвраты из подпрограмм.
Команды переходов помещают в программный счетчик содержимое своего адресного поля — адрес перехода. При этом старое значение программного счетчика теряется. В микро-ЭВМ часто для экономии длины адресного поля команд условных переходов адрес перехода формируется как сумма текущего значения программного счетчика и относительно короткого знакового смещения, размещаемого в команде. В крайнем случае, в командах условных переходов можно и вовсе обойтись без адресной части — при выполнении условия команда "перепрыгивает" через следующую команду, которой обычно является безусловный переход.
2. Команда вызова подпрограмм работает подобно команде безусловного перехода, но старое значение программного счетчика предварительно сохраняется в специальном регистре или в стеке. Команда возврата передает содержимое верхушки стека или специального регистра в программный счетчик. Команды вызова и возврата работают "в паре". Подпрограмма, вызываемая командой вызова, должна заканчиваться командой возврата, что обеспечивает по окончании работы подпрограммы передачу управления в точку вызова. Хранение адресов возврата в стеке обеспечивает возможность реализации вложенных подпрограмм.
3. Системные— команды, выполняющие управление процессом обработки информации и внутренними ресурсами процессора. К таким командам относятся:
- команды управления подсистемой прерывания;
- команда загрузки PSW – Program Status Word (слово состояния программы);
- команды установки флагов в регистре состояния процессора;
- команды установки и изменения параметров защиты памяти;
- команда останова программы;
- и некоторые другие команды, например команда диагностики работы.
В простых процессорах класс системных команд немногочисленный, а в сложных мультипрограммных системах предусматривается большое число системных команд.
Задания для выполнения:
1. Ознакомиться с теоретическими сведениями о командах управления модельной ЭВМ.
2. Запустите программу CompModel.exe.
3. Выполнить пример. В качестве примера рассмотрим программу вычисления функции:
Причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис.1.
В данном примере используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда.
Оценив размер программы примерно в 20—25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде табл. 1.
Таблица 1.Пример программы
Адрес | Команда | Примечание | |
Мнемокод | Код | ||
IN | 010 000 | Ввод х | |
WR 30 | 22 0 030 | Размещение x в ОЗУ(ОЗО) | |
SUB #16 | 24 1016 | Сравнение с границей — (х -16) | |
JS 010 | Переход по отрицательной разности | ||
RD 30 | 210 030 | Вычисления по первой формуле | |
SUB #11 | 24 1 011 | ||
WR 31 | 22 0 031 | ||
MUL 31 | 25 0 031 | ||
SUB #125 | 24 1 125 | ||
JMP 020 | 10 0 020 | Переход на вывод результата | |
RD 30 | 21 0 030 | Вычисления по второй формуле | |
MUL 30 | 25 0 030 | ||
WR 31 | 22 0 031 | ||
RD 30 | 210 030 | ||
MUL #72 | 25 1 072 | ||
ADD 31 | 23 0 031 | ||
ADI 106400 | 43 0 000 | ||
DIVI 100168 | 46 0 000 | ||
OUT | 02 0 000 | Вывод результата | |
HLT | 09 0 000 | Стоп |
4. Разработать программу вычисления и вывода значения функции:
4.1 Для вводимого из IR значения аргумента х. Функции и допустимые пределы изменения аргумента приведены в табл. 2, варианты заданий — в табл. 3.
4.2. Исходя из допустимых пределов изменения аргумента функций (табл. 2) и значения параметра а для своего варианта задания (табл. 3) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.
4.3. Ввести текст программы в окно Текст программы,при этом возможен набор и редактирование текста непосредственно в окне Текст программыили загрузка текста из файла, подготовленного в другом редакторе.
4.4. Ассемблировать текст программы, при необходимости исправить синтаксические ошибки.
4.5. Отладить программу. Для этого:
а) записать в IR значение аргумента х > а (в области допустимых значений);
б) записать в PC стартовый адрес программы;
в) проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 4.5г и 4.5д; иначе перейти к п. 4.5е;
г) записать в PC стартовый адрес программы;
д) наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 4.5, a— 4.5, в;
е) записать в IR значение аргумента х < а (в области допустимых значений); выполнить пп. 4.5би 4.5в;
ж) записать в IR недопустимое значение аргумента х и выполнить пп. 4.5би 4.5в.
6. Для выбранного допустимого значения аргумента х наблюдать выполнение отлаженной программы в режиме Шаг и записать в форме табл. 4 содержимое регистров ЭВМ перед выполнением каждой команды.
Таблица 2. Функции
Таблица 3. Варианты задания
Номер варианта | i | j | а |
-20 | |||
Таблица 4. Результаты выполнения программы
PC | Асс | М(хх) | М(нн) | PC | Асс | М(мм) | М(оо) |
Содержание отчета
Отчет о практическая работе должен содержать следующие разделы:
1. Формулировка варианта задания.
2. Граф-схема алгоритма решения задачи.
3. Размещение данных в ОЗУ.
4. Программа в форме табл. 1.
5. Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.
6. Результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.