LOOP/LOOPcc – цикл по счётчику в регистре CX
E2 cb | LOOP rel8 | цикл по счётчику | |||
E1 cb | LOOPE rel8
| цикл по счётчику и равенству | |||
E1 cb | LOOPZ rel8 | цикл по счётчику и нулевому результату | |||
E0 cb | LOOPNE rel8 | цикл по счётчику и неравенству | |||
E0 cb | LOOPNZ rel8 | цикл по счётчику и ненулевому результату |
Описание.
Команда LOOP
позволяет организовать цикл по счётчику, находящемуся в регистре CX.
Счётчик, в качестве которого всегда используется регистр CX, уменьшается на единицу. Если после этого счётчик не равен нулю, а дополнительное условие, если оно имеется, выполнено, производится переход на указанную команду. Если счётчик достиг нуля или если дополнительное условие не выполнено, переход не совершается.
Дополнительным условием продолжения выполнения цикла может быть нахождение флажка ZF в состоянии 0 (LOOPNE, LOOPNZ) или 1 (LOOPE, LOOPZ). Благодаря наличию такого условия упрощается программирование циклического анализа или сравнения каких-либо величин, когда условием завершения цикла является либо достижение конца обрабатываемых операндов (обнуление счётчика), либо выполнение условия неравенства или равенства, ненулевого или нулевого результата (установка флажка ZF в состояние 0 или 1).
Команда LOOP позволяет осуществлять только короткие переходы, поскольку в ней используется относительная адресация с 8-разрядным отклонением.
Флажки не изменяются.