Команды LOOP, LOOPD, LOOPE, LOOPNE, LOOPNZ, LOOPZ
Рубрика: Архитектура PC
(Команды CPU)
6546
Опубликовано: 07.05.2017
Команды LOOP, LOOPD, LOOPE, LOOPNE, LOOPNZ, LOOPZ используются для организации циклов. Счетчиком цикла служит регистр CX или ECX (в зависимости от разрядности). В командах циклов с условием (Z, NZ, E, NE) цикл выполняется пока заданное условие истинно.
Команды LOOP, LOOPD
Синтаксис: | LOOP op1 LOOPD op1 |
Операнды: | op1 - i8 |
Назначение: | Цикл |
Процессор: | 8086+ 80386+ |
Флаги: | Не изменяются |
Комментарий: | Команда LOOP уменьшает значение регистра CX на 1 и, если регистр не равен 0, передает управление по смещению, заданному в операнде. В противном случае (регистр CX обнулился) выполняется следующая команда. Если команда используется в 32-разрядном режиме адресации или указана команда LOOPD, то для цикла будет использован регистр ECX. |
Ограничения: | Нет |
Примеры: |
mov cx,100 l1: add ax,[bx] inc bx loop l1 |
Команды LOOPE и LOOPZ
Синтаксис: | LOOPE op1 LOOPZ op1 |
Операнды: | op1 - i8 |
Назначение: | Цикл, пока равно (пока ноль) |
Процессор: | 8086+ |
Флаги: | Не изменяются |
Комментарий: | Команды LOOPE и LOOPZ уменьшают значение регистра CX на 1 и, если регистр не равен 0 и флаг ZF = 1, передают управление по смещению, заданному в операнде. Если команда используется в 32-разрядном режиме адресации или используются 32-битные модификации этих команд (LOOPDE, LOOPDZ), то для цикла будет использован регистр ECX. |
Ограничения: | Поскольку все модификации команды LOOP не изменяют регистр флагов, то флаг ZF должен изменяться внутри тела цикла. |
Примеры: |
mov cx,100 l1: add ax,[bx] dec bx loope l1 |
Команды LOOPNE и LOOPNZ
Синтаксис: | LOOPNE op1 LOOPNZ op1 |
Операнды: | op1 - i8 |
Назначение: | Цикл, пока не равно (пока не ноль) |
Процессор: | 8086+ |
Флаги: | Не изменяются |
Комментарий: | Команды LOOPNE и LOOPNZ уменьшают значение регистра CX на 1 и, если регистр не равен 0 и флаг ZF = 0, передают управление по смещению, заданному в операнде. Если команда используется в 32-разрядном режиме адресации или используются 32-битные модификации этих команд (LOOPDNE, LOOPDNZ), то для цикла будет использован регистр ECX. |
Ограничения: | Поскольку все модификации команды LOOP не изменяют регистр флагов, то флаг ZF должен изменяться внутри тела цикла. |
Примеры: |
mov cx,100 l1: add ax,[bx] dec bx loopne l1 |
Комментарии (0)