Ldld 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 instrukceRů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:
První operand instrukce označuje, kam se má hodnota přenést, druhý operand označuje, odkud se má hodnota přenést. Operace s osmibitovými operandyNaplnění registru konstantou
Instrukce slouží k naplnění registru konstantou. Délka instrukce je dva byty, druhý byte obsahuje hodnotu konstanty.
Obecně je možné tuto instrukci zapsat jako 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
Instrukci je možné obecně zapsat jako
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 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
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.
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
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.
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
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.
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] Přesun hodnoty mezi registrem a místem v pamětiAdresa v paměti určená hodnotou registru
Instrukci je možné obecně zapsat jako
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 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
Instrukce slouží k přesunu hodnoty mezi registrem A a paměťovým místem určeným konstantou.
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 Adresa v paměti určená hodnotou indexového registru
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.
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]
Operace s šestnáctibitovými operandyNaplnění dvojice registrů konstantou
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.
Obecně je možné tuto instrukci zapsat jako Naplnění indexového registru konstantou
Instrukce slouží k naplnění indexového registru konstantou. Délka instrukce je čtyři byty, třetí a čtvrtý byte obsahují hodnotu 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
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
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 Přesun hodnoty mezi indexovým registrem a místem v paměti
Instrukce slouží k přesunu hodnoty mezi indexovým registrem a paměťovým místem určeným konstantou.
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
Instrukce slouží k přesunu hodnoty z dvojice registrů do ukazatele zásobníku. Délka instrukce je jeden byte.
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
Instrukce slouží k přesunu hodnoty z indexového registru do ukazatele zásobníku. Délka instrukce je dva byty.
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í
Reference
Literatura
Související článkyExterní odkazy
|
Portal di Ensiklopedia Dunia