Префиксы повторения REP (Повторять, пока ECX не равен нулю), REPE/REPZ (Повторять пока равно/ноль) и REPNE/REPNZ (Повторять пока не равно/не ноль) задают повторяющееся выполнение команд работы со строками. Эта форма итераций позволяет операциям работы со строками работать быстрее, чем это возможно при организации программных циклов.
Когда у команды работы со строкой имеется префикс повторения, операция выполняется до тех пор, пока одно из условий окончания, определяемое префиксом, не будет выполнено. Для каждого повторения команды работа со строкой может быть приостановлена прерыванием или исключением. После того, как прерывание или исключение было обработано, операция работы над строкой может быть продолжена с того места, на котором она была приостановлена. Этот механизм позволяет выполнять длинные операции над строками без влияния на время отклика системы на прерывание.
Все три префикса, приведенные в Таблице 3-4, принуждают команду выполняться до тех пор, пока значение регистра ECX не уменьшится до нуля, если ни одно из других условия окончания работы не будет выполнено. Префиксы повторения отличаются друг от друга по своим дополнительным условиям окончания работы. Префикс REP не имеет дополнительных условий окончания. Префиксы REPE/REPZ и REPNE/REPNZ используются исключительно с командами SCAS (Сканировать строку) и CMPS (Сравнить строки). Префикс REPE/REPZ заканчивает работу, если флаг ZF очищен. Префикс REPNE/REPNZ заканчивает работу, если флаг ZF установлен. Флаг ZF не требует предварительной инициализации перед выполнением повторяющихся команд работы со строками, так как и SCAS и CMPS воздействуют на флаг ZF в соответствие с результатами сравнения, которое они выполнили.
+-------------------------------------------------------------+| Префикс повтора | Условие окончания 1 | Условие окончания 2 |+-----------------+---------------------+---------------------|| REP | ECX = 0 | отсутствует || REPE/REPZ | ECX = 0 | ZF = 0 || REPNE/REPNZ | ECX = 0 | ZF = 1 |+-------------------------------------------------------------+ Таблица 3-4. Команды повтора.