Programování v Assembleru
Stránky se budou věnovat programování v Assembleru
Vzhled a struktura programu
Při psaní jakéhokoliv programu je důležité, aby výsledný program byl pokud možno
přehledný a pochopitelný. Tomu můžeme napomoci vzhledem a strukturou zdrojového textu.
Proto je vhodné vytvořit hlavičku, ve které popíšeme, k čemu má program sloužit,
uvedeme autora a datum vzniku.
Hlavičku vytvoříme pomocí textu zapsaného za středník (;). Například:
;***program pro ukazku, miloslav siroky, 25.10.2005***
;***toto je priklad vzhledu a struktury programu******
;***autor: miloslav siroky, vytvoreno 25.10.2005******
start: |
org mov mov clr end |
00h a,#123 r0,a a |
;nastaveni pocatku programu ;zapsani prime ciselne hodnoty 123 do akumulatoru ;presunuti obsahu akumulatoru do registru r0 ;vynulovani obsahu akumulatoru ;prazdny radek pro oddeleni ;konec programu |
Několik příkladů programů
Program pro převrácení čísla, vstupní registr r0, cílový r1
;***program pro prevraceni bitu, vstupni registr r0, cilovy r1***
;*********autor: miloslav siroky, vytvoreno 25.10.2005***********
start: |
org mov mov mov rrc mov mov rlc mov djnz end |
00h r0,#123 r2,#8 a,r0 a r0,a a,r1 a r1,a r2,start |
;nastaveni pocatku programu ;prazdny radek pro oddeleni bloku ;vlozeni prime ciselne hodnoty do registru r0 ;do registru r2 vlozime cislo ;pro pocet opakovani cyklu ;presunuti obsahu registru r0 do akumulatoru ;rotace akumulatoru vpravo pres bit C v registru PSW ;presunuti rotovaneho cisla zpet do registru r0 ;presunuti obsahu registru r1 do akumulatoru ;rotace akumulatoru vlevo pres bit C v registru PSW ;presun rotovaneho cisla zpet do registru r1 ;opakovani cyklu dle obsahu registru r2 ;instrukce djnz odecte od obsahu registru 1 ;a skoci, neni-li roven 0 ;konec programu |
;***zpozdovaci smycka 1ms, autor: miloslav siroky, vytvoreno 25.10.2005******
delay1ms: sm1ms: |
mov mov djnz djnz ret |
r7,#2 r6,#250 r6,$ r7,sm1ms |
;vlozeni prime ciselne hodnoty do registru r7 ;vlozeni prime ciselne hodnoty do registru r6 ;obsah r6 se decrementuje, dokud ;neni roven 0, cca 0,5ms ;obsah r7 se decrementuje a skoci ;na znovunaplneni registru r6, ;ve vysledku tedy nasobime dobu ;provadeni djnz s registrem r6 ;cislem v registru r7 ;navrat z podprogramu |
;****podprogram zpozdeni cca 0.5 s, ulozen jako del.inc pro vlozeni direktivou include****
del: sma: smb: |
setb clr mov mov mov djnz djnz djnz clr clr ret |
rs0 rs1 r7,#4 r6,#250 r5,#250 r5,$ r6,smb r7,sma rs0 rs1 |
;nastaveni banky registru pomoci bitu ;rs1 a rs0 v registru PSW ;na banku 1 ;nastaveni banky registru ;zpet na banku 0 ;navrat z podprogramu |