jr
jr nebo JR je instrukce procesorů Z80. Instrukce provádí skok na hodnotu v rozsahu -126 až 129 bytů od umístění instrukce.[1] Instrukce existuje ve variantě provádějící skok nepodmíněně a ve variantách provádějící skok při splnění podmínky.
Nepodmíněný skok
editovatNepodmíněný skok |
---|
jr N |
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
2. byte | konstanta |
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]
Podmíněný skok
editovatPodmíněný skok | |||
---|---|---|---|
jr NZ,N | jr Z,N | jr NC,N | jr C,N |
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]
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | 1 | příznak | 0 | 0 | 0 | |
2. byte | konstanta |
Délka instrukce je dva byty. V prvním bytu je zákodová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]
Umístění instrukcí jr v souboru instrukcí
editovatRozmístění instrukcí jr v instrukčním souboru procesoru Z80 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
## | .0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
1. | jr N | ||||||||||||||||
2. | jr NZ,N | jr Z,N | |||||||||||||||
3. | jr NC,N | jr C,N |
Reference
editovat- ↑ a b VILÍM, Tomáš. Assembler a ZX Spectrum, 1. díl. Ústí nad Labem: Proxima - Software, 1992.
- ↑ a b c ZAKS, Rodnay. Programming the Z80. [s.l.]: Sybex, 1981. 624 s. (Third edition). Dostupné online. ISBN 0-89588-094-6. S. 424. ((anglicky)) Poznámka: Odkazovaný soubor má desky z jiného vydání knihy, které navíc vyšlo i pod jiným názvem a s jiným ISBN
- ↑ a b Rev. 2019-09-15 [cit. 2023-04-06]. Dostupné v archivu pořízeném dne 2023-05-09. ((japonsky))
- ↑ a b DURDA, Frank. 8080/Z80 Instruction Set [online]. [cit. 2023-04-06]. Kapitola Special Accumulator and Flag Instructions. Dostupné v archivu pořízeném dne 2016-02-11. ((anglicky))
Literatura
editovat- Príručka strojového kódu pre ZX Spectrum. [s.l.]: Ultrasoft, 1993.