Справочник по языку Ассемблера IBM PC

       

REP/REPE/REPZ/REPNE/REPNZ


(REPeat string operation)

Повторить цепочечную операцию

Схема команды:  rep 
repe 
repz 
repne 
repnz

Назначение: указание условного и безусловного повторения следующей за данной командой цепочечной операции.


Алгоритм работы:


Алгоритм работы зависит от конкретного префикса. Префиксы rep, repe и repz на самом деле имеют одинаковый код операции, их действия зависят от той цепочечной команды, которую они предваряют:

    rep используется перед следующими цепочечными командами и их краткими эквивалентами: movs, stos, ins, outs. Действия rep:

    анализ содержимого cx:



если cx<>0, то выполнить цепочечную команду, следующую за данным префиксом и перейти к шагу 2;

если cx=0, то передать управление команде, следующей за данной цепочечной командой (выйти из цикла по rep);

уменьшить значение cx=cx–1 и вернуться к шагу 1;

repe и repz используются перед следующими цепочечными командами и их краткими эквивалентами: cmps, scas. Действия repe и repz:

анализ содержимого cx и флага zf:

если cx<>0 или zf<>0, то выполнить цепочечную команду, следующую за данным префиксом, и перейти к шагу 2;

если cx=0 или zf=0, то передать управление команде, следующей за данной цепочечной командой (выйти из цикла по rep);

уменьшить значение cx=cx-1 и вернуться к шагу 1;

repne и repnz также имеют один код операции и имеют смысл при использовании перед следующими цепочечными командами и их краткими эквивалентами: cmps, scas. Действия repne и repnz:

анализ содержимого cx и флага zf:

если cx<>0 или zf=0, то выполнить цепочечную команду, следующую за данным префиксом и перейти к шагу 2;

если cx=0 или zf<>0, то передать управление команде, следующей за данной цепочечной командой (выйти из цикла по rep);

уменьшить значение cx=cx–1 и вернуться к шагу 1.

Состояние флагов после выполнения команды:

06
ZF
r

Применение:


Команды rep, repe, repz, repne и repnz в силу специфики своей работы называются префиксами. Они имеют смысл только при использовании цепочечных операций, заставляя их циклически выполняться и тем самым без организации внешнего цикла обрабатывать последовательности элементов фиксированной длины. Большинство применяемых префиксов являются условными, то есть они прекращают работу цепочечной команды при выполнении определенных условий.
См. также: урок 11 и команды , , , ,



Содержание раздела