- přesuny dat
- aritmetické operace
- logické operace
- operace pro předání řízení (skoky)
Pro programování jednočipových mikropočítačů řady 8051 používáme jazyk symbolických adres (JSA) - nesprávně assembler, strojově orientovaný jazyk, který umožňuje pružně a beze zbytku využívat technické prostředky mikrořadiče. Zdrojový text programu, zapsaný v tomto jazyce je nutné zpracovat překladačem (kompilátorem, assemblerem). Ten generuje strojový kód mikroprocesoru ve formátu vhodném k zavedení prostřednictvím programátoru do paměti ROM mikropočítače. Nejčastěji se jedná o formáty Intel HEX a BIN jenž se ukládají do souborů s adekvátními příponami HEX nebo BIN. Program (posloupnost příkazů JSA) můžeme psát v jednoduchém textovém editoru. Ukládáme jej jako prostý text bez formátovacích kódů - přípona souboru musí být ASM.
Instrukční soubor mikropočítačů 8051 má celkem 111 instrukcí, z nichž 49 je jednobajtových, 45 dvoubajtových a 17 tříbajtových. Každá instrukce má pole operačního kódu (zkratka anglického vyjádření činnosti instrukce), za kterým následuje pole operandů, zpravidla ve tvaru "cílový operand, zdrojový operand"). Pole operandů určuje použitý typ dat a způsob (nebo způsoby) adresování.
Soubor instrukcí obvodů 8051 se rozděluje do čtyř funkčních skupin:
Mikrořadič 8051 má ještě speciální instrukce pro práci s jednotlivými bity.
Přesuny dat v paměti procesoru provádí instrukce přesunu MOV (anglicky move):
MOV oper1, oper2
OPER1 udává cílovou adresu (kam se přesouvá) a OPER2 udává zdrojovou adresu (odkud se přesouvá). Hodnota na zdrojové adrese se nemění, ale hodnota v cílové adrese se přepíše hodnotou ze zdrojové adresy. Dochází ta spíše ke kopírování hodnot a ne k přesunu!
Začněme od nejjednoduššího příkladu, a to je zápis hodnoty z adresy např. 20H do registru A ( akumulátoru - střadače):
MOV A, 20H
Po provedení této instrukce se naplní obsah registru A hodnotou, která je uložena na adrese 20H (20 hexadecjmálně - tj. 32 desítkově) v paměti pro data.
Jiný příklad:
MOV R0, #10 ;zápis čísla 10 do registru R0
Zde je nutno upozornit na znak # (dvojitý křížek - hashtag), který je uveden před číslem 10. Tento znak je v JSA 8051 velmi důležitý, protože odlišuje zápis konstanty (přímých dat) od zápisu hodnoty na přímé adrese (adresa v oblasti vnitřní paměti RAM nebo oblasti registrů speciálních funkcí SFR). Špatné použití znaku # (ať už jeho vynechání či nadbytečnost) má za následek vznik těžko zjistitelných chyb a způsobuje "záhadné" chování programu.
Příklad:
MOV A, #0 ;zápis 0 do A
MOV A, 0 ;zápis hodnoty z adresy 0 do A !!!
V druhém řádku příkladu nedojde k vynulování registru A, ale k přesunu hodnoty uložené na přímé adrese 0 do registru A. Protože na adrese 0 ve vnitřní paměti RAM leží registr R0, dojde k zápisu hodnoty, která je v něm uložena do registru A.
Instrukce MOV má široké spektrum parametrů a je možno ji použít ve všech adresovacích modech obvodu 8051. Mikropočítač 8051 užívá pět způsobů adresování:
Na základě výše uvedeného rozdělení metod adresování uvedu stručný přehled paměťových oblastí, využívaných jednotlivými adresovacími metodami.
Adresování s registrem:
Zde si všimněte znaku @ (zavináč), který předznamenává nepřímé adresování. Znak @ před registrem znamená, že se hodnota nepřesune do registru, nýbrž na adresu, jenž je v něm obsažena!!!
8051 má instrukce pro přičítání do akumulátoru, pro odčítání z akumulátoru, pro násobení obsahů registrů A a B, pro celočíselné dělení obsahu akumulátoru registrem B, pro inkrementaci a dekrementaci obsahu registrů.