Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры к госам.doc
Скачиваний:
7
Добавлен:
01.04.2025
Размер:
7.08 Mб
Скачать

18. Программирование циклов (Женатов)

Цикл в программе – это средство, позволяющее с помощью прямой команды выполнить какие-то действия много раз. Цикл – это группа команд, выполнение которых многократно повторяется за счет того, что в этой группе есть команда, возвращающая управление снова и снова на первую команду в группе, пока не выполнится некоторое условие окончание цикла.

Рассмотрим пример, когда вычисляется сумма N чисел. Для решения нужно последовательно прибавлять каждое число к текущей частной суммы. В качестве счетчика можно использовать регистр, начальное состояние которого можно установить до первого повторения (до начало итерации) и затем проверить (тестировать) и модифицировать при каждой новой итерации.

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

Программа вычисления суммы 10 чисел с организацией цикла

Ячейка памяти

Символическое обозначение

Примечания

0000

0001

0002

0003

LRI H

00

LRI L

16

Загрузка в регистры H и L адреса первого числа

0004

0005

LRI 3

0A

Загрузка в регистр 3 числа 10

0006

0007

LRI 4

01

Загрузка в регистр 4 числа 1 (число, вычитаемое из счетчика)

0008

0009

LRI 5

00

Загрузка в регистр 5 числа 0 (здесь будет сумма)

000A

MOV 0 from 5

Передача в Асс с регистра 5 суммы чисел

000B

АDD F

Суммирование первого числа с суммой

000C

MOV 0 to 5

Передача суммы в регистр 5

000D

IHL

Увеличение числа в регистре H и L на 1

000E

MOV 0 from 3

Передача в Асс содержимого счетчика (регистр 3)

000F

SUB 4

Вычитание из содержимого счетчика 1

0010

MOV 0 to 3

Передача значения счетчика в регистр 3

0011

0012

0013

JAN

00

0A

Проверка Асс на неравность нулю

0014

HLT

Остановка

Ячейка

0016

0017

0018

0019

001А

001В

001С

001D

001E

001F

№ числа

1

2

3

4

5

6

7

8

9

10

Первые пять команд – инициализирующая часть общие регистры Н и L используются в качестве 16-битового указателя, содержащего адрес очередного прибавленного числа.

Первые две команды заносят в Н и L адрес первого числа. Затем в регистр 3 помещается начальное значение равное 10.

Регистр 3 будет выполнять функции счетчика количества суммируемых чисел, которые программе еще предстоит обработать. Сумма накапливается в регистре 5. Четвертая команда устанавливается от общего регистра 5 в нулевое состояние. Пятая команда загружает в общем, регистре 5 константу 1, которая будет вычитаться из счетчика в процессе суммирования чисел. C 6 по 9 команды – рабочая часть цикла, в которой происходит суммирование к существующей сумме очередного числа, увеличение содержимого регистра H и L на единицу и определение количества циклов. Остальные команды программы служат для тестирования конца цикла и модификации.Сначала команда IHL модифицирует регистры Н и L, так чтобы они содержали адрес данных, которые должны отрабатываться при следующей итерации. Затем содержимое счетчика цикла передается в Асс и уменьшается на 1 и снова возвращается в регистр 3. Значение счетчика проверяется, нужно ни продолжать итерации или вычисление завершить. Когда в Асс 0, то это условие тестируется командой «условный переход при ненулевом аккумуляторе». Если в Асс 0, тогда переход не происходит и программа выходит на команду остановить.