Ассемблер и программирование для IBM PC


          

ГЛАВА 11. Команды обработки строк - часть 2


REP: ПРЕФИКС ПОВТОРЕНИЯ ЦЕПОЧЕЧНОЙ КОМАНДЫ ------------------------------------------------------------

Несмотря на то, что цепочечные команды имеют отношение к одному байту или одному слову, префикс REP обеспечивает повторение команды несколько раз. Префикс кодируется непо средственно перед цепочечной командой, например, REP MOVSB. Для использования префикса REP необходимо установить начальное значение в регистре CX. При выполнении цепочечной команды с префиксом REP происходит уменьшение на 1 значения в регистре CX до нуля. Таким образом, можно обрабатывать строки любой длины. Флаг направления определяет направление повторяющейся операции: - для направления слева направо неоходимо с помощью команды CLD установить флаг DF в 0; - для направления справа налево необходимо с помощью команды STD установить флаг DF в 1. В следующем примере выполняется пересылка 20 байт из STRING1 в STRING2. Предположим, что оба регистра DS и ES инициализированы адресом сегмента данных:

STRING1 DB 20 DUP('*') STRING2 DB 20 DUP(' ')

... CLD ;Сброс флага DF MOV CX,20 ;Счетчик на 20 байт LEA DI,STRING2 ;Адрес области "куда" LEA SI,STRING1 ;Адрес одласти "откуда" REP MOVSB ;Переслать данные

При выполнееии команд CMPS и SCAS возможна установка флагов состояния, так чтобы операция могла прекратиться сразу после обнаружения необходимого условия. Ниже приведены модификации префикса REP для этих целей.

REP - повторять операцию, пока CX не равно 0;

Ассемблер для IBM PC. Глава 11 243

REPZили REPE - повторять операцию,пока флаг ZF показывает "равноили ноль".Прекратить операцию при флаге ZF, указывающему на не равно или не ноль или при CX равном 0; REPNE или REPNZ - повторять операцию, пока флаг ZF показывает "не равно или не ноль". Прекратить операцию при флаге ZF, указывающему на "равно или нуль" или при CX равным 0.

Для процессоров 8086, 80286 и 80386, обрабатывающих слово за oдно выполнение, использование цепочечных команд, где это возможно, приводит к повышению эффективности работы программы.




Содержание  Назад  Вперед