Základní pojmy

Na úvod bude dobré ujasnit si některé základní pojmy.

Mikroprocesor se skládá z jednoho (nebo více) integrovaných obvodů. Tohle označení se používalo hlavně v 70. a 80. letech 20. století, aby se odlišily nové mikroprocesory (většinou obvody vysoké a velmi vysoké integrace – LSI, VLSI) od starých procesorů, poskládaných z mnoha jednodušších obvodů. S masivním nástupem PC třídy 386 a vyšší se zase začalo používat slovo „procesor“. Slovo „mikroprocesor“ tak zůstává spojeno hlavně s osmibitovou érou.

Mikroprocesor většinou obsahuje nějakou řídicí jednotku, která vykonává program, sadu registrů, v nichž jsou uložena data, se kterými se pracuje, a nějakou jednotku, ve které se provádějí matematické operace.

Ve světě mikroprocesorů nejsou žádné příkazy známé z vyšších programovacích jazyků. PRINT tu nenajdete. Jediné, co procesor umí, je vzít z paměti číslo – operační (strojový) kód instrukce – a podle něj provést nějakou činnost, třeba přesunout hodnotu odněkud někam nebo sečíst dvě čísla. Jediné, čemu mikroprocesor rozumí, je tedy číslo. A protože hovoříme o osmibitových mikroprocesorech, je přirozené, že ta nejčastěji používaná čísla budou právě osmibitová, tedy v rozsahu 0 až 255, hexadecimálně 00h až FFh.

Platí tedy. že každý osmibitový procesor zná přesně 256 instrukcí? Ani náhodou! Některé jich znají mnohem míň (třeba procesor 8080), takže některé operační kódy nemají žádnou přiřazenou instrukci. Jiné naopak mají mnohem víc instrukcí (Z80) a řeší to tím, že některé instrukce mají operační kód vícebajtový.

Program se skládá z instrukcí, které procesor vykonává po řadě tak, jak jdou po sobě v paměti, s výjimkou skoků. Program je zapsaný třeba takto:

21h 55h 3Ah

Tyto tři bajty jsou procesorem 8080 interpretovány tak, že do registrů H a L uloží hodnoty 3Ah a 55h. U procesoru Z80 mají tato tři čísla stejný efekt (protože Z80 je s 8080 na úrovni strojového kódu kompatibilní). U procesoru 6502 mají zcela jiný význam – vezme se obsah registru X, k němu se přičte číslo 55h, výsledek se ořízne na osm bitů a dostaneme adresu. Z paměti na téhle adrese se vezme jeden bajt, z paměti na adrese o jedničku vyšší druhý bajt. Tyto dva bajty dají dohromady 16bitovou adresu v paměti, kam procesor sáhne pro číslo, a nakonec provede operaci AND mezi hodnotou v registru A a tímto číslem (výsledek uloží do registru A). No a pak následuje prázdná instrukce (3Ah).

Různé procesory mají tedy odlišné vnímání stejných kódů, což je důvod, proč nelze vzít program pro jeden z nich a spustit bez úprav na druhém.

Jazyk symbolických adres (JSA) slouží k tomu, aby si programátor nemusel pamatovat tyhle číselné kódy (což o to, většinou si je stejně pamatují), a aby u složitějších programů nemusel počítat adresy, tj. na jaké adrese v paměti je která instrukce. Proto zavádí jednak symbolická návěští (takže se zapisuje nikoli JUMP 1234h, ale třeba JUMP START), a jednak zavádí symbolická jména pro instrukce. Takže třeba u procesoru 8080 nemusí programátor zapisovat zmíněný skok jako kód C3h, ale symbolicky: „JMP“ (jako že jump, rozumíme si…)

Assembler je nástroj, který překládá program, zapsaný v těchto symbolických jménech, do konkrétních kódů jednotlivých instrukcí.

Co to znamená, když se řekne „Program je napsaný v assembleru“? Ve skutečnosti to, že program je napsaný v jazyku symbolických adres. Zkrátka se stalo, že se tomuhle jazyku začalo říkat „assembler“, i když správně je assembler vlastně ten překladač.

A když někdo řekne, že napsal program „ve strojáku“? Pravděpodobně ho napsal v tom symbolickém jazyce a přeložil assemblerem do strojového kódu. „Stroják“ je takové označení, které se taky přeneslo na jazyk symbolických adres. Ale mohlo se stát, že je dotyčný hardcore programátor a opravdu z hlavy nadiktoval instrukční kódy…

Teď jsme si vymezili základní pojmy, co dál? V zásadě se můžeme pustit do popisu procesoru a jeho instrukcí. Můžete se podívat na procesor, který vás zajímá, ale pokud nevíte, jaký vás zajímá, začněte od toho nejstaršího, kterému se budu věnovat, a tím je Intel 8080.

Líbil se vám článek? Podpořte autora na Patreonu
Příspěvek byl publikován v rubrice 6502, 8080, Z80. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *