Změny

Skočit na navigaci Skočit na vyhledávání

SCAS/SCASB/SCASW - porovnání řetezcových dat

Přidáno 1 544 bajtů, 18. 1. 2013, 14:41
Vytvorená stránka „;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/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]]

Navigační menu