Команды вызова подпрограммы и возврата
CALL < B3> < B2> – вызов подпрограммы по адресу < B3> < B2>, указанному во втором и третьем байтах команды; RET – возврат из подпрограммы.
3.1 Записать в память программу подсчета контрольной суммы массива (таблица 80), использующую команду вызова подпрограммы сравнения содержимого пар рег. HL и DE (таблица 81).
Таблица 80 – Контрольная программа подсчета контрольной суммы массива, использующая подпрограмму сравнения содержимого пар регистров
Таблица 81 – Подпрограмма сравнения содержимого пар регистров HL и DE
3.2 Выполнить программу:
СТ0840 0855ВП. Определить значение контрольной суммы заданного массива (содержимое регистра В). Сравнить полученное значение с результатом подсчета контрольной суммы с помощью команды ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ системной программы МОНИТОР, они должны совпадать. Записать в отчет полученное значение контрольной суммы.
3.3 Выполнить программу поэтапно, устанавливая точки останова (ТО) в соответствии с таблицей 82:
СТ0840Н ТОВП.
Записать в таблицу 82 содержимое указателя стека SP в точках останова.
Таблица 82 – Результаты выполнения контрольной программы подсчета контрольной суммы массива
В точке останова ТО3 посмотреть содержимое ячеек памяти с адресами SP, SP+1. В них должны находиться мл. и ст. байты адреса возврата (таблица 83).
Таблица 83 – Содержимое стека в точке останова ТО3
Задание 2: Написать с адреса 0А20Н проверочную программу подсчета контрольной суммы массива. 1 Заполнить массив (0А50Н…0А6FН) константой ЕЕН: – начальный адрес массива загрузить в пару регистров HL; – константу ЕЕН загрузить в регистр D; – заполнение массива константой оформить в виде цикла; – счетчик циклов организовать на регистре Е. 2 Подсчитать контрольную сумму этого массива (без учета переноса): – подсчет контрольной суммы оформить как подпрограмму; – значение контрольной суммы записать в регистр С; – начальный адрес подпрограммы 0950Н; – нижняя граница стека 0В50Н. 3 Алгоритм решения задачи и алгоритм подпрограммы представлены на рисунках 5 и 4 соответственно. 4 Программу и подпрограмму записать в таблицы, аналогичные по форме таблицам 80 и 81 соответственно. 5 Записать в память УМК и выполнить проверочную программу подсчета контрольной суммы. Указать в отчете значение контрольной суммы. Полученное значение контрольной суммы сравнить с результатом, полученным при использовании команды ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ системной программы МОНИТОР, они должны совпадать. 6 Выполнить программу поэтапно, устанавливая точки останова аналогично контрольной программе (таблицы 80 и 81). Результаты записать в таблицы, аналогичные по форме таблицам 82 и 83. Сделать выводы о содержимом указателя стека в каждой точке останова и содержимом стека в ТО3.
Рисунок 4 – Алгоритм подпрограммы подсчета контрольной суммы
Рисунок 5 – Алгоритм решения задачи
ЛАБОРАТОРНАЯ РАБОТА № 20
|