Работ № 05. Программирование ветвлений и циклов
1 ЦЕЛЬ РАБОТЫ: закрепление знаний по командам
условного и безусловного переходов и циклов в
программах на
языке ассемблера, а также приобретение
навыков написания программ с циклами.
2 ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
2.1. Команды условного перехода
Команды передачи управления изменяют естественный
порядок выполнения команд программы. Их можно
разделить на 3 подгруппы (см. приложение 1). В
мнемонические обозначения команд условного перехода
входят буквы, определяющие
условие в соответствии с
таблицей 1.
Таблица 1. Мнемокоды команд условного перехода
Мнемокод
Условие
Тип операндов
E
равно
любые
N
не равно
любые
G
>
знак. числа
L
<
знак. числа
A
>
беззнак. числа
B
<
беззнак. числа
В ней «метка перехода» / «близкая метка» отражает тот
факт, что метка помеченной команды должна находиться
в пределах текущего сегмента
кода и на относительном
расстоянии от команды перехода −128 < 𝑋 < 127
байтов. Данное ограничение (−128; 127) байт у
процессоров Intel с модели 80386, однако ограничение
передачи управления в пределах
текущего сегментного
кода действует и в более старших моделях.
Решение о передаче управления командой условного
перехода
принимается
на
основании
условия.
Основаниями таких условий могут быть:
• любая
команда,
изменяющая
состояние
арифметических флагов (каких – см. ниже);
• команда сравнения CMP.
Формат команды CMP:
CMP приемник, источник или
CMP операнд1, операнд2.
Эта команда осуществляет вычитание (приемник −
источник) или (операнд1 − операнд2). Но
результат
никуда не записывается, а лишь меняются флаги (табл. 2).
Таблица 2. Уст. значения флагов по команде CMP
Сравн. операнды
Флаги
OF
SF
ZF
CF
Операнды без знака
источник < приёмник
H
H
0
0
источник = приёмник
H
H
1
0
источник > приёмник
H
H
0
1
Операнды со знаком
источник < приёмник
0 / 1
0
0
H
источник = приёмник
0
0
1
H
источник > приёмник
0 / 1
1
0
H
В таблице приняты следующие обозначения:
• «H» – не имеет значения, т.е.
операция на флаг не
влияет;
• 0 / 1 – флаг устанавливается 0 / 1 в зависимости от
значений операндов.
В следующей таблице (табл. 3) отражено действие команд
условного перехода по значениям анализируемых этими
командами флагов. В этой таблице через слеш (/)
перечисляются
идентичные по действию команды, а
применение зависит от предпочтений программиста. Ведь
если
число1 > числа2,
то
тогда
число1 не (<
или =) число2.