Přidáno 1 621 bajtů,
4. 11. 2012, 23:01 ;Instrukce
: CMP - porovnej dva operandy
;Časování
: 2-7 (80286), 2-6 (80386)
;Popis
: Instrukce CMP odečte zdrojový operand od cílového a podle vzniklého výsledku nastaví patričné příznaky. CMP nemení operandy. Zdrojový a cílový operand musí být oba stejného typu, s výjimkou použití CMP v bezprostredním režimu - zde může být bezprostrední operand o velikosti byte s rozšíreným znaménkovým bitem na celé slovo porovnán se slovem v paměti.
;Syntaxe
: CMP destination,source
;Ovlivňuje příznaky
: [[OF]], [[SF]], [[ZF]], [[AF]], [[PF]], [[CF]]
;Nedefinované příznaky
: žádné
;Výjimky v privilegovaném módu
: Jestliže registr [[CS]], [[DS]] nebo [[ES]] obsahují nepovolenou efektívni 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 slova je 32 bitů
;Příklad
Bezprostrední operand srovnán s paměti:
CMP EXTMEM, 5CAFH
Bezprostrední operand srovnán s registrem:
CMP BL,5
CMP EAX, 0FFFF0000H (pro 80386)
Bezprostrední operand srovnán se stradačem:
CMP AL, 7
Registr srovnán s registrem:
CMP AX, BX
CMP EDX, EAX (jen pro 80386)
Registr srovnán s paměti:
CMP EXTMEM, DX
Paměť srovnána s registrem:
CMP CH, EXTMEM
CMP EBX, VALUE (jen pro 80386)
[[Category:Assembler]]
[[Category:Instrukce mikroprocesoru 80386]]