(LOOP control by register cx)
Управление циклом по cx
Схема команды:
| loop метка
|
Назначение: организация цикла со счетчиком в регистре cx.
Синтаксис
Алгоритм работы:
- выполнить декремент содержимого регистра ecx/cx;
- анализ регистра ecx/cx:
- если ecx/cx=0, передать управление следующей за loop команде;
- если ecx/cx=1, передать управление команде, метка которой указана в качестве операнда loop.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги
|
Применение:
Команду loop применяют для организации цикла со счетчиком. Количество повторений цикла задается значением в регистре ecx/cx перед входом в последовательность команд, составляющих тело цикла. Помните о двух важных моментах:
- для предотвращения выполнения цикла при нулевом ecx/cx используйте команду jecxz/jcxz. Если этого не сделать, то при изначально нулевом ecx/cx цикл повторится 4 294 967 295/65 536 раз;
- смещение метки, являющейся операндом loop, не должно выходить из диапазона -128...+127 байт. Это смещение, как и в командах условного перехода, является относительным от значения счетчика адреса следующей за loop команды.
mov cx,10... jcxz m1cycl:;тело цикла loop cyclm1: |
См. также: урок 10 и команды jecxz/jcxz, loope/loopz, loopne/loopnz