Povedzme ze chceme porovnat ci maju registre AX a BX taky isty obsah a ak maju, spravit nejaku operaciu, a ak maju rozny obsah, vykonat zase nejaku inu operaciu. Na samotne porovnanie pouzijeme instrukciu 'CMP AX,BX', ktora nam nastavi alebo nenastavi priznak ZF podla toho, ci obsah registrov bol alebo nebol rovnaky. Ale co dalej ? A tu nam prave prichadzaju velmi vhod podmienene skoky. Pomocou nich mozeme vykonat nejaku cast programu, alebo inu cast programu podla toho, ci je priznak ZF nastaveny, alebo nie.
Podmiene skoky teda sluzia na riadenie behu programu v zavislosti na stave priznakov. Mozno sa pomocou nich rozhodovat, kade sa bude uberat program dalej. V kazdej instrukcii podmieneneho skoku je zakodovana jedna podmienka. Ak je tato podmienka splnena, skok sa vykona a procesor pokracuje vo vykonavani programu od novej adresy. A ak nie je splnena, procesor pokracuje vo vykonavani programu dalej ako keby nebol skok.
Vsetky podmienene skoky su vzdy typu SHORT. Ako operand potrebuju navestie - aby prekladac asembleru vedel kam maju skakat - kde ma procesor pokracovat v pripade splnenia podmienky. Prehlad vsetkych podmienenych skokov je v nasledujucej tabulke:
Nazov | Podmienka | Vyznam podmienky |
JZ JE | ZF = 1 | nulovy vysledok rovne |
JNZ JNE | ZF = 0 | nenulovy vysledok nie rovne |
JC JB JNAE | CF = 1 | nastal prenos pod nie nad alebo rovne |
JNC JAE JNB | CF = 0 | nie je prenos nie nad alebo rovne nie pod |
JS | SF = 1 | znamienko zaporny vysledok |
JNS | SF = 0 | nie je znamienko kladny vysledok |
JP JPE | PF = 1 | parita parny pocet jednotiek |
JNP JPO | PF = 0 | nie je parita neparny pocet jednotiek |
JO | OF = 1 | pretecenie |
JNO | OF = 0 | nie je pretecenie |
JBE JNA | (CF or ZF) = 1 | pod alebo rovne nie nad |
JA JNBE | (CF or ZF) = 0 | nad nie pod alebo rovne |
JL JNGE | (SF xor OF) = 1 | mensie nie vecsie alebo rovne |
JGE JNL | (SF xor OF) = 0 | vecsie alebo rovne nie mensie |
JLE JNG | ((SF xor OF) or ZF) = 1 | mensie alebo rovne nie vecsie |
JG JNLE | ((SF xor OF) or ZF) = 0 | vecsie nie mensie alebo rovne |
JCXZ | CX = 0 | ak je register CX nulovy |
Slova pod a nad vyjadruju vztah medzi hodnotami bez znamienok, slova vecsie a mensie vyjadruju vztah medzi hodnotami so znamienkami.
Jednotlive mnemotechnicke nazvy instrukcii nachadzajuce sa v jednom policku tabulky su si navzajom plne ekvivalentne a prekladac assembleru ich preklada do toho isteho operacneho kodu.
Okrem toho existuju este tri instrukcie urcene pre opakovanie urcitych programovych sekvencii (slucky) umoznujuce uskutocnit testovanie na odchod zo slucky. Podobne ako ostatne podmienene skoky, aj tieto vedia skakat iba v rozsahu +/- 128 bajtov. Tieto instrukcie su:
LOOP ... odcita jednotku od registra CX a ak je obsah CX nenulovy, program pokracuje na cielovej adrese.
LOOPZ ... odcita jednotku od registra CX a ak je obsah CX nenulovy a priznak ZF je nastaveny, program pokracuje na cielovej adrese.
LOOPNZ ... odcita jednotku od registra CX a ak je obsah CX nenulovy a priznak ZF je nie je nastaveny, program pokracuje na cielovej adrese.