Základy programování mikropočítačů První program v jazyce symbolických adres
Základní pojmy a principy Procesor: logický automat pro zpracování instrukcí (centrální jednotka počítače / mikropočítače). Instrukce: specifikace jednoduché akce, kterou má a umí provést procesor. Program: posloupnost instrukcí které říkají procesoru co má dělat. Programování: zápis programu (v nějakém programovacím jazyce)
Vývojové diagramy Algoritmus: je přesný návod či postup, kterým lze vyřešit daný typ úlohy. Vývojový diagram: grafické znázornění algoritmu START Vstup: a,b a>b y=a-by=a+b KONEC anone
Základní značky pro tvorbu vývojového diagramu A = B + (ANO)- (NE) Postup (např. matematický výpočet) Rozhodování (podmíněné větvení programu) Mezní značka (například začátek/konec podprogramu) Spojnice (představuje postup provádění algoritmu) A 123 Vstup a výstup dat Ruční vstup dat (například z klávesnice) Zobrazení (například displej) Spojka (představuje přechod z jedné části vývojového diagramu do jiné) default
Jazyk symbolických adres (assembler) Programovací jazyk: prostředek pro zápis algoritmů, které mohou být provedeny na počítači. Strojový kód: je posloupnost instrukcí procesoru vyjádřená čísly. Assembler: programovací jazyk blízký strojovému kódu, též se nazývá jazyk symbolických adres. Název assembler se používá i pro překladač, který tento jazyk překládá do strojového kódu. NÁVĚŠTÍINSTRUKCEOPERANDKOMENTÁŘ VYPOCETLDA#4; načti do registru A hodnotu 4 ADDCISLO2; pričti k registru A obsah paměťové buňky CISLO2 RTS Struktura programového řádku v jazyce symbolických adres:
Registry CPU mikropočítače HCS08 Registr:je velmi malá ale velmi rychlá paměť nacházející se v mikroprocesoru. Registry slouží zejména k dočasnému uložení operandů, se kterými se v procesoru provádějí například aritmetické a logické operace.
Program 1: Součet čísel Úkol: sečíst 2 čísla uložená v paměti mikropočítače a výsledek uložit do paměti. Instrukce pro součet: ADD = sečte obsah registru A a paměťové buňky (M), výsledek vloží do A. ADD: A <- (A) + (M) Z toho plyne: musíme nahrát číslo 1 do registru A, sečíst s druhým číslem a výsledek z registru A uložit do paměti.
Program 1: Součet čísel Vývojový diagram a použité instrukce: LDA cislo1 ADD cislo2 STA vysledek Načíst číslo 1 do reg. A Přičíst k A číslo 2 Uložit výsledek do paměti Začátek Konec
Program 1: použité instrukce LDA – nahraje číslo uložené v paměti do registru A A <- (M) ADD – sečte obsah A s paměťovou buňkou A <- A + (M) STA – uloží obsah A do paměti M <- (A) MOV – přesun M cíl <- M zdroj Direktiva: RMB – rezervuje N bajtů paměti
Program 1: součet čísel Zadání jména a umístění projektu 1.Výběr programovacího jazyka 2.Volba jména projektu a jeho umístění 3.Nastavení potvrdíme kliknutím na „Další“
Výběr příslušného typu mikropočítače a připojení Program 1: součet čísel 1.Výběr cílového mikropočítače 2.Výběr připojení mikropočítače 3.Kliknutím na „Dokončit“ ukončíme průvodce
CodeWarrior automaticky vygeneroval kostru aplikace: Program 1: součet čísel
Program 1: program v jazyce symbolických adres 1rmbvysledek 1rmbcislo2 1rmbcislo1 vysledeksta add cislo1 cislo2 lda mov #2,cislo1 #5,cislo2 mov
Program 1: překlad a spuštění (ladění) programu Přeložit program Spustit a ladit program v simulátoru 1.Kompilace: překlad algoritmu zapsaného v programovacím jazyce do strojového kódu. 2.Spustit a ladit program: zavedení programu do cílového mikropočítače (nebo simulátoru) a jeho následné spuštění Sestavení (Make) Ladění (Debug)
Program 1: běh programu Tlačítka pro krokování programu Zdrojový kód Proměnné Kód v paměti Registry procesoru Obsah paměti
Po inicializaci proměnných cislo1 a cislo2 Program 1: běh programu Tlačítkem „1 krok“ (single step) provádíme program po jednotlivých řádcích MOV přesune přímý operand do proměnné V okně Data vidíme obsah proměnných cislo1, cislo2 a vysledek.
Program 1: součet proveden Po provedení součtu a uložení výsledku pokračuje nekonečnou smyčkou obsluhující watchdog V proměnné vysledek je součet obou čísel Zavřením okna simulátoru se vrátíme do prostředí CodeWarrior
Rozbor kódu programu Direktiva RMB slouží k rezervování místa v paměti (definici proměnných) Jméno RMB [Počet Byte] cislo1rmb1 cislo2rmb1 vysledekrmb1 mov#2,cislo1 mov#5,cislo2 ldacislo1 addcislo2 stavysledek Definuje 3 proměnné každou o velikosti 1B.Přesune číslo 2 do proměnné cislo1 a číslo 5 do proměnné cislo2. Do registru A načte obsah proměnné cislo1Sečte registr A a obsah proměnné cislo2 Uloží obsah registru A do proměnné vysledek
Doplňující informace SECTION: direktiva definující tzv. sekci kódu, tj. část kódu umístěnou v souvislém úseku paměti mikropočítače (od určité adresy). INCLUDE: direktiva vkládající na dané místo obsah jiného souboru (nejčastěji s definicemi symbolů apod.). XDEF: direktiva označující symbol, na který je možno se odkazovat z jiných modulů (a definované v aktuálním souboru). XREF: direktiva označující symbol, který je definován v jiném modulu ale používá se i v aktuálním souboru).
Konec Úspěšně jste napsali, přeložili a spustili první program pro HCS08! Definice a vysvětlení základních pojmů viz např.: