Программирование цикла с переадресацией

При решении задач, связанных с обработкой массивов, возникает необходимость изменения исполнительного адреса при повторном выполнении некоторых команд. Эта задача может быть решена путем использования косвенной адресации.

Пример

Разработать программу вычисления суммы элементов массива чисел С1, С2,..., Сп . Исходными данными в этой задаче являются: п — количество суммируемых чисел и С,, С2,..., С„ — массив суммируемых чисел. Заметим, что должно выполняться условие п > 1, т. к. алгоритм предусматривает, по крайней мере, одно суммирование. Кроме того, предполагается, что суммируемые числа записаны в ОЗУ подряд, т. е. в ячейки памяти с последовательными адресами. Результатом является сумма S.

Составим программу для вычисления суммы со следующими конкретными параметрами: число элементов массива— 10, элементы массива расположены в ячейках ОЗУ по адресам 040, 041, 042,..., 049. Используемые для решения задачи промежуточные переменные имеют следующий смысл: А, — адрес числа С,, / е {l, 2,..., 10); ОЗУ( Аг ) — число по адресу At, S — текущая сумма; к — счетчик цикла, определяющий число повторений тела цикла. Распределение памяти таково. Программу разместим в ячейках ОЗУ, начиная с адреса 000, примерная оценка объема программы — 20 команд; промежуточные переменные: At — в ячейке ОЗУ с адресом 030, к — по адресу 031, S — по адресу 032. ГСА программы показана на рис. 9.2, текст программы с комментариями приведен в табл. 9.7.

Программирование цикла с переадресацией - student2.ru

Таблица 9.7.Текст программы примера 3

Адрес Команда Примечание
RD #40 Загрузка начального адреса массива 040
WR 30 в ячейку 030
RD #10 Загрузка параметра цикла к — 10 в ячейку 031
WR 31  
RD #0 Загрузка начального значения суммы S = 0
WR 32 в ячейку 032
Ml: RD 32 Добавление
ADD @30 к текущей сумме
WR 32 очередного элемента массива
RD30 Модификация текущего
ADD #1 адреса массива
WR 30 (переход к следующему адресу)
RD 31 Уменьшение счетчика
SUB #1 (параметра цикла)
WR 31 на 1
JNZ Ml Проверка параметра цикла и переход при к ≠ 0
RD 32 Вывод
OUT результата
HLT Стоп
           

Задание

1. Написать программу определения заданной характеристики последовательности чисел С,, С2,..., Сп .Варианты заданий приведены в табл. 9.8.

2. Записать программу в мнемокодах, введя ее в поле окна Текст программы.

3. Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов.

4. Загрузить в ОЗУ необходимые константы и исходные данные.

5. Отладить программу.

Таблица 9.8. Варианты задания

Номер варианта Характеристика последовательности чисел С,, С2,..., Сп
Количество четных чисел
Номер минимального числа
Произведение всех чисел
Номер первого отрицательного числа
Количество чисел, равных С
Количество отрицательных чисел
Максимальное отрицательное число
Номер первого положительного числа
Минимальное положительное число
Номер максимального числа
Количество нечетных чисел
Количество чисел, меньших Сх
Разность сумм четных и нечетных элементов массивов
Отношение сумм четных и нечетных элементов массивов

Примечание. Под четными (нечетными) элементами массивов понимаются элементы массивов, имеющие четные (нечетные) индексы. Четные числа — элементы массивов, делящиеся без остатка на 2.

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

7. Произвести разработку алгоритма программы реализующую обработку массива через стек.

Содержание контрольной

1. Формулировка варианта задания.

2. Граф-схема алгоритма решения задачи.

3. Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант).

4. Программа.

5. Значения исходных данных и результата выполнения программы.

6. Ответы на контрольные вопросы.

Контрольные вопросы

1. Как организовать цикл в программе?

2. Что такое параметр цикла?

3. Как поведет себя программа, приведенная в табл. 9.7, если в ней будет отсутствовать команда wr 31 по адресу 014?

4. Как поведет себя программа, приведенная в табл. 9.7, если метка Ml будет поставлена по адресу 005? 007?

Наши рекомендации