Přidáno 2 669 bajtů,
11. 1. 2013, 17:35 ;Instrukce
: RCL/RCR/ROL/ROR - instrukce rotací
;Časování
: 2-5 (80286), 3-10 (80386)
;Popis
: Každá z uvedených instrukcí rotaci posouva specifické bity registrového nebo paměťového operandu. Instrukce [[ROL]] posunuje (rotuje) všechny bity operandu doleva o 1 bit, pričemž bit MSB (nejvyššší) se přesouva na místo LSB (nejnižší). Instrukce [[ROR]] provádí posuv (rotaci) přesne opačne - všechny bity se posunou o 1 místo doprava a na místo MSB se přesune bit LSB. Instrukce [[RCL]] a [[RCR]] užívají hodnotu příznaku [[CF]] jako část přesouvané veličiny. Instrukce [[RCL]] přesouva [[CF]] do LSB a MSB do [[CF]]. Instrukce [[RCR]] provádí přesne opačný přesun: [[CF]] do MSB a LSB do [[CF]]. Druhý operand instrukci rotací specifikuje počet pozic o které se má zdrojový operand posunout. Příznak přetečení [[OF]] je nastaven jen v případe že u instrukci rotací je druhý operand roveň 1. U [[RCR]] je test na přetečení prováden před rotací pro [[RCL]], [[ROL]] a [[ROR]] po rotaci. Příznak [[OF]] je nastavován v těchto situacích: pokud [[CF]] = MSB, nastav [[OF]]=0; pokud [[CF]] <> MSB nastav [[OF]]=1.
;Poznámka
: Obvod 80286/80386 neumožňuje provádět rotace o více než 31 bitů. Je použito jen nižších 5 bitů citace počtu rotaci i v případe že je snaha o provedení rotace o více než 31 bitů.
;Syntaxe
: RCL destination
: RCL destination, CL
: RCL destination, count
: RCR destination
: RCR destination, CL
: RCR destination, count
: ROL destination
: ROL destination, CL
: ROL destination, count
: ROR destination
: ROR destination, CL
: ROR destination, count
;Ovlivňuje příznaky
: [[OF]] (jen pro rotaci o 1 bit), [[CF]]
;Nedefinované příznaky
: [[OF]] pro vícebitové rotace
;Výjimky v privilegovaném módu
: Jestliže registry [[CS]], [[DS]] nebo [[ES]] obsahují neplatné efektívní adresy operandu je generována všeobecná výjimka porušení ochrany paměti. Jestliže [[SS]] obsahuje neplatnou adresu je generována výjimka "[[chyba zásobníku]]". Jestliže je místo určení v segmentu nepřístupněm zápisu je generována všeobecná výjimka porušení ochrany paměti.
;Výjimky v reálnem módu
: Jestliže je slovní operand na offsetu 0FFFFH je generováno přerušení [[INT 13]].
;Poznámka pro 80386
: Šírka slova je 32 bitů.
;Příklad
RCL AH, 1
RCL MEMORY_BTE, REP_VAL
RCL DH, CL
RCR BL, 1
RCR TABLE[BX][DI], CL
ROL CX, 1
ROL AX, CL
ROR BL, 1
ROR MEMORY_BTE, REP_VAL
ROR TABLE[DX][DI], CL
[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]