Описание процессора i8086 для программиста

       

REP/REPcc – повторение строковой операции


F3 A4

REP MOVSB

пересылка CX байтов из DS:SI  в ES:DI

F3 A5

REP MOVSW



пересылка CX слов из DS:SI в ES:DI

F3 AC

REP LODSB

загрузка CX байтов из DS:SI в AL

F3 AD

REP LODSW

загрузка CX слов из DS:SI в AX

F3 AA

REP STOSB

запись CX байтов из AL в ES:DI

F3 AB

REP STOSW

запись CX слов из AX в ES:DI

F3 A6

REPE CMPSB

сравнение CX байтов в DS:SI и ES:DI до несовпадения

F3 A7

REPE CMPSW

сравнение CX слов в DS:SI и ES:DI до несовпадения

F3 AE

REPE SCASB

поиск байта, отличающегося от AL, в CX байтах в ES:DI

F3 AF

REPE SCASW

поиск слова, отличающегося от AX, в CX словах в ES:DI

F2 A6

REPNE CMPSB

сравнение CX байтов в DS:SI и ES:DI до совпадения

F2 A7

REPNE CMPSW

сравнение CX слов в DS:SI и ES:DI до совпадения

F2 AE

REPNE SCASB

поиск байта, совпадающего с AL, в CX байтах в ES:DI

F2 AF

REPNE SCASW

поиск слова, совпадающего с AX, в CX словах в ES:DI

Описание.

Префикс повторения используется совместно с инструкциями обработки строк. Он обеспечивает многократное повторение одной и той же операции до исчерпания счётчика или до выполнения заданного условия.

Счётчик находится в регистре CX. После каждого выполнения инструкции, употреблённой с префиксом повторения, содержимое CX уменьшается на единицу и проверяется на равенство нулю. Если нуль ещё не достигнут, снова выполняется инструкция, уменьшается и проверяется CX и т.д. Если же в результате вычитания содержимое CX обнулилось, операция прекращается. Таким образом, операция может быть повторена от одного до 65536 раз.

Помимо завершения операции по обнулению счётчика, в некоторых инструкциях предусмотрено её завершение при выполнении определённого условия, а именно равенства или неравенства флажка ZF нулю.

Логически имеются три разновидности префикса повторения, которым соответствуют пять мнемоник и два однобайтовых кода операции:

– простое повторение – префикс REP, код операции F3; операция заканчивается, когда содержимое регистра CX обнуляется;


– повторение, пока соблюдается равенство – префикс REPE/REPZ, код операции F3; операция заканчивается, когда содержимое регистра CX обнуляется или когда сбрасывается флажок ZF;

– повторение, пока равенство не соблюдается – префикс REPNE/REPNZ, код операции F2; операция заканчивается, когда содержимое регистра CX обнуляется или когда устанавливается флажок ZF.

С инструкциями MOVS, LODS, STOS

может применяться только обычный префикс повторения REP. Когда он используется, операция продолжает выполняться до тех пор, пока содержимое регистра CX не станет равным нулю.

С инструкциями CMPS и SCAS употребляются префиксы REPE/REPZ

и REPNE/REPNZ. Первый префикс обеспечивает прекращение операции при исчерпании счётчика или при сбросе флажка ZF в нуль; последнее событие имеет место, когда обнаружено неравенство сравниваемых байтов или слов. Второй префикс обеспечивает прекращение операции при исчерпании счётчика или при установке флажка ZF в единицу, что происходит при обнаружении равенства сравниваемых байтов или слов.

Флажки самим префиксом не изменяются, однако инструкции SCAS и CMPS, которые могут употребляться вместе с префиксом повторения, изменяют их.


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