ld
ld nebo LD je instrukce procesoru Z80. Název instrukce je odvozen od anglického slova load(Wikislovník).[1] Instrukce může naplnit hodnotu registru konstantou, přenášet hodnotu mezi dvěma registry a přenášet hodnotu mezi registrem a místem v paměti, přičemž může pracovat jak se samostatnými registry tak s dvojicemi registrů.
Varianty instrukce
Různé varianty instrukce ld se liší zápisem. Pokud instrukce pracuje s jednobytovým (osmibitovým) operandem, je tento operand označován jedním písmenem, pokud instrukce pracuje s dvojbytovým (šestnáctibitovým) operandem, je tento operand označován dvěma písmeny, pokud instrukce pracuje s paměťovým místem, jsou v zápisu instukce použita dvě písmena v závorkách. U instrukcí ld, které pracující s číselným operandem, je tento operand označován následujícím způsobem:
- N - osmibitový bezznaménkový operand,
- NN - šestnáctibitový bezznaménkový operand,
- ±N - osmibitový znaménkový operand.
První operand instrukce označuje, kam se má hodnota přenést, druhý operand označuje, odkud se má hodnota přenést.
Naplnění registru konstantou
Naplnění registru konstantou | ||||||
---|---|---|---|---|---|---|
ld a,N | ld b,N | ld c,N | ld d,N | ld e,N | ld h,N | ld l,N |
Instrukce slouží k naplnění registru konstantou. Délka instrukce je dva byty, druhý byte obsahuje hodnotu konstanty.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | cílový registr | 1 | 1 | 0 | ||
2. byte | konstanta |
Obecně je možné tuto instrukci zapsat jako ld r,N
, kde r je zástupný symbol pro některý z registrů procesoru A, B, C, D, E, H a L. Instrukce ke svému vykonání potřebuje 2 M-cykly a doba jejího vykonání trvá 7 T-cyklů.[2] Registr, se kterým instrukce pracuje, zakódován v třetím až pátém bitu operačního kódu instrukce. Tato trojice bitů je jednotlivým registrům přiřazena jako:
111 - registr A , 000 - registr B, 001 - registr C, 010 - registr D, 011 - registr E, 100 - registr H, 101 - registr L.[3]
Kombinace bitů označujících registr může nabývat i hodnoty 110, v tomto případě se jedná o instrukci ld, která ale místo s registrem pracuje s paměťovým místem na adrese HL (viz níže), v případě jiných variant instrukce ld pro osmibitové přenosy může kombinace 110 znamenat, že se o instrukci ld nejedná.
Odpovídajícími instrukcemi v instrukční sadě procesoru Intel 8080 jsou instrukce MVI.[4] Instrukce ld a MVI trvají stejný počet T-cyklů.[5]
Přesun hodnoty mezi dvěma registry
Přesun hodnoty mezi dvěma registry | ||||||
---|---|---|---|---|---|---|
ld a,a | ld b,a | ld c,a | ld d,a | ld e,a | ld h,a | ld l,a |
ld a,b | ld b,b | ld c,b | ld d,b | ld e,b | ld h,b | ld l,b |
ld a,c | ld b,c | ld c,c | ld d,c | ld e,c | ld h,c | ld l,c |
ld a,d | ld b,d | ld c,d | ld d,d | ld e,d | ld h,d | ld l,d |
ld a,e | ld b,e | ld c,e | ld d,e | ld e,e | ld h,e | ld l,e |
ld a,h | ld b,h | ld c,h | ld d,h | ld e,h | ld h,h | ld l,h |
ld a,l | ld b,l | ld c,l | ld d,l | ld e,l | ld h,l | ld l,l |
Instrukci je možné obecně zapsat jako ld r1,r2
, kde r1 a r2 jsou zástupné symboly pro některý z registrů procesoru A, B, C, D, E, H a L, a slouží k přesunu hodnoty mezi dvěma registry. Délka instrukce je jeden byte.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 1 | cílový registr | zdrojový registr |
Instrukce ke svému vykonání potřebuje 1 M-cyklus a doba jejího vykonání trvá 4 T-cykly.[2] Zdrojový i cílový registr jsou v operačním kódu instrukce kódovány stejným způsobem, jak v případě instrukce pro naplnění registru konstantou ld r,N
. Instrukce používající stejný stejný registr jako zdrojový i cílový nedělají žádnou smysluplnou akci, k jejich zařazení do instrukčního souboru vedly hardwarové důvody.[1]
Počítač Sprinter využívá ve svém hardwaru těchto „nic nedělajících“ instrukcí k ovládání hardwarového akcelerátoru.[6]
Odpovídajícími instrukcemi v instrukční sadě procesoru Intel 8080 jsou instrukce MOV.[4] Instrukce ld je o jeden T-cyklus rychlejší, než instrukce MOV.[5]
Přesun hodnoty z/do speciálního registru
Speciální registry | |
---|---|
ld a,i | ld a,r |
ld i,a | ld i,r |
Hodnoty z/do registru I a registru R lze předášet pouze do/z registru A. Délka instrukce k přenosu mezi registrem A a speciálním registrem je dva byty, první byte je prefix ED.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
2. byte | 0 | 1 | 0 | S | R | 1 | 1 | 1 |
Instrukce ke svému vykonání potřebuje 2 M-cykly a doba jejího vykonání trvá 9 T-cyklů.[2] Zdrojový a cílový registr jsou v instrukci kódovány pomocí dvou bitů, kdy bit S určuje směr přenosu (0 - z registru A, 1 - do registru A) a bit R určuje, se kterým registrem bude instrukce pracovat (0 - registr I, 1 - registr R). Instrukce které přenášejí obsah speciálních registrů do registru A navíc jako jediné dvě instrukce ld nastavují příznaky.[1] Po vykonání těchto dvou instrukcí je do příznaku P/V je přenesen stav klopného obvodu IFF, který určuje, zda je povolené či zakázané přerušení.[1]
Zápis konstanty na adresu v paměti
Zápis konstanty na adresu v paměti |
---|
ld (hl),N |
Instrukce slouží k uložení uložení konstanty na určenou adresu v paměti. Adresa, na kterou se konstanta uloží je určena obsahem registru HL.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
2. byte | konstanta |
Instrukce ke svému vykonání potřebuje 3 M-cykly a doba jejího vykonání trvá 10 T-cyklů.[2] To, že hodnota neukládá do registru, ale na adresu v paměti registrem určenou, je naznačeno kulatýmizávorkami.[1]
Odpovídající instrukcí v instrukční sadě procesoru Intel 8080 je instrukce MVI.[4]
Zápis konstanty na adresu v paměti určenou indexovým registrem
Zápis konstanty na adresu v paměti určenou indexovým registrem | |
---|---|
ld (ix±N),N | ld (iy±N),N |
Instrukce slouží k uložení uložení konstanty na určenou adresu v paměti. Adresa, na kterou se konstanta uloží je určena obsahem registru IX nebo registru IY a offsetem.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | X | 1 | 1 | 1 | 0 | 1 |
2. byte | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
3. byte | offset | |||||||
4. byte | konstanta |
Instrukce ke svému vykonání potřebuje 5 M-cyklů a doba jejího vykonání trvá 19 T-cyklů.[2] Bit X určuje, zda bude instrukce pracovat s registrem IX (X = 0, první byte je pak prefix IX) nebo registrem IY (X = 1, první byte je pak prefix IY).
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 nejsou.[4]
Adresa v paměti určená hodnotou registru
Přesun hodnoty mezi registrem a paměťovým místem určeným hodnotou dvojice registrů | ||||||||
---|---|---|---|---|---|---|---|---|
ld (hl),a | ld (hl),b | ld (hl),c | ld (hl),d | ld (hl),e | ld (hl),h | ld (hl),l | ld (bc),a | ld (de),a |
ld a,(hl) | ld b,(hl) | ld c,(hl) | ld d,(hl) | ld e,(hl) | ld h,(hl) | ld l,(hl) | ld a,(bc) | ld a,(de) |
Instrukci je možné obecně zapsat jako ld (r1),r2
, resp. ld r2,(r1)
, kde r1 je zástupný symbol pro některou z dvojic registrů procesoru BC, DE a HL a r2 je zástupný symbol pro některý z registrů procesoru A, B, C, D, E, H a L, a slouží k přesunu hodnoty mezi dvěma registry. Délka instrukce je jeden byte.
Kód instrukce pro přesun z registru do paměti při adresování registrem HL | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 1 | 1 | 1 | 0 | zdrojový registr | ||
Kód instrukce pro přesun z paměti do registru při adresování registrem HL | ||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 1 | cílový registr | 1 | 1 | 0 | ||
Kód instrukce pro přesun mezi registrem a pamětí při adresování registrem BC nebo DE | ||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | 0 | R | S | 0 | 1 | 0 |
Není možné přenášet hodnotu mezi libovolným registrem a paměťovým místem pomocí adresovaného pomocí kterékoliv dvojice registrů. Obsah libovolného registru lze přenášet pouze pokud je pro adresi použita dvojice registrů HL, je-li k adresaci použit jiná dvojice registrů, je možné přenášet pouze obsah registru A.[1]
Instrukce používající k adresaci paměti registr HL ke svému vykonání potřebuje 2 M-cykly a doba jejího vykonání trvá 7 T-cyklů.[2] Zdrojový, resp. cílový registr je v operačním kódu instrukce kódován stejným způsobem, jako v případě instrukce pro naplnění registru konstantou ld r,N
.
Instrukce používající k adresaci paměti registr BC nebo DE ke svému vykonání potřebuje také 2 M-cykly a doba jejího vykonání trvá 7 T-cyklů.[2] Zdrojový, resp. cílový registr je v instrukci kódovány pomocí bitu R (0 - registr BC, 1 - registr DE) a bit S určuje směr přenosu (0 - z registru do paměti, 1 - z paměti do registru).
Odpovídající instrukcemi v instrukční sadě procesoru Intel 8080 je instrukce MOV v případě instrukcí využívající k adresování paměti registr HL a instrukce LDAX a STAX v případě instrukcí využívající k adresování paměti registr BC nebo DE.[4]
Adresa v paměti určená konstantou
Přesun hodnoty mezi registrem a paměťovým místem určeným konstantou | |
---|---|
ld (NN),a | ld a,(NN) |
Instrukce slouží k přesunu hodnoty mezi registrem A a paměťovým místem určeným konstantou.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | 1 | 1 | S | 0 | 1 | 0 |
2. byte | nižší byte adresy | |||||||
3. byte | vyšší byte adresy |
Instrukce ke svému vykonání potřebuje 4 M-cykly a doba jejího vykonání trvá 13 T-cyklů.[2] Směr přenosu je určen bitem S (0 - z registru do paměti, 1 - z paměti do registru).
Odpovídajícími instrukcemi v instrukční sadě procesoru Intel 8080 jsou instrukce LDA (odpovídá instrukci ld a,(NN)
) a STA (odpovídá instrukci ld (NN),a
).[4]
Adresa v paměti určená hodnotou indexového registru
Přesun hodnoty mezi registrem a paměťovým místem určeným hodnotou indexového registru | ||||||
---|---|---|---|---|---|---|
ld (ix±N),a | ld (ix±N),b | ld (ix±N),c | ld (ix±N),d | ld (ix±N),e | ld (ix±N),h | ld (ix±N),l |
ld a,(ix±N) | ld b,(ix±N) | ld c,(ix±N) | ld d,(ix±N) | ld e,(ix±N) | ld h,(ix±N) | ld l,(ix±N) |
ld (iy±N),a | ld (iy±N),b | ld (iy±N),c | ld (iy±N),d | ld (iy±N),e | ld (iy±N),h | ld (iy±N),l |
ld a,(iy±N) | ld b,(iy±N) | ld c,(iy±N) | ld d,(iy±N) | ld e,(iy±N) | ld h,(iy±N) | ld l,(iy±N) |
Instrukce slouží k přesunu hodnoty mezi některým registrem a paměťovým místem určeným hodnotou indexového registru a offsetem.
Kód instrukce pro přesun z registru do paměti | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | X | 1 | 1 | 1 | 0 | 1 |
2. byte | 0 | 1 | 1 | 1 | 0 | zdrojový registr | ||
3. byte | offset | |||||||
Kód instrukce pro přesun z paměti do registru | ||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | X | 1 | 1 | 1 | 0 | 1 |
2. byte | 0 | 1 | cílový registr | 1 | 1 | 0 | ||
3. byte | offset |
Instrukce ke svému vykonání potřebuje 5 M-cyklů a doba jejího vykonání trvá 19 T-cyklů.[2] Bit X určuje, zda bude instrukce pracovat s registrem IX (X = 0, první byte je pak prefix IX) nebo registrem IY (X = 1, první byte je pak prefix IY).
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 nejsou.[4]
Operace s polovinami indexových registrů
Instrukce pro přesun hodnoty mezi registrem a polovinou indexového registru nejsou značeny jednotně, překladač assembleru Prometheus označuje poloviny indexových registrů jako hx, lx, hy a ly, překladač assembleru MRS je označuje jako xh, xl, yh a yl, některé překladače assembleru, např. Gens s instrukcemi používající poloviny indexových registrů neumí pracovat vůbec.[1]
Přesun hodnoty mezi registrem a polovinou indexového registru | ||||||
---|---|---|---|---|---|---|
ld lx,a | ld lx,b | ld lx,c | ld lx,d | ld lx,e | ld lx,hx | ld lx,lx |
ld a,lx | ld b,lx | ld c,lx | ld d,lx | ld e,lx | ld hx,lx | ld lx,lx |
ld hx,a | ld hx,b | ld hx,c | ld hx,d | ld hx,e | ld hx,hx | ld hx,lx |
ld a,hx | ld b,hx | ld c,hx | ld d,hx | ld e,hx | ld hx,hx | ld lx,hx |
ld ly,a | ld ly,b | ld ly,c | ld ly,d | ld ly,e | ld ly,hy | ld ly,ly |
ld a,ly | ld b,ly | ld c,ly | ld d,ly | ld e,ly | ld hy,ly | ld ly,ly |
ld hy,a | ld hy,b | ld hy,c | ld hy,d | ld hy,e | ld hy,hy | ld hy,ly |
ld a,hy | ld b,hy | ld c,hy | ld d,hy | ld e,hy | ld hy,hy | ld ly,hy |
Naplnění poloviny indexového registru konstantou | |
---|---|
ld lx,N | ld hx,N |
ld ly,N | ld hy,N |
Naplnění dvojice registrů konstantou
Naplnění dvojice registrů konstantou | ||
---|---|---|
ld bc,NN | ld de,NN | ld hl,NN |
Nastavení ukazatele zásobníku | ||
ld sp,NN |
Instrukce slouží k naplnění dvojice registrů nebo ukazatele zásobníku konstantou. Délka instrukce je tři byty, druhý a třetí byte obsahují hodnotu konstanty.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | cílový registr | 0 | 0 | 0 | 1 | |
2. byte | nižší byte konstanty | |||||||
3. byte | vyšší byte konstanty |
Obecně je možné tuto instrukci zapsat jako ld rr,NN
, kde rr je zástupný symbol pro některou z dvojic registrů procesoru BC, DE, HL, nebo ukazatel zásobníku SP. Instrukce ke svému vykonání potřebuje 3 M-cykly a doba jejího vykonání trvá 10 T-cyklů.[2] Registr, se kterým instrukce pracuje, zakódován ve čtvrtém a pátém bitu operačního kódu instrukce. Tato dvojice bitů je jednotlivým registrům přiřazena jako:
00 - dvojice registrů BC, 01 - dvojice registrů DE, 10 - dvojice registrů HL, 11 - ukazatel na zásobník SP.[3] Odpovídajícími instrukcemi v instrukční sadě procesoru Intel 8080 jsou instrukce LXI.[4]
Naplnění indexového registru konstantou
Naplnění indexového registru konstantou | |
---|---|
ld ix,NN | ld iy,NN |
Instrukce slouží k naplnění indexového registru konstantou. Délka instrukce je čtyři byty, třetí a čtvrtý byte obsahují hodnotu konstanty.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | X | 1 | 1 | 1 | 0 | 1 |
2. byte | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
3. byte | nižší byte konstanty | |||||||
4. byte | vyšší byte konstanty |
Instrukce ke svému vykonání potřebuje 4 M-cyklů a doba jejího vykonání trvá 14 T-cyklů.[2] Bit X určuje, zda bude instrukce pracovat s registrem IX (X = 0, první byte je pak prefix IX) nebo registrem IY (X = 1, první byte je pak prefix IY).
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 nejsou.[4]
Přesun hodnoty mezi dvojicí registrů a místem v paměti
Přesun hodnoty mezi dvojicí registrů a paměťovým místem určeným konstantou | ||
---|---|---|
ld bc,(NN) | ld de,(NN) | ld hl,(NN) |
ld (NN),bc | ld (NN),de | ld (NN),hl |
Přesun hodnoty mezi ukazatelem zásobníku a paměťovým místem určeným konstantou | ||
ld sp,(NN) | ||
ld (NN),sp |
Instrukce slouží k přesunu hodnoty mezi dvojicí registrů nebo ukazatelem na zásobník a paměťovým místem určeným konstantou. Instrukce ld hl,(NN)
a ld (NN),hl
jsou v instrukčním souboru procesoru z hardwarových důvodů dvakrát.[1]
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
2. byte | 0 | 1 | cílový registr | S | 0 | 1 | 1 | |
3. byte | nižší byte adresy | |||||||
4. byte | vyšší byte adresy |
Kód duplicitní instrukce (pouze pro dvojici registrů HL) | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | 1 | 0 | S | 0 | 1 | 0 |
2. byte | nižší byte adresy | |||||||
3. byte | vyšší byte adresy |
Instrukce ke svému vykonání potřebuje 6 M-cyklů a doba jejího vykonání trvá 20 T-cyklů.[2] duplicitní instrukce pracující pouze s registrem HL je o něco rychlejší, potřebuje ke svému vykonání pouze 5 M-cyklů a doba jejího vykonání trvá 16 T-cyklů.[2] Směr přenosu je v obou případech určen bitem S (0 - z registru do paměti, 1 - z paměti do registru).
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 existují pouze pro duplicitní instrukce pracující s dvojicí registrů HL a jsou to instrukce LHLD (odpovídá instrukci ld HL,(NN)
) a SHLD (odpovídá instrukci ld (NN),HL
).[4]
Přesun hodnoty mezi indexovým registrem a místem v paměti
Přesun hodnoty mezi indexovým registrem a paměťovým místem určeným konstantou | ||
---|---|---|
ld ix,(NN) | ld iy,(NN) | |
ld (NN),ix | ld (NN),iy |
Instrukce slouží k přesunu hodnoty mezi indexovým registrem a paměťovým místem určeným konstantou.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | X | 1 | 1 | 1 | 0 | 1 |
2. byte | 0 | 0 | 1 | 0 | S | 0 | 1 | 0 |
3. byte | nižší byte adresy | |||||||
4. byte | vyšší byte adresy |
Instrukce ke svému vykonání potřebuje 6 M-cyklů a doba jejího vykonání trvá 20 T-cyklů.[2] Směr přenosu je v obou případech určen bitem S (0 - z registru do paměti, 1 - z paměti do registru). Bit X určuje, zda bude instrukce pracovat s registrem IX (X = 0, první byte je pak prefix IX) nebo registrem IY (X = 1, první byte je pak prefix IY).
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 nejsou.[4]
Přesun hodnoty z dvojice registrů do ukazatele zásobníku
Přesun hodnoty z dvojice registrů do ukazatele zásobníku |
---|
ld sp,hl |
Instrukce slouží k přesunu hodnoty z dvojice registrů do ukazatele zásobníku. Délka instrukce je jeden byte.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
Instrukce ke svému vykonání potřebuje 1 M-cyklus a doba jejího vykonání trvá 6 T-cyklů.[2]
Odpovídající instrukcí v instrukční sadě procesoru Intel 8080 je instrukce SPHL.[4]
Přesun hodnoty z indexového registru do ukazatele zásobníku
Přesun hodnoty z indexového registru do ukazatele zásobníku | |
---|---|
ld sp,ix | ld sp,iy |
Instrukce slouží k přesunu hodnoty z indexového registru do ukazatele zásobníku. Délka instrukce je dva byty.
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 1 | 1 | X | 1 | 1 | 1 | 0 | 1 |
2. byte | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
Instrukce ke svému vykonání potřebuje 2 M-cykly a doba jejího vykonání trvá 10 T-cyklů.[2] Bit X určuje, zda bude instrukce pracovat s registrem IX (X = 0, první byte je pak prefix IX) nebo registrem IY (X = 1, první byte je pak prefix IY).
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 nejsou.[4]
Umístění instrukcí ld v souboru instrukcí
Rozmístění instrukcí ld v instrukčním souboru procesoru Z80 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
## | .0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
0. | ld bc,NN | ld (bc),a | ld b,N | ld a,(bc) | ld c,N | ||||||||||||
1. | ld de,NN | ld (de),a | ld d,N | ld a,(de) | ld e,N | ||||||||||||
2. | ld hl,NN | ld (NN),hl | ld h,N | ld hl,(NN) | ld l,N | ||||||||||||
3. | ld sp,NN | ld (NN),a | ld (hl),N | ld a,(NN) | ld a,N | ||||||||||||
4. | ld b,b | ld b,c | ld b,d | ld b,e | ld b,h | ld b,l | ld b,(hl) | ld b,a | ld c,b | ld c,c | ld c,d | ld c,e | ld c,h | ld c,l | ld c,(hl) | ld c,a | |
5. | ld d,b | ld d,c | ld d,d | ld d,e | ld d,h | ld d,l | ld d,(hl) | ld d,a | ld e,b | ld e,c | ld e,d | ld e,e | ld e,h | ld e,l | ld e,(hl) | ld e,a | |
6. | ld h,b | ld h,c | ld h,d | ld h,e | ld h,h | ld h,l | ld h,(hl) | ld h,a | ld l,b | ld l,c | ld l,d | ld l,e | ld l,h | ld l,l | ld l,(hl) | ld l,a | |
7. | ld (hl),b | ld (hl),c | ld (hl),d | ld (hl),e | ld (hl),h | ld (hl),l | ld (hl),a | ld a,b | ld a,c | ld a,d | ld a,e | ld a,h | ld a,l | ld a,(hl) | ld a,a | ||
F. | ld sp,hl | ||||||||||||||||
Po prefixu ED | |||||||||||||||||
4. | ld (NN),bc | ld i,a | ld bc,(NN) | ld r,a | |||||||||||||
5. | ld (NN),de | ld a,i | ld de,(NN) | ld a,r | |||||||||||||
6. | ld (NN),hl | ld hl,(NN) | |||||||||||||||
7. | ld (NN),sp | ld sp,(NN) | |||||||||||||||
S indexovým registrem IX | |||||||||||||||||
2. | ld ix,NN | ld (NN),ix | ld hx,N | ld ix,(NN) | ld lx,N | ||||||||||||
3. | ld (ix±N),N | ||||||||||||||||
4. | ld b,hx | ld b,lx | ld b,(ix±N) | ld c,hx | ld c,lx | ld c,(ix±N) | |||||||||||
5. | ld d,hx | ld d,lx | ld d,(ix±N) | ld e,hx | ld e,lx | ld e,(ix±N) | |||||||||||
6. | ld hx,b | ld hx,c | ld hx,d | ld hx,e | ld hx,h | ld hx,l | ld h,(ix±N) | ld hx,a | ld lx,b | ld lx,c | ld lx,d | ld lx,e | ld lx,h | ld lx,l | ld l,(ix±N) | ld lx,a | |
7. | ld (ix±N),b | ld (ix±N),c | ld (ix±N),d | ld (ix±N),e | ld (ix±N),h | ld (ix±N),l | ld (ix±N),a | ld a,hx | ld a,lx | ld a,(ix±N) | |||||||
F. | ld sp,ix |
Reference
- VILÍM, Tomáš. Assembler a ZX Spectrum, 1. díl. Ústí nad Labem: Proxima - Software, 1992.
- ZAKS, Rodnay. Programming the Z80. [s.l.]: Sybex, 1981. 624 s. (Third edition). Dostupné online. ISBN 0-89588-094-6. S. 291–347. ((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
- 8ビット CPU Z80命令セット [online]. Rev. 2015-08-23 [cit. 2015-12-31]. Dostupné online. ((japonsky))
- DURDA, Frank. 8080/Z80 Instruction Set [online]. [cit. 2016-01-08]. Dostupné v archivu pořízeném dne 2016-02-11. ((anglicky))
- SAPI.CZ - web věnovaný československým osmibitům, zejména počítačům SAPI-1 [online]. [cit. 2017-04-21]. Kapitola Drobnosti / Porovnání instrukcí I8080A, I8085 a Z80. Dostupné online. ((česky))
- +Gama. Ruské plečky. ZX Magazín. 1999, čís. 3–4, s. 24–27.
Literatura
- Príručka strojového kódu pre ZX Spectrum. [s.l.]: Ultrasoft, 1993.
Externí odkazy
- Naučte se assembler 8080, Z80, 6502 - učebnice assembleru osmibitových procesorů 8080, Z80 a 6502