90 likes | 240 Views
AVR Assembler. Symboly jsou alfanumerickou reprezentací číselných nebo znakových konstant, adres apod. symbol se může skládat z malých a velkých znaků anglické abecedy (a-z, A-Z), číslic (0-9) a znaku podtržení (_) symbol nesmí začínat číslicí překladač nerozlišuje malá a velká písmena
E N D
AVR Assembler Symboly • jsou alfanumerickou reprezentací číselných nebo znakových konstant, adres apod. • symbol se může skládat z malých a velkých znaků anglické abecedy (a-z, A-Z), číslic (0-9) a znaku podtržení (_) • symbol nesmí začínat číslicí • překladač nerozlišuje malá a velká písmena • některé symboly jsou vyhrazeny • mnemokódy instrukcí (např. MOV) • funkce asembleru (např. LOW) • rezervované operandy (např. R0 až R31) Návěští • zvláštní případ symbolu • platí pro něj pravidla uvedená výše • návěští je ukončeno dvojtečkou (:) • používá se k označení určitého místa v programu a pro pojmenovávání proměnných
AVR Assembler Čísla • překladač podporuje čísla v soustavách se základy 2, 8, 10 a 16 • pro určení soustavy se používá předpony • dvojkovému číslu předchází sekvence 0b (např. 0b11111010) • osmičkovému číslu předchází tzv. vodící nula (např. 0123) • desítkové hodnoty se zapisují běžným způsobem • šestnáckovému číslu předchází dolar ($) nebo sekvence 0x (např. $FF nebo 0xFF) Řetězcové literály • znakové hodnoty se uzavírají mezi apostrofy (') • řetězcové literály se uzavírají mezi uvozovky (") Lokační čítač programového segmentu • hodnota lokačního čítače (aktuální pozice) pro programový segment je dostupná prostřednictvím symbolu PC
AVR Assembler – direktivy .EQU – definice symbolu • slouží pro pojmenování literálu nebo pro zavedení nového jména pro stávající symbol • formát: .equ symbol=výraz .SET – nastavení hodnoty symbolu • podobný účel jako .EQU, rozdíl je v tom, že symbol zavedený pomocí .EQU nemůže měnit svou hodnotu • formát: .set symbol=výraz .DEF – definice symbolického jména registru • umožňuje zavádět pro registry nové symboly • jeden registr může mít více takových aliasů, symboly je možné redefinovat • formát: .def symbol=registr .CSEG / .DSEG / .ESEG – výběr segmentu • slouží k výběru jednoho ze tří paměťových prostorů • .CSEG – programový segment (paměť programu) • .DSEG – datový segment (SRAM) • .ESEG – segment E2PROM • výchozím segmentem je .CSEG
AVR Assembler – direktivy .ORG – nastavení hodnoty lokačního čítače • výchozí hodnota lokačního čítače pro segmenty .CSEG a .ESEG je nula (0), pro .DSEG je $60 (přeskočí se registrové pole a V/V registry • formát:.org výraz .BYTE – vyhrazení prostoru v bajtech • slouží k vyhrazení prostoru v datovém segmentu (RAM) • formát: [návěští:] .byte výraz • výraz udává počet bajtů, které chceme pro proměnnou vyhradit .DB – uložení konstanty do paměti programu • slouží k uložení konstanty (v rozměru bajtu) do FLASH nebo E2PROM • v případě programové paměti dochází k zarovnávání hodnot jednoho řádku na sudý počet bajtů • formát: [návěští:] .db výraz[,výraz…] .DW – uložení konstanty do paměti programu • slouží k uložení konstanty (v rozměru slova) do FLASH nebo E2PROM • formát: [návěští:] .dw výraz[,výraz…]
AVR Assembler – direktivy .INCLUDE – vložení obsahu externího souboru • vloží na místo direktivy obsah jiného souboru • formát:.include „jméno_souboru" .DEVICE – definice typu mikroprocesoru • určuje typ mikroprocesoru, pro který se provádí překlad • zajišťuje kontrolu rozsahu adres ve FLASH, RAM a E2PROM • zajišťuje kontrolu platné instrukční sady • formát: .device typ_mikroprocesoru .EXIT– uložení překladu • signalizuje konec zdrojového textu, předčasně ukončí překlad • formát: .exit .LIST – zapnutí generování výpisu • formát: .list .NOLIST – vypnutí generování výpisu • formát: .nolist .LISTMAC– zapnutí expanze maker ve výpisu • formát: .listmac
AVR Assembler – makra .MACRO – definice makra • uvozuje počátek makra, parametrem je jméno makra • je-li makro použito, dochází k jeho rozvinutí (expanzi) • makro může mít až 10 parametrů • na parametry se v těle makra odkazujeme přes symboly @0 až @9 • při použití makra se parametry odělují čárkami • formát: .macro jméno_makra .ENDMACRO – konec definice makra • formát: .endmacro Příklad makra .macro SUBI16 subi @1, low(@0) sbci @2, high(@0) .endmacro .cseg subi16 $1234,r16,r17
Definiční soubory • C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes • Pro každý typ mikroprocesoru AVR jeden definiční soubor, který obsahuje • určení typu mikroprocesoru – direktiva .device • definice V/V registrů • definice ukazatelových registrů • definice konců paměťových segmentů • definice vektorů přerušení • Pro procesor ATmega8 se příslušný definiční soubor jmenuje m8def.inc