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

      Комментарии к записи Программирование цикла с переадресацией отключены

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

Пример

Разработать программу вычисления суммы элементов массива чисел С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.

Таблица 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?

Статьи к прочтению:

Паскаль с нуля [ч6]. Циклы. While, repeat-until, for.


Похожие статьи: