Андрей Газибаров


без тайни

Инструкциите On-line

REP
Многократно изпълнение на низов примитив
Общи форми: REP
REPcond
 
Форма КОП Условие I8086 I80386 I80486
REP F3 Безусловно 2 1 1
REPE F3 ZF = 1 2 1 1
REPZ F3 ZF = 1 2 1 1
REPNE F2 ZF = 0 2 1 1
REPNZ F2 ZF = 0 2 1 1
REPC 65 CF = 1      
REPNC 64 CF = 0      
Действие: Предизвикват многократното изпълнение на низова инструкция. Скоростта на изпълнението е по-висока, отколкото ако това бяха отделни инструкции. За да не се получи обаче загуба на данни, процесорът проверява входовете си IRQ и NMI след всяка итерация и може да прекъсне обработката. Тогава в стека се запазва адресът на инструкцията заедно с всички префикси (а не на следващата), eCX, eSI и eDI се обновяват и процесорът изпълнява манипулатора на прекъсването. Ако по време на итерациите възникне изключение (грешка или капан), то се обработва по същия начин. След връщане инструкцията отново се декодира и итерациите се довършват откъдето са били прекъснати.
За разлика от инструкция LOOP, влизането в тези итерации с eCX = 0 е еквивалентно на NOP.
Префиксите от вида REPcond се използват с инструкциите SCAS и CMPS и прекъсват многократното изпълнение и по-рано, ако бъде нарушено зададеното условие. Условията биват ZF = 1 (изпълнение докато е равно/нула) или ZF = 0 (изпълнение докато е различно/ненула). Префиксите REPC и REPNC в комбинация със SCAS и CMPS дават операции сканиране за по-малко/по-голямо; те се разпознават само от V20.
Еднаквите кодове за REP и REPE не водят до недоразумение, тъй като се използват с различни низови примитиви. Всички префикси имат смисъл на REP, ако примитивът не извършва сравнение (не променя флаговете). Разграничаването се прави само от SCAS и CMPS.
Регистърът, използван за брояч, се определя от размера на адреса и е CX (AddressSize = 16), ECX (AddressSize = 32) или RCX (AddressSize = 64).
Флагове
PE VM NT IOPL OF DF IF TF SF ZF AF PF CF
                  T     T
CPU
Префикс 8086 186 V20 286 386 486 P P-P P-II MMX SSE 3D! E64
REP/REPE/REPNE • • • • • • • • •       •
REPC/REPNC     •                    
Изключения Изключенията, които предизвиква основната инструкция
 
Съдържание Пълен текст
 
  PDF, 3.6M Приложение, 18К