CMPS
(Compare string operand)PRÍZNAKY: | ||||||||
O |
D |
I |
T |
S |
Z |
A |
P |
C |
* |
- |
- |
- |
* |
* |
* |
* |
* |
OPIS:
Inštrukcia sa používa k porovnaniu dvoch blokov pamäti. Začiatok prvého bloku je určený dvojicou registrou DS:SI. Začiatok druhého bloku je určený dvojicou registrov ES:DI. Po porovnaní sa obsah registrov SI a DI zväčší resp. zmenší (podľa príznaku Direction flag) o 1 alebo 2, v závislosti na tom aké veľké dáta sa porovnávajú.Porovnanie prebieha buď: po 8-bitoch CMPSB DI, SI <- DI, SI +/- 1 alebo po 16-bitoch CMPSW DI, SI <- DI, SI +/- 2
Maximálný počet porovnávaných položiek určuje register CX. Ak použijeme pred inštrukciou prefix REPE (opakuj, pokiaľ je rovné), porovnávanie sa ukončí buď pri nájdení prvého rozdielu medzi blokmi dát, alebo po porovnaní takého množstva položiek, aké udáva register CX. Môžeme tiež pred inštrukciou použiť prefix
REPNE (opakuj, pokiaľ je rôzne), v tom prípade sa porovnávanie ukončí buď pri nájdení prvéj zhody medzi blokmi dát, alebo po porovnaní takého množstva položiek, aké udáva register CX. Ak nepoužijeme žiadny prefix, uskutoční sa porovnanie iba prvých dvoch položiek bloku dát bez ohľadu na výsledok porovnania.Prefix inštrukcie - zpôsobí zmenu inštrukcie, ktorá nasleduje. Používa sa napr. k opakovaniu inštrukcie do splnenia určitéj podmienky, obyčajne do CX=0. Jeho dĺžka je 1 bajt a píše sa pred inštrukciu na
pr.: REPE CMPSB.