Táto kategória bude tvorená ako seriál, tzn. nevyhnutné pri programovaní v Assemblera. Mikroprocesory sú kompletné počítače zrealizované na jednom čipe. Čiže trošku ochudobnená verzia nášho stolového počítača sa vošla do jednej súčiastky. Nesmieme si ich mýliť s procesormi v počítači. Majú len málo spoločné s procesorom samotným. Mikroprocesory rady 8051 tu nie sú zrovna krátko. Jadro 8051 vytvorila spoločnosť Intel v roku 1980 a veľmi rýchlo sa rozšírilo po svete. Vďaka jeho jednoduchej štruktúre sa veľmi rozšírilo aj medzi amatérskych konštruktérov, medzi ktorými je obľúbené doteraz. A aj po 30. stále vyrába a používa aj v komerčnej technike. Nájdeme ich skoro v každom dnešnom zariadení automatických prístrojov.
Bloková schéma jadra 8051
Architektúra mikroprocesora 8051
Na obrázku vidíme blokovú schému jadra 8051. Väčšinu vývodov mikroprocesora tvoria porty. Porty sú vstupno-výstupné „brány“ mikroprocesora. Mikroprocesor má štyri porty, pričom každý má osem bitov (8 vývodov). Každý port slúži ako vstup, mikroprocesor dokáže prečítať, či sú na portoch logické 0 alebo 1.
- ALU: Aritmeticko-logická jednotka. Vykonáva všetky matematické a logické operácie. Počet bitov ALU sa určuje koľko bitový je mikroprocesor.
- RAM: Je pamäť dát. Je to pamäť obsiahnutá v mikroprocesore do ktorej sa ukladajú dočasné údaje (medzivýsledky, prijaté dáta...). Táto pamäť je energeticky závislá, tzn. že po odpojení napájacieho napätia sa všetky údaje nenávratne stratia. Po opätovnom zapnutí je RAM prázdna.
- FLASH: Je pamäť programu (ROM). Je to pamäť obsiahnutá v mikroprocesore do ktorej sa ukladá program, ktorý bude mikroprocesor vykonávať. Pamäť je energeticky nezávislá, tzn. aj po odpojení napájacieho napätia dáta ostanú uložené.
- OSC: Je oscilátor. Mikroprocesor potrebuje nejakú taktovaciu frekvenciu, ktorá sa získava práve z tohto oscilátora. Jedna operácia, ktorú mikroprocesor spraví, sa nazýva strojový cyklus. Jeden strojový cyklus trvá 12 kmitov oscilátora. Frekvencia strojového cyklu je teda 12 krát menšej ako kmitá oscilátor.
Programovanie mikroprocesorov
Mikroprocesory sa dajú programovať rôznymi programovacími jazykmi, napríklad v Pascali alebo v C-čku. Ale my sa budeme venovať Assembleru. Assembler je jazyk symbolických adries. Je to programovací jazyk na tej najnižšej, čiže hardvérovej úrovni. Všetky ostatné sú od neho už zložitejší. Urobiť rozsiahlejší projekt a programovať ho v Assembleri znamená napísať stovky a doslova aj tisíce riadkov programu. Assembler sa nazýva jazyk symbolických adries preto, lebo pozná iba inštrukcie (príkazy) ktoré obsahuje jadro. V napísaného programu krásne vidno postupnosť operácií ktoré mikroprocesor vykonáva. symbolicky - skratkami slov. Assembler ich potom iba preloží do strojového kódu. Vlastne robíme to isté (len namiesto hodnoty inštrukcie napíšeme slovo), ale je to dosť nepraktické. Aj Assembler pre každé jadro pozná iné inštrukcie, ktorých zápis je iný. Jadro 8051 pozná 111 inštrukcií.
Pracovať priamo so zdrojovým kódom je pre človeka veľmi zložité, pretože programy v strojovom kóde sú postupnosťami veľmi komplikované formátovaných čísel. Preto bolo potrebné vytvoriť jazyk, ktorý by bol zrozumiteľný pre človeka a zároveň by bol transformovateľný do strojového kódu. Assembler - jazyk symbolických adries je programovací jazyk, v ktorom každý kód inštrukcie generuje jednu inštrukciu strojového jazyka, viazanú na konkrétny procesor počítača (napríklad v Céčku sa kódový príkaz už neviaže na konkrétny počítač alebo operačný systém). Jazyk nízkej úrovne znamená, že assembler pracuje priamo len so štandardnými dátovými typmi ako sú znaky, celé a reálne čísla, pomocou ktorých možno skontrolovať fungovanie styku počítača s prostredím.
Prečítajte si tiež: Sprievodca kombináciou vitamínov
Základy assembleru: Jazyk hardvéru
Základné pojmy
- Inštrukcia procesoru: Základný prvok činnosti, ktorú vykonáva procesor (Central Processor Unit).
- Register: (register procesoru) malá pamäťová oblasť umiestnená vo vnútri procesoru, v mieste s najrýchlejším prístupom procesoru k pamäti. Register je pomenovaný a je velmi malý - možno do neho uložiť obvykle len niekoľkobitov informácií.
i8080 je 8 bitový mikroprocesor, ktorý bol uvedený na trh firmou Intel v roku 1974. Mikroprocesor komunikuje so svojim okolím prostredníctvom 8 bitovej dátovej zbernice a 16 bitovej adresovej zbernice za pomoci niekoľkých riadiacich signálov. Adresa vyberá bunku pamäte alebo periférne zariadenie, kam/odkiaľ sa bude zapisovať/čítať hodnota na dátovej zbernici. Po ôsmych bitoch dátovej zbernice môže prenášať hodnotu 0 až 255 (00h až 0FFh) a 16 bitová adresová zbernica umožňuje adresovať 65536 pamäťových buniek - 0 až 65535 (0000h až 0FFFFh).
Registrový pár
Dvojice registrov B a C, D a E, H a L možno používať ako 16 bitové registre v pároch B, D a H. Registrový pár H sa používa ako "pseudo-register" M (Memory) pri presunoch údajov medzi pamäťou a registrami - nepriame adresovanie. Je dôležité si uvedomiť, že ak pracujeme s registrovým párom, menia sa aj jeho jednotlivé registre. Ak je v registri HL hodnota 42841, tak v registri H (vyšší byte) je hodnota 167 (celá časť podielu 42841/256) a v registri L (nižší byte) je hodnota 89 (zbytok po delení 42841/256). Opačne, ak naplníme jednotlivé registre nejakými hodnotami, tak v registrovom páre bude hodnota HL=256*H+L. Niekedy sa v texte nepoužíva slovné spojenie registrový pár, ale priamo sa hovorí napr. o registri HL, čo je v danom kontexte často zrozumiteľnejšie. Naopak, v samotných inštrukciách sa používa vždy ako operand iba označenie napr. Čo sa týka 16 bitových čísel a ich uloženia v pamäti, tak sa používa tzv. Little Endian, čo znamená, že 2 byty hodnoty sú v pamäti uložené v poradí najprv nižší byte a potom vyšší byte.
Príznakový register F
Príznakový register F obsahuje 5 príznakov, na základe ktorých sa môže program vetviť - inštrukcie podmienených skokov, volaní podprogramov a návratov z podprogramu. Stav príznakov sa mení po vykonaní inštrukcie.
- S - Sign flag (znamienko) - Príznak záporného výsledku - kopíruje sa doň 7. bit výsledku v akumulátore. Čísla väčšie ako 127 sú chápané ako záporné.
- AC - Auxilliary Carry flag - Pomocný príznak prenosu z 3. bitu do 4.
- CY - Carry flag - Príznak pretečenia - má hodnotu 0, ak nedošlo k pretečeniu (v podmienke NC (No Carry)), alebo hodnotu 1, ak k pretečeniu došlo (v podmienke C (Carry)). K pretečeniu dôjde, ak sa sčítajú dve čísla, napr. 200 a 100. Výsledok by mal byť 300, avšak toto číslo sa nevojde do 8 bitov, výsledok teda bude 44 a bude nastavený príznak Carry. Obdobne je to pri odčítaní alebo pri sčítaní dvoj-registrov. Tento príznak možno individuálne nastaviť alebo jeho hodnotu zmeniť na opačnú. Je vhodný pri aritmetických operáciách s číslami väčšími ako 8/16 bitov.
Čítač inštrukcií PC a ukazovateľ zásobníka SP
Čítač inštrukcií PC ukazuje vždy na inštrukciu, ktorá sa bude vykonávať. Jeho hodnota sa mení po vykonaní inštrukcie o 1 až 3, podľa dĺžky vykonanej inštrukcie. Ukazateľ zásobníka SP obsahuje adresu vrcholu zásobníka. Zásobník slúži na uloženie návratovej adresy pri volaní podprogramu a dočasné odloženie údajov v registrových pároch.
Logické inštrukcie
Medzi základné logické inštrukcie patria:
Prečítajte si tiež: Kanabidiol a zdravie
- ADD (ADD) a SUB (Subtract): Dva operandy. Použiť môžeme register alebo nami vytvorenú premennú.
- AND: Logický súčin. Opäť dva operandy. Ak je bit prvého operandu a bit druhého operandu 1, bude vo výslednom čísle tento bit tiež 1.
- OR: Logické sčítanie. Používa sa na nastavenie požadovaných bitov, napr.
- XOR: Logická funkcia. Pokiaľ dáme Xoru rovnaké číslo tak vždy vyjde 0. Je vhodný pre nulovanie.
- NOT: Inštrukcia neguje obsah argumentu, t.j. vymení všetky 0 za 1 a naopak.
MOV A, 0x01 ;hodnota akumulátora je 0x01, potom ZF=0.
MOV A, 0x00 ;hodnota akumulátora je 0x00, teda nulová.
INC: Táto inštrukcia zvýši 8 bitové číslo o jednotku (+1). Pre INC a DEC inštrukcie sa hodnoty príznakov CF, ZF sa nastavujú pri pretečení resp.
MOVX, resp. rozumejú sa tým skupiny 4 bitov v registri.
niblov medzi sebou v rámci jednoho slova, niektoré medzi dvomi slovami.
Inštrukcia vymieňa obsah zdroja s cieľa. Inštrukcia nepodmieneného skoku. Dlžka inštrukcie je 2 byty. Inštrukcia absolútneho skoku, používa sa 16 bitová adresa. Táto inštrukcia zabezpečí. Inštrukcie podmieneného skoku sa navzájom odlišujú rozhodovacou podmienkov, ktorá riadi prevedenie skoku. Po vyhodnotení podmienky skoku sa program bude vykonávať ďalej alebo sa vykonávanie programu presunie na iné miesto.
Porovná argumenty, ale neuloží výsledok. Inštrukcia zavolá pod pogram.
Prečítajte si tiež: Ovčie kiahne u detí
| Inštrukcia | Popis |
|---|---|
| Posun doprava | Posunie všetky bity v argumente doprava o n miest. Pri každom posune uloží do nultého bitu obsah siedmeho bitu. |
| Posun doľava | Posunie všetky bity v argumente doľava o n miest. Pri každom posune uloží do nultého bitu obsah siedmeho bitu. |
| Posun doprava (aritmetický) | Posunie všetky bity registra doprava. Do siedmeho bitu uloží siedmi bit. |
| Posun doľava (logický) | Posunie všetky bity registra doľava. Do spodného bitu uloží nulu. Ukladáa najvyšší bit t.j. |
| HALT | Uvedie procesor do stavu halt. |