LOOP
(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 m1 cycl: ;тело цикла loop cycl m1: |
См. также: урок 10 и команды /, /, /