Лабораторная работа №3. Программирование цикла с переадресацией

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

Необходимость косвенной адресации в арифметических и посылочных командах исключает возможность использования в программе относительной адресации для создания перемещаемой области данных. В таких случаях имеет смысл разрабатывать перемещаемую программу.

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

Пример 2.7. Разработка программы вычисления суммы чисел С1, С2,…, СN.

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

Исходными данными в этой задаче являются N – количество суммируемых чисел и С1, С2,…, СN – суммируемые числа. Заметим, что должно выполняться условие N ≥1, т.к, алгоритм предусматривает по крайней мере одно суммирование. Кроме того, предполагается, что суммируемые числа записаны в ОП подряд. Результатом является сумма S. Используемые для решения задачи промежуточные переменные имеют следующий смысл: A1 – адрес C1, Ai – адрес Ci, AN+1 – увеличенный на единицу адрес CN.

Ø

Рис. 2.2. Граф-схема решения задачи

Таблица 2.7

Программа с действительными адресами операндов и относительными адресами переходов

Относительный адрес Символическая команда Код команды Комментарий
КОП ТА А
  ВВ - -   АК:=N
  ЗП П     ОП [00]:=N
  ЧТ Н     АК:= 0
  ЗП П     S:= 0
  ЧТ П     АК:=А1
  ЗП П     Аi:=A1
  СЛ П     АК:=А1+ N
  ЗП П     АN+1:=A1+N
  ЧТ П     АК:=S
  СЛ К     АК:=S+ОП [Ai]
  ЗП П     S:=S+ОП [Ai]
  ЧТ П     АК:=Аi
  СЛ Н     АК:=Аi+1
  ЗП П     Аi:= Аi+1
  ВЫЧ П     АК:=Аi-AN+1
  УПЗН О     Перейти по адресу РБА+08, если Ai<AN+1
  ЧТ П     АК:=S
  ВЫВ - -   РВЫВ:=S
  ОСТ - -   ОСТАНОВ

В процессе разработки программы для переменных N, S, А1, Ai, AN+1 выделены ячейки ОП с адресами соответственно 00, 01, 02, 03, 04. Программа может быть размещена в ОП начиная с ячейки 05. Базовый адрес в этом случае должен быть равен 05. Суммируемые числа могут быть записаны в ОП начиная с ячейки 24. В этом случае в ячейку 02 должна быть записана константа 00024.

ЗАДАНИЕ

1. Разработать перемещаемую программу определения заданной характеристики последовательности чисел С1, С2, …, СN. Варианты заданий приведены в табл. 2.8.

2. Записать программу, необходимые константы и исходные данные в ОП ЭВМ.

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

Таблица 2.8

Варианты задания

№ Варианта Характеристика последовательности чисел С1, С2, …, СN
  Количество положительных чисел
  Номер минимального числа
  Произведение всех чисел
  Номер первого отрицательного числа
  Количество чисел, равных С1
  Количество отрицательных чисел
  Максимальное число
  Номер первого положительного числа
  Минимальное число
  Номер максимального числа
  Количество нулей
  Количество чисел, меньших С1

Содержание отчета

1. Формулировка варианта задания (см. п.1 «Задания», таб. 2.8).

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

3. Программа.

4. Размещение в ОП переменных, программы и необходимых констант, значение базового адреса.

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



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: