AVR Assembler Symboly Návěští 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 Řetězcové literály 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 Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.
AVR Assembler – operátory + sčítání - odčítání nebo znaménko mínus * násobení / dělení ~ bitová negace | bitový součet & bitový součin ^ výlučný bitový součet << posuv vlevo >> posuv vpravo ! logická negace || logický součet && logický součin < menší > větší <= menší nebo rovno >= větší nebo rovno == rovno != nerovno Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.
AVR Assembler – funkce LOW vrátí první bajt výrazu HIGH vrátí druhý bajt výrazu BYTE2 vrátí druhý bajt výrazu (jako HIGH) BYTE3 vrátí třetí bajt výrazu BYTE4 vrátí čtvrtý bajt výrazu LWRD vrátí bity 0 až 15 výrazu HWRD vrátí bity 16 až 31 výrazu PAGE vrátí bity 16 až 21 výrazu EXP2 vrátí mocninu dvou LOG2 vrátí celočíselnou část logaritmu při základu dva Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.
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 Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.
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…] Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.
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 Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.
AVR Assembler – makra Příklad 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 Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.
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 Literál je přímé uvedení hodnoty. Např. 56 je celočíselný literál.