Přidáno 1 544 bajtů,
18. 1. 2013, 13:41 ;Instrukce
: SCAS/SCASB/SCASW - porovnání řetezcových dat
;Časování
: 7
;Popis
: Srovnává byte ([[AL]]), slovo([[AX]]) s [[ES]]:[[DI]] nebo s [[ES]]:[[EDI]]. Instrukce [[SCAS]] odečíta paměťový byte nebo slovní operand adresovaný [[ES]]:[[DI]] ([[ES]]:[[EDI]]) buď od registru [[AL]] nebo [[AX]]. Výsledek je ignorován a jsou nastavovány jen příslušné příznaky. Operand v paměti musí být adresován registrem [[ES]]. Po srovnání je [[DI]] ([[EDI]]) inkrementován při [[DF]]=0 jinak je [[DI]] ([[EDI]]) dekrementován. Inkrement/dekrement je 1 pro bytový a 2 pro slovní operand.
;Syntaxe
: SCAS destination, source
: SCASB (žádné operandy)
: SCASW (žádné operandy)
;Ovlivňuje příznaky
: [[OF]], [[SF]], [[ZF]], [[PF]], [[CF]], [[AF]]
;Nedefinované příznaky
: žádné
;Výjimky v privilegovaném módu
: Jestliže registry [[CS]], [[DS]] nebo [[ES]] obsahují neplatné efektivní 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]]".
;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
MOV CL, 10H ; srovnání 16 byte
LEA DI, VALUE1 ; umístění retezce
MOV AL, 'S' ; hledany znak
REPNE SCASB ; dokud není nalezen, prohlížej další byty
[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]