LOOP - cyklus řízený registrem CX
Jump to navigation
Jump to search
- Instrukce
- LOOP - cyklus řízený registrem CX
- Časování
- 8 (80286), 11 (80386)
- Popis
- Instrukce LOOP dekrementuje registr CX o 1. Žádne příznaky nejsou ovlivněny. Po dekrementování jsou testovány podmínky pro instrukci LOOP (viz syntaxe) a pokud jsou splněny, je proveden skok uvnitr segmentu na místo specifikované operandem instrukce LOOP. Tento operand musí ležet (jde o návestí!) v rozsahu 128 byte před instrukci LOOPx až 127 byte za instrukci LOOP.
- Syntaxe
- LOOP short_target - přímy skok
- LOOPE short_target - skok jestli je predešlí compare roven (equal)
- LOOPZ short_target - skok jestli je predešlí compare není roven (zero)
- LOOPNZ short_target
- LOOPNE short_target
- Ovlivňuje příznaky
- žádné
- Nedefinované příznaky
- žádné
- Výjimky v privilegovaném módu
- Je generovaná všeobecná výjimka ochrany při pokusu o skok na adresu s offsetem mimo hranice aktuálního kódového segmentu CS.
- Příklad
MOV CL, 04H AGAIN: ADD BX, 01H ADD AL, INFO[BX] DAA LOOP AGAIN MOV CX, 12H NEXT: INC BX CMP TABLE[BX],0 LOOPE NEXT ; jen pro 80386 MOV ECX, 0ABCDEH REPEAT: INC BX MOV AL, TABLE_A[BX] ADD AL, TABLE_B[BX] MOV TOTAL[BX], AL LOOPNZ REPEAT