Система команд микропроцессора КР580вм80а на базе микро-ЭВМ "Электроника 580". Технические характеристики микро-ЭВМ, страница 16

Очевидно, что возможный уровень вложения подпрограмм определяется числом ячеек памяти, которыми располагает стек. Следует помнить, что пространство памяти, отводимое для стека, не может одновременно использоваться другими частями программы.

Команды «вызов подпрограммы» имеют длину 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. Произвести расчет суммы элементов массива (цикл):