Организация циклов
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Организация циклов
Дадим краткую характеристику командам цикла:
Основная команда организации циклов:
loop метка_перехода (Loop) — повторить цикл. Команда позволяет
организовать циклы, подобные циклам for в языках высокого уровня с
автоматическим уменьшением счетчика цикла. Работа команды заключается
в выполнении следующих действий:
декремента регистра ecx/cx;
сравнения регистра ecx/cx с нулем:
o если (ecx/cx) > 0, то управление передается на метку перехода;
o если (ecx/cx) = 0, то управление передается на следующую после
loop команду.
Организация циклов с дополнительным условием выхода из него.
loope/loopz метка_перехода (Loop till cx <> 0 or Zero Flag = 0) — повторить
цикл, пока cx <> 0 или zf = 0.
Команды loope и loopz — абсолютные синонимы, поэтому используйте ту
команду, которая вам больше нравиться. Работа команд заключается в
выполнении следующих действий:
декремента регистра ecx/cx;
сравнения регистра ecx/cx с нулем;
анализа состояния флага нуля zf:
o если (ecx/cx) > 0 и zf = 1, управление передается на метку перехода;
o если (ecx/cx) = 0 или zf = 0, управление передается на следующую
после loop команду.
loopne/loopnz метка_перехода (Loop till cx <> 0 or Not Zero flag=0) — повторить
цикл пока cx <> 0 или zf = 1.
Команды loopne и loopnz также абсолютные синонимы. Работа команд
заключается в выполнении следующих действий:
декремента регистра ecx/cx;
сравнения регистра ecx/cx с нулем;
анализа состояния флага нуля zf:
o если (ecx/cx) > 0 и zf = 0, управление передается на метку перехода;
o если (ecx/cx)=0 или zf=1, управление передается на следующую
после loop команду.
Команды loope/loopz и loopne/loopnz по принципу своей работы являются
взаимообратными. Они расширяют действие команды loop тем, что
дополнительно анализируют флаг zf, что дает возможность организовать
досрочный выход из цикла, используя этот флаг в качестве индикатора.
Недостаток команд организации цикла loop, loope/loopz и loopne/loopnz в том,
что они реализуют только короткие переходы (от –128 до +127 байт). Для
работы с длинными циклами придется использовать команды условного
перехода и команду jmp.