Změny

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

CMPS - porovnej řetezcové operandy

Přidáno 2 170 bajtů, 4. 11. 2012, 23:14
Vytvorená stránka „;Instrukce : CMPS/CMPSB/CMPSW - porovnej řetezcové operandy ;Časování : 8 (80286), 10 (80386) ;Popis : Instrukce CMPS/CMPSB/CMPSW srovnáva obsah pam...“
;Instrukce
: CMPS/CMPSB/CMPSW - porovnej řetezcové operandy

;Časování
: 8 (80286), 10 (80386)

;Popis
: Instrukce [[CMPS]]/[[CMPSB]]/[[CMPSW]] srovnáva obsah paměťového místa adresovaného registrem [[SI]]([[ESI]]) s obsahem paměťového místa adresovaného registrem [[DI]]([[EDI]]). Instrukce [[CMPS]] odečte obsah paměťového místa adresovaného registrem [[DI]]([[EDI]]) od paměťového místa adresovaného registrem [[SI]]([[ESI]]). Výsledkem je nastavení příznaku, avšak obsah paměťových míst není meněn. Registry [[SI]]([[ESI]]) a [[DI]]([[EDI]]) jsou inkrementovaný nebo dekrementovány podle hodnoty príznaku [[DF]]. Je-li príznak [[DF]] nulován (0), jsou [[SI]]([[ESI]]) a [[DI]]([[EDI]]) inkremetovány, pri hodnote [[DF]] = 1 jsou tyto registry dekrementovány. Lze specifikovat bytově nebo slovní porovnávaní. Inkrementace indexových registrů [[SI]]([[ESI]]) a [[DI]]([[EDI]]) je o 1 pro bytové operandy a o 2 pro operandy slovní.



Poznámka
: Pravý operand instrukce [[CMPS]] je operand indexovaný registrem [[DI]] a tento operand je adresován registrem [[ES]]. Táto implicitní specifikace nemůže byt změnena.


;Syntaxe
: CMPS source_string, destination_string
: CMPSB (žádné operandy)
: CMPSW (žádné operandy)


;Ovlivňuje příznaky: [[AF]], [[CF]], [[PF]], [[OF]], [[SF]], ZF


;Nedefinované příznaky: žádné


;Výjimky v privilegovaném módu
: Jestliže registr [[CS]], [[DS]] nebo [[ES]] obsahují nepovolenou efektívní adresu operandu, je generována všeobecná výjimka privilegovaného módu. Jestliže [[SS]] obsahuje neplatnou adresu, je generována výjimka "chyba zásobniku".


;Výjimky v reálnem módu
: Je-li slovní operand umísten na offsetu 0FFFFH, je generováno přerušení [[INT 13]].


;Poznámka pro 80386
: Šírka operandu je 32 bitů. Použijte instrukci [[CDQ]].


;Příklad:
MOV SI,OFFSET STRING1
MOV DI,OFFSET STRING2
CMPS STRING1,STRING2
CMPS DS:BYTE PTR[SI],ES:[DI]
LEA ESI,STRING1 (jen pro 80386)
LEA EDI,STRING2
CMPS STRING1,STRING2


[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]

Navigační menu