CMP - porovnej dva operandy
Verze z 4. 11. 2012, 23:01, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (Vytvorená stránka „;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 ...“)
- 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
- 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)