Z80: Porovnání verzí

Smazaný obsah Přidaný obsah
text na wikiodkazy
Tabulka registrů, opravy textu
Řádek 76:
== Technický popis ==
 
=== Programovací model a nastavenísada registrů ===
 
Programovací modemodel a nastavenísada registrů jsou konvenční a podobnědíky souvisejíodvození s rodinouze stejného předchůdce ([[Intel 8080]]) se podobají rodině [[x86]]. U procesoruProcesor Z80 jsou kompatibilnízdvojenou registrysadu procesoruhlavních 8080registrů, AF,BC,DE,HL,což duplikoványspolu jakos dvěrychlými od sebeinstrukcemi oddělenépro banky,přepínání kdeobou procesorsad můžeumožňuje rychle přepínatreagovat z jedné banky do jiné, což je užitečná vlastnost pro urychlení odezvy una jednoúrovňovéhojednoúrovňové přerušení s vysokou prioritou. Tato vlastnost byla představena v [[Datapoint 2002200]], ale v procesoru 8008 nebyla Intelem implementována. NastaveníTato duálníhovlastnost registruusnadňuje dává smysl,použití Z80 (stejněve jako[[vestavěný vesystém|vestavěných většiněsystémech]], procesorůpro které doby)byla bylvětšina skutečněprvních určenmikroprocesorů pro použitíurčena v [[Terminálspíše (informatika)|terminálech]],než nikolipro pro použití v [[Osobní počítač|osobních počítačích]]. Podle jednoho z designérů, Masatoshi Shima, se trh zaměřil na vysoce výkonný tisk, velké cash registrypokladny a inteligentní terminály. TakéZdvojená se ukázalosada býtregistrů velmivšak užitečnébyla také využívána pro vysoce optimalizované, manuální kompletováníkódované kódováníprogramy. Některý software, hlavně hry pro [[MSX]], [[Sinclair ZX Spectrum]] a další počítače založené na Z80, které optimalizovaly kód na extrémní úroveň, mimo jiné použilypoužívaly takézdvojenou duplicitnísadu registryregistrů.
 
'''Registry'''
{| class="infobox" style="font-size:88%"
|-
|align="center" |''Registry mikroprocesoru Z80''
|-
|
{| style="font-size:88%;"
|-
| style="width:10px; text-align:center;"| <sup>1</sup><sub>5</sub>
| style="width:10px; text-align:center;"| <sup>1</sup><sub>4</sub>
| style="width:10px; text-align:center;"| <sup>1</sup><sub>3</sub>
| style="width:10px; text-align:center;"| <sup>1</sup><sub>2</sub>
| style="width:10px; text-align:center;"| <sup>1</sup><sub>1</sub>
| style="width:10px; text-align:center;"| <sup>1</sup><sub>0</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>9</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>8</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>7</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>6</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>5</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>4</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>3</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>2</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>1</sub>
| style="width:10px; text-align:center;"| <sup>0</sup><sub>0</sub>
| style="width:auto;" | ''(číslo bitu)''
|-
|colspan="17" | '''Hlavní registry'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| A
| style="text-align:center;background:#DDD" colspan="8"| Flags
| style="background:white; color:black;"| '''AF''' (akumulátor a příznaky)
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| B
| style="text-align:center;" colspan="8"| C
| style="background:white; color:black;"| '''BC'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| D
| style="text-align:center;" colspan="8"| E
| style="background:white; color:black;"| '''DE'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| H
| style="text-align:center;" colspan="8"| L
| style="background:white; color:black;"| '''HL''' (nepřímá adresa)
|-
|colspan="17" | '''Alternativní registry'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| A'
| style="text-align:center;background:#DDD" colspan="8"| Flags'
| style="background:white; color:black;"| '''AF' ''' (akumulátor a příznaky)
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| B'
| style="text-align:center;" colspan="8"| C'
| style="background:white; color:black;"| '''BC' '''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| D'
| style="text-align:center;" colspan="8"| E'
| style="background:white; color:black;"| '''DE' '''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="8"| H'
| style="text-align:center;" colspan="8"| L'
| style="background:white; color:black;"| '''HL' ''' (nepřímá adresa)
|-
|colspan="17" | '''Indexregistry'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="16"| IX
| style="background:white; color:black;"| '''I'''ndex '''X'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="16"| IY
| style="background:white; color:black;"| '''I'''ndex '''Y'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="16"| SP
| style="background:white; color:black;"| '''S'''tack '''P'''ointer, ukazatel zásobníku
|-
|colspan="17" | '''Další registry'''
|- style="background:silver;color:black"
| style="background:white; color:black;" colspan="8"| &nbsp;
| style="text-align:center;" colspan="8"| I
| style="background:white; color:black;"| '''I'''nterrupt vector, vektor přerušení
|- style="background:silver;color:black"
| style="background:white; color:black;" colspan="8"| &nbsp;
| style="text-align:center;" colspan="8"| R
| style="background:white; color:black;"| '''R'''efresh counter, čítač pro občerstvování paměti
|-
|colspan="17" | '''Programový čítač'''
|- style="background:silver;color:black"
| style="text-align:center;" colspan="16"| PC
| style="background:white; color:black;"| '''P'''rogram '''C'''ounter, programový čítač
|-
|colspan="17" | '''Stavový registr'''
|- style="background:silver;color:black"
| style="background:white; color:black;" colspan="8"| &nbsp; <!--NEED TO ADD INTERRUPT STATUS/MODE BITS-->
| style="text-align:center;"| [[Příznak znaménka|S]]
| style="text-align:center;"| [[Příznak nuly|Z]]
| style="text-align:center;"| [[Povolení přerušení|I]]
| style="text-align:center;"| [[Příznak polovičního přenos|H]]
| style="text-align:center;"| -
| style="text-align:center;"| [[Příznak parity|P]]
| style="text-align:center;"| -
| style="text-align:center;"| [[Příznak přenosu|C]]
| style="background:white; color:black" | '''F'''lags
|}
|}
 
Stejně jako v&nbsp;procesoru 8080, 8bitové registry jsou většinou spojeny, aby&nbsp;poskytovaly 16bitovou verzi. Kompatibilní registry procesoru&nbsp;8080 jsou:
* AF: 8bitový akumulátor (A) a&nbsp;Flagbitové bitypříznaky (F) carrypřenos, zeronula, minusznaménko, parityparita/overflowpřetečení, half-carrypoloviční přenos (používanépoužívaný pro BCD kódoperace), a&nbsp;Add/Subtractpříznak Flagsčítání/odčítání (obvykle nazývaný N) také pro BCD kódoperace
* BC: 16bitový datadatový/addressadresní registr nebo dva 8bitové registry
* DE: 16bitový datadatový/addressadresní registr nebo dva 8bitové registry
* HL: 16bitový akumulátor/addressadresní registr nebo dva 8bitové registry
* SP: ukazatel zásobníku (stack pointer), 16 bitů
* PC: programový čítač (program counter), 16 bitů
Nové registry zavedené v&nbsp;Z80 jsou:
* IX: 16bitový index nebo basebázový registr pro 8bitový8bitová immediatepřímá offsetsposunutí
* IY: 16bitový index nebo basebázový registr pro 8bitový8bitová immediatepřímá offsetsposunutí
* I: interruptbázový vectorregistr basepřerušovacího registrvektoru, 8 bitů
* R: DRAMčítač refreshpro counterobčerstvování pamětí DRAM, 8 bitů
* AF´: alternativní (nebo stínový) akumulátor a&nbsp;flag (přepínatelný dovnitřinstrukcí a&nbsp;ven s&nbsp;EX AF, AF´)
* BC´, DE´ a&nbsp;HL´: alternatvníalternativní (nebo stínový) registr (přepínatelnýpřepínatelné dovnitřinstrukcí a&nbsp;ven s&nbsp;EXX)
* Čtyři bitybitový interruptpro statusstav přerušení a&nbsp;interrupt moderežim statuspřerušení
 
NeníAlternativní zderegistry žádnýnejsou přímýpřímo přístup k&nbsp;alternativním registrůmpřístupné, místo toho jsou použity dvě speciální instrukce, EX AF, AF' a&nbsp;EXX, každákteré přepínápouze jeden nebo dva flip-floppřepínají [[Multiplexor|multiplexeryklopný obvod]] vybírající registr A a příznaky nebo zbytek (registry BC, DE a HL) sady registrů. To umožňuje rychlé prohození kontextu pro&nbsp;obsluhu přerušení: instrukce EX AF, AF´ mohoumůže být použitypoužita samostatně (pro opravdu jednoduché a&nbsp;rychlé přerušení) nebo dohromadyspolu s&nbsp;EXX aby se&nbsp;vyměnila celá sada AF, BC, DE, HL. StáleTento postup je&nbsp;to mnohonásobně rychlejší, než přidáváníuložení tohoregistrů saméhona registru do&nbsp;zásobníkuzásobník (pomalejší,které nižšílze priorita,používat víceúrovňovápro přerušenípomalejší běžněobsluhu používajívíceúrovňových zásobníkpřerušení k&nbsp;ukládánís registrůnižší prioritou).
 
Refresh registr, R, se&nbsp;zvýšízvyšuje pokaždé, když CPU vykoná opcode (operační kód) nebo opcode prefix a&nbsp;proto nemá žádný přímípřímý vztah s&nbsp;vykonánímvykonáváním programu. TotoProto se někdy používá pro generování [[Pseudonáhodná čísla|pseudonáhodných čísel]] ve&nbsp;hrách a&nbsp;také ve&nbsp;schématech ochrany softwaru. V&nbsp;některých návrzích je&nbsp;také použit jako „hardware“„hardwarový“ counterčítač, slavný příklad toho je&nbsp;[[ZX81]], který umožňuje sledovat pozici písmene na&nbsp;televizní obrazovce tím, že&nbsp;spouštígeneruje přerušení okolopři obalupřetočení čítače (připojenímpropojením INTA6 dona A6vstup INT).
 
Interupt vector registr,Registr I, se&nbsp;používáje u&nbsp;Z80 konkrétněurčený pro přerušenívyšší ''mode&nbsp;2''byte (vybranýadresy IMtabulky 2obsluh instrukcí).přerušení Dodáváve nejvyššíspeciálním bytrežimu ze&nbsp;základníchpřerušení adresčíslo pro&nbsp;128-vstupní2 tabulku(do obsluhyněhož adres,se kterépřepíná jsouinstrukcí vybírányIM přes2). ukazatelNižší zasláníbyte CPUadresy běhemdodá vědoméhozařízení přerušenív cyklu. Nejnižšípotvrzení byt ze základních adres je napevno nastaven na&nbsp;nulupřerušení. UkazatelTento identifikujerežim zejménaumožňuje perifernípoužívat čip a/nebo&nbsp;periferní128 funkciobslužných neborutin akcipřerušení, kdepřičemž jsoupriorita čipymůže normálněbýt spojenyurčena v&nbsp;takzvaném [[Sériovépořadím zapojení|sériovém zapojení]]zařízení pro&nbsp;prioritnív řešenířetězci. Stejně jako refresh registr,I tento registr jese někdy použitpoužívá takévelmi kreativně,; uv&nbsp;režimech přerušení v&nbsp;''mode&nbsp;0'' a&nbsp;'' 1'' může být použit jednoduše jako další 8bitový datadatový registr.
 
===Z80 - jazyk symbolických adres===