CMP - porovnej dva operandy

Z Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
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)