Алгоритм циклической структуры — алгоритм, в котором предусмотрено неоднократное выполнение одной и той же последовательности действий. Эту последовательность предписанных действий называют циклом. Циклический алгоритм позволяет существенно сократить объем программы.
Для организации цикла необходимо задать: начальное назначение параметра цикла — значение переменной, которая будет изменяться при повторяемых циклах; изменение значения параметра цикла перед каждым повторением цикла; проверку условия выхода из цикла и переход к началу цикла, если условие не выполнено. Для организации цикла в программе используются команды сравнения и логические: ANA, ANI, XRA, XRI, ORA, ORI, CMP, CPI.
Инкрементирование (декрементирование) данных в регистрах или ячейках памяти: INR, DCR, INX, DCX и команды условных переходов: JC, JNC, JZ, JNZ, JP, JRE, JRO.
Типовая блок-схема циклического алгоритма представлена на рис.4.1.
В блоке 1 устанавливается адрес счетчика команд начала программы. В блок 2 с помощью команды пересылки MUI устанавливается значение счетчика (количество повторений цикла). В блоке 3 помещается основная программа вычислительного процесса. В блоке 4 программируется увеличение (уменьшение) на единицу содержимого регистров, в которых хранятся адреса памяти переменных вычислительного процесса и счетчика циклов. В блоке 5 производится проверка равенства 0 счетчика циклов. Содержимое счетчика циклов проверяется с помощью любой из команд сравнения и по результатам сравнения программируется условный переход на начало цикла или окончание программы. В блоке 6 программируется конец программы с помощью команды END.
В качестве примера выполнения циклического алгоритма служит программа перезаписи «память — память» (табл. 4.1).
Программа выполняет переписывание информации из одной области памяти с начальным адресом NAM в другую с начальным адресом VAM. В область памяти с начальным адресом NAM предварительно вносится необходимая информация.
Рис.4.1.
Таблица 4.1
ORG
815H
;определение начала программы
MVI H,
CONST
;загрузить в Н значение счетчика
LXI B,
NAM
;загрузить в ВС начальный адрес исходной области памяти
LXI D,
VAM
;загрузить в DE начальный адрес выходной области памяти
MO:
LDAX B
;загрузить в аккумулятор байт данных из памяти, адрес который находиться в регистре ВС
STAX D
;переписать из аккумулятора информацию по адресу, находящемуся в DE