Assembler ASM51
Stránky se budou věnovat základům jazyka ASM51
Základní pojmy při práci s ASM51
Symboly
jsou alfanumerickou reprezentací číselných nebo znakových konstant, adres apod.
Pro zápis symbolu lze použít velké a malé znaky anglické abecedy (A až Z, a až z),
číslice (0 až 9) a dva speciální znaky (? a _)
Pro vzájemné odlišení zápisu čísla a symbolu je nutné, aby symbol nezačínal číslicí.
Malá písmena jsou vnitřně převedena na velká, takže ASM51 nerozlišuje velikost písmen.
Každý symbol může být definován pouze jednou.
Některé symboly jsou vyhrazeny a nemohou proto být použity programátorem.
Jedná se o mnemokódy instrukcí (např. MOV), direktivy assembleru (např. ORG),
operátory assembleru (EQ, NE, GT, GE, LT, LE, HIGH, LOW, MOD, SHR, SHL, NOT, AND, OR a XOR),
a rezervované operandy (A, AB, DPTR, PC, R0 až R7, AR0 až AR7)
Návěští
je speciální případ symbolu, řídí se stejnými pravidly.Každé návěští je zakončené dvojtečkou : .
Obvykle se používá k označení místa programu, kam je třeba skočit nebo pro pojmenování proměnné.
Bitové adresování
Některé registry nebo buňky paměti lze adresovat bitově, nebo-li pracovat s jednotlivými bity.
Pro určení specifického bitu se používá tečka(.).Například nejnižší bit akumulátoru budeme
adresovat ACC.0.Jednotlivé bity lze nastavit pomocí instrukce SETB, nulovat pomocí instrukce CLR.
ASCII literály
Literál je přímé uvedení hodnoty. Například 23 je celočíselný literál.
ASCII literály se uzavírají mezi dva apostrofy ('').Například 'a'.
Komentář
Komentář je libovolná poznámka, zapsaná do zdrojového textu.Začíná středníkem (;) a končí
koncem řádku.Komentáře assembler ignoruje, slouží pro lepší orientaci v programu.
Lokační čítač $
Assembler uchovává lokační čítač (aktuální pozici) pro všechny segmenty (instrukce, přímo adresovatelná data,
nepřímo adresovatelná data a bitově adresovatelná data).
Hodnotu lokačního čítače udává symbol $.
Čísla a operátory
ASM51 podporuje zápis čísel ve čtyřech soustavách (se základy: 2,8,10 a 16). Výchozí je
desítková soustava.
Pro určení soustavy, ve které je číslo zapsáno, slouží přípony B (dvojková), O nebo Q (osmičková),
D (desítková, znak D se nemusí používat, protože desítková soustava je výchozí) a H (šestnáctková).
Vzhledem k tomu, že každé číslo musí začínat číslicí, pro rozlišení čísla od symbolu, musí
být u šestnáctkových čísel, která začínají znakem (A až F), předřazena 0. Doporučuji začínat nulou
každé šestnáctkové číslo.
Při zápisu čísla nesmí být použit mezerník nebo tabulátor (slouží jako oddělovač).
Přípona může být zapsána velkým nebo malým písmenem.
Direktivy (pseudoinstrukce) ASM51
Direktivy slouží pro vyhrazení paměťového prostoru, uložení konstant do paměti programu,
výběr paměťového prostoru, nastavení lokačního čítače, výběr instrukční sady, vložení
zdrojového textu z externího souboru, určení konce zdrojového textu.
EQU - definice symbolu
EQU slouží pro pojmenování literálu nebo pro zavedení nového jména pro stávající symbol.Formát:
Symbol |
EQU |
výraz |
Příklady:
pocet znak port |
equ equ equ |
10 'a' p1 |
SET - nastavení hodnoty symbolu
SET má podbný účel jako EQU. Rozdíl mezi EQU a SET je v tom, že symbol zavedený přes EQU nemůže
měnit svou hodnotu. Symbol zavedený přes SET se může modifikovat. Formát:
Symbol |
SET |
výraz |
Příklady:
max max |
set set |
20 21 |
BIT - pojmenování bitu
BIT přiřadí biu v bitově adresovatelném prostoru zavedený symbol. To umožňuje odkazovat se
na bit tímto symbolem. Formát:
Symbol |
BIT |
výraz |
Pokud je hodnotou výrazu číslo v rozmezí 0 - 127, jedná se o bit z adres 20h - 2Fh.
Pro čísla 128 - 255 se jedná o bit některého SFR.
Příklady:
port0 misto |
bit bit |
p1.0 0 |
CODE
CODE přiřadí adresu v paměťovém prostoru programu zavedenému symbolu. Formát:
Symbol |
CODE |
výraz |
DATA
DATA přiřadí adresu v přímo adresovatelném prostoru dat zavedenému symbolu. Formát:
Symbol |
DATA |
výraz |
IDATA
IDATA přiřadí adresu v nepřímo adresovatelném prostoru dat zavedenému symbolu. Formát:
Symbol |
IDATA |
výraz |
DB - uložení konstanty do paměti programu
DB slouží k uložení konstanty (o rozměru bajtu) do paměti programu.Formát:
Návěští: |
DB |
výraz |
Příklady:
text: cisla: |
db db |
'Ahoj' 1,2,5,8 |
ORG - nastavení počátku
ORG slouží pro nastavení počátku události (pro určení hodnoty lokačního čítače v
aktuálním segmentu).Například pro první instrukci programu musíme nastavit počátek
na adresu 00h.Formát:
|
ORG |
výraz |
END - konec programu
END signalizuje konec zdrojového textu. Přítomnost této direktivy je nutná! Formát:
|
END |
|
INCLUDE - vložení obsahu externího souboru
Pomocí direktivy INCLUDE můžeme do zdrojového textu vkládat externí soubory.
To znamená, že si můžeme vytvořit knihovny často používaných zdrojových textů, ze kterých
následně potřebný zdrojový text vložíme do vytvářeného programu.
Soubor pro vložení vytvoříme v editoru a uložíme ve formátu:"soubor.inc"
Pokud máme "soubor.inc" uložen ve stejném adresáři, jako editor a vytvářený program,
vložíme jej následovně:
include(soubor.inc)
Pokud máme soubor "soubor.inc" uložen v jiném adresáři, musíme vypsat cestu:
include(cesta/soubor.inc)