Jr
instrukce procesoru Z80 From Wikipedia, the free encyclopedia
Remove ads
JR nebo jr je instrukce procesorů Z80. Instrukce provádí relativní skok (relative jump) na adresu v rozsahu -126 až +129 bytů od umístění instrukce.[1] Cíl skoku se obvykle uvádí formou návěstí. Instrukce existuje i ve variantách provádějící skok při splnění podmínky na základě stavu registru příznaků. Instrukce je základním prostředkem pro vytváření cyklů (smyček).
Reálně instrukce zadané číslo se znaménkovým bitem přičítá k registru PC, tedy čítači instrukcí. Čítač ukazuje na instrukci následující po dvoubajtové instrukci jr, proto je číselný rozsah -128 až +127 o dva bajty posunutý.
Remove ads
Nepodmíněný skok
Obecně lze instrukci zapsat jako jr N
. Délka instrukce je dva byty, druhý byte obsahuje hodnotu konstanty. Hodnota prvního bytu je 24 desítkově a 18 šestnáctkově. Vykonání instrukce vyžaduje tři M-cykly a trvá dvanáct T-cyklů.[2][3]
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 není.[4]
Remove ads
Podmíněný skok
Instrukce provádí skok pouze v případě splnění podmínky. Obecně lze instrukci zapsat jako jr p, N
, kde p je zástupný symbol pro testovaný příznak. Na rozdíl od instrukcí jp, kde jako podmínku lze použít všechny čtyři příznaky, u instrukcí jr lze testovat pouze příznaky příznak přenosu C a příznak nuly Z.[1]
Délka instrukce je dva byty. V prvním bytu je zakódována podmínka, při jejíž splnění se skok provede, druhý byte obsahuje hodnotu konstanty. Vykonání instrukce vyžaduje tři M-cykly a trvá dvanáct T-cyklů v případě splnění podmínky a provedení skoku a dva M-cykly a trvá sedm T-cyklů v případě nesplnění podmínky a neprovedení skoku.[2][3]
Příznak, který je před případným provedením skoku testován, je zakódován ve třetím a čtvrtém bitu operačního kódu instrukce. Tato dvojice je jednotlivým podmínkám přiřazena jako 00 - NZ, 01 - Z, 10 - NC, 11 - C.[2]
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 není.[4]
Remove ads
Umístění instrukcí jr v souboru instrukcí
djnz
Instrukce djnz N (decrement jump non zero, „sniž, skok pokud není nula“) provádí stejnou činnost jako posloupnost instrukcí dec b
a jr nz, N
, tedy sníží o jednu hodnotu registru b a opakuje skok, dokud není b rovno nule. Používá se pro smyčky s počtem opakování určeným registrem b (max. 256), jeho výhodou je, že je kratší a rychlejší (úspora 1 byte a 3 T-cykly).
Reference
Literatura
Související články
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads