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)