Реализация управляющих структур высокого уровня
К управляющим структурам высокого уровня относят:
оператор ветвления { if-then-else };
цикл с известным числом шагов {for};
цикл с предусловием {while};
цикл с постусловием {do-until};
оператор выбора {case}.
Рассмотри примеры организации некоторых управляющих структур высокого уровня.
1. Конструкция if-then-else:
MOV reg, var1
CMP reg,var2
Jcc then ; проверка условия
JMP else
then: ; ветвь then
{команды выполняемые если условие истинно}
JMP end_if
else: ; ветвь else
{ команды выполняемые если условие ложно }
end_if:
2. Конструкция for
MOV cx,число_шагов
cycle:
{тело цикла}
LOOP cycle ; уменьшить число шагов на 1 и если не ноль процесс повтори
3. Конструкция while
MOV ax,var1
while:
CMP ax,var2
Jcc begin ; условие входа в цикл
JMP end_while ; выход, если условие входа в цикл ложно
begin:
{тело цикла}
JMP while ; проверить условие для продолжения цикла
end_while:
4. Конструкция do-until
do:
{тело цикла}
CMP ax,var2
Jcc do ; условие повторения тела цикла
5. Конструкция case
case:
CMP ax,var_1
JE action_1 ; перейти к действиям если совпало со значением var_1
CMP ax,var_2
JE action_2 ; перейти к действиям если совпало со значением var_2
. . . . . . . . . . . . .
CMP ax,var_n
JE action_n ; перейти к действиям если совпало со значением var_n
JMP else ; перейти к действиям в остальных случаях
action_1:
{действие1}
JMP end_case
action_2:
{действие2}
JMP end_case
. . . . . . . . . . . . .
action_n:
{действие1}
JMP end_case
else:
{действие в остальных случаях}
end_case:
В примерах проверяемое условие было получено путем сравнения, но может быть проверяемое условие и по результатам логических операций (например проверка бита(ов) с помощью команды TEST) или как результат последовательности арифметических операций. Так же в примерах считалось, что проверяемые условия простые. Но условия могут быть и составными, например несколько простых условий объединены логическими операциями (И, ИЛИ). Следует помнить, что результат составного условия, полученного путем объединения простых условий операцией «И» - ложь, если хотя бы одно из простых условий ложно, а результат составного условия, полученного путем объединения простых условий операцией «ИЛИ» - истинно, если хотя бы одно из простых условий истинно.
2. Задание для домашней подготовки.
Повторить команды условных и безусловных переходов микропроцессора і8086;
Повторить назначение флагов регистра флагов микропроцессора і8086;
Повторить адресацию операндов в командах микропроцессора і8086;
Повторить типы данных для микропроцессора і8086;
3. Порядок выполнения работы.
Ознакомиться с заданием и проанализировать его.
Составить алгоритм решения поставленной задачи.
Составить программу согласно заданию в кодах.
Набрать текст составленной программы в текстовом редакторе отладчика.
Выполнить трансляцию программы (в случае возникновения ошибок исправить их).
Сделать пошаговое выполнение программы и убедиться в правильности ее работы (в случае неправильности внести исправления в алгоритм и текст программы и повторить п.5-6)
