Очевидно, что возможный уровень вложения подпрограмм определяется числом ячеек памяти, которыми располагает стек. Следует помнить, что пространство памяти, отводимое для стека, не может одновременно использоваться другими частями программы.
Команды «вызов подпрограммы» имеют длину 3 байта. Во всех этих командах используется прямая адресация.
Существуют следующие виды команд вызова подпрограмм:
Безусловный вызов подпрограммы CALL, адрес
Вызов подпрограммы если нуль СZ, адрес
Вызов подпрограммы если не нуль CNZ, адрес
Вызов подпрограммы если перенос CC, адрес
Вызов подпрограммы если нет переноса CNC, адрес
Вызов подпрограммы если плюс CP, адрес
Вызов подпрограммы если минус CM, адрес
Вызов подпрограммы если чётный CPE, адрес
Вызов подпрограммы если нечётный CPO, адрес
Безусловный возврат из подпрограммы RET
Возврат из подпрограммы если нуль RZ
Возврат из подпрограммы если не нуль RNZ
Возврат из подпрограммы если перенос RC
Возврат из подпрограммы если нет переноса RNC
Возврат из подпрограммы если плюс RP
Возврат из подпрограммы если минус RM
Возврат из подпрограммы если чётный RPE
Возврат из подпрограммы если нечётный RPO
6.3. Задания к лабораторной работе
Задание №1.
В заданном массиве чисел (10x1) найти все числа, равные 910 и заменить их на 010.
Для этого необходимо:
а) составить программу обработки массива в соответствии со следующим алгоритмом:
1. Загрузить в один из РОН количество элементов массива.
2. Загрузить в регистровую пару HL начальный адрес массива.
3. Сравнить текущий элемент массива с числом 910.
4. Если числа не равны перейти к пункту 6.
5. Заменить текущий элемент массива числом 010.
6. Увеличить на 1 текущий адрес массива.
7. Уменьшить на 1 число элементов массива.
8. Если число элементов массива не равно 0, то перейти к п.3.
9. Останов.
Текст программы и исходные данные желательно расположить в адресном пространстве ОЗУ в соответствии с таблицей 6.1;
б) ввести исходный массив (при вводе массива предусмотреть не менее трех элементов, равных 910, а также наличие элементов больших и меньших 910) и выполнить программу в пошаговом режиме;
в) после выполнения каждого шага программы заносить в таблицу 6.2 содержимое регистров А, одного из РОН, H, L, а также состояние флагов нулевого результата и переноса;
г) прокомментировать установку флагов.
Таблица 6.1
Адрес |
Содержимое |
8000 … 81FF |
Текст программы |
8200 |
Массив |
… |
|
820А |
Таблица 6.2
№ шага |
Регистры |
Флаг нуля |
Флаг переноса |
Комментарий |
|||
А |
РОН |
H |
L |
||||
0 |
00 |
00 |
00 |
00 |
X |
X |
Исходные данные |
1 |
|||||||
2 |
Задание №2
Подсчитать сумму чисел заданного массива (10x1).
Для этого необходимо:
а) составить программу обработки массива в соответствии со следующим алгоритмом:
1. Загрузить в регистровую пару HL начальный адрес массива.
2. Загрузить в регистровую пару DE конечный адрес массива.
3. Загрузить в указатель стека адрес нижней границы стека.
4. Загрузить в регистр В начальное значение суммы элементов массива (00).
5. Произвести расчет суммы элементов массива (цикл):
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.