Program Programátorský model procesoru Instrukční soubor Algoritmizace jednoduchých úloh
Programátorský model procesoru Paměť 0000H Vstupy Procesor PSW C … 8 ACC Řadič R0 8 8 R1 ALU 16 8 R7 DPTR DPH DPL 8 SP SPH SPL PC FFFFH Výstupy
Malý reálný mikropočítač Více informací např. na www.atmel.com AT89C2051 - + 4.5V
Instrukce procesoru Elementy programu Uloženy v paměti programu počítače Paměť pro Programu buď je nebo není totožná s pamětí pro Data Dělení podle velikosti oblasti paměti, kterou instrukce zabírá: jednobytové, dvoubajtové, tříbajtové, … Prvním bytem instrukce je vždy operační kód Vícebytové instrukce mají v dalších bytech upřesněny své operandy Operandy instrukcí mohou být zcela určeny operačním kódem, i jednobytové instrukce tedy mohou mít své operandy. Počet bytů pro operandy je vždy dán operačním kódem
Vykonávání instrukcí, programu Vykonání každé instrukce trvá určitou dobu. Délka této doby je obecně závislá na složitosti instrukce. Některé instrukce mají i několik různých dob provádění (podle podmínek, za kterých jsou vykonávány). U reálných procesorů je doba vykonávání instrukcí v řádech ns až s. Dále budeme pro jednoduchost předpokládat fiktivní procesor, s jednotnou dobou vykonávání každé instrukce – 1 s. Instrukce jsou vykonávány po sobě, v pořadí, v jakém jsou zapsány v programu. Jen po některých instrukcích může být vykonávána jiná instrukce než je ta, která je v programu bezprostředně následující. Procesor vždy vykonává nějakou instrukci. Zapnutý procesor nezná jinou činnost než vykonávat instrukce. Po zapnutí procesor přečte z dohodnuté adresy, obvykle 0000H, jeden byte a interpretuje ho jako operační kód své první instrukce, provede ji a pokračuje dále.
Zápis instrukce se skládá ze jména instrukce a ze seznamu operandů. mov A, R1 Druhý operand Kolika bytová je uvedená instrukce, když má dva operandy? Jméno instrukce Může některá instrukce, která má jako operand konstantu, být jednobytová? První operand Operandem instrukce může být : A co když tam má přímou adresu? vyjmenovaný registr procesoru konstanta místo v paměti určené přímou adresou místo v paměti určené nepřímou adresou mov A, R1 mov A, #123 mov A, 100 mov A, @DPTR Číselné hodnoty v zápisu instrukcí lze rovnocenně uvádět v dekadické (D) nebo hexadecimální (H) nebo binární (B) soustavě. Zápis hodnoty číselné začíná číslicí 0-9 a může končit určením soustavy. Implicitní je dekadická soustava.
Instrukce procesoru pro přesun (MOV) mov X, Y Instrukce kopíruje osmibitová data ze zdroje Y do cíle X mov A, Rn mov A, DPH mov A, DPL mov A, SPH mov A, SPL mov Rn, A mov DPH, A mov DPL, A mov SPH, A mov SPL, A mov A, #Data8 mov Rn, #Data8 mov DPTR, #Data16 mov SP, #Data16 mov A, Adresa8 mov A, @Rn mov @Rn, A mov A, @DPTR mov @DPTR, A mov Adresa8, A Př.: Vyměnit obsahy registrů R0 a R1 mov A, R0 mov R2, A mov A, R1 mov R0, A mov A, R2 mov R1, A Př.: Do paměti, na adresu AAh vložit hodnotu 123 mov A, #123 mov 0AAH, A Př.: Do paměti, na adresu AAAAh vložit hodnotu 123 mov A, #123 mov DPTR, #0AAAAH mov @DPTR, A Jako vedlejší efekt program také změní obsah registru Acc. Jako vedlejší efekt program také změní obsahy registrů Acc a DPTR. Jako vedlejší efekt program také změní obsahy registrů R2 a Acc.
Instrukce procesoru pro vstup a výstup (IN, OUT) Instrukce zkopíruje osmibitová data z adresou vybraného vstupního portu do akumulátoru Acc. in A, Adresa8 Instrukce zkopíruje osmibitová data z akumulátoru Acc na adresou vybraný výstupní port. out Adresa8, A Vstupní porty nemají vlastnost registru. Jejich obsah je v každém okamžiku dán děním mimo počítač. Instrukce „in“ jednorázově, jen v momentu svého vykonávání, zkopíruje obsah portu do akumulátoru Acc Výstupní porty mají vlastnost registru. Jejich obsah je dán posledním provedením instrukce „out“.