You are on page 1of 26

Forrs: http://www.doksi.

hu

3. fejezet

Mikrogpek assembly nyelv programozsa

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

A 3. fejezet tartalomjegyzke: 3. Mikrogpek programozsa _______________________________________________ 42


3.1. A programozsrl ltalban________________________________________________ 42
A programozs clja __________________________________________________________ 42 A programfejleszts lpsei ____________________________________________________ 43

3.1.1. 3.1.2.

3.2.

Assembly nyelv programozs______________________________________________ 44


A forrsnyelvi program _______________________________________________________ 44 A cmke ( label ) _____________________________________________________________ 47 M veleti utasts s operandusok _______________________________________________ 48 Szimblumok hasznlata ______________________________________________________ 50 A szmok, szvegek brzolsa _________________________________________________ 51 Magyarzatok ( comment ) ____________________________________________________ 52 Fordtst vezrl# utastsok ____________________________________________________ 52 Assembler DIREKTIVK _____________________________________________________ 52 Szimblum definil direktvk: ________________________________________________ 52 Helyfoglal, s inicializl direktvk ____________________________________________ 55 Modulok kztti kapcsolatok direktvi __________________________________________ 55 Cm bellt s szegmens vlaszt direktvk ______________________________________ 56 Fordtsi parancsok __________________________________________________________ 59 Els#dleges parancsok: ________________________________________________________ 59 Msodlagos parancsok ________________________________________________________ 63 Feltteles fordtsi parancsok __________________________________________________ 64

3.2.1.

3.2.2. 3.2.3.

41 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

3.

Mikrogpek programozsa
A fejezetben a 8031/51 tpus mikrokontroller csald valamelyik tpusval megptett mikrogp assembly nyelv programozsval foglalkozunk. 3.1. A programozsrl ltalban A klnbz# automatizlsi, adatfeldolgozsi, vagy egyb alkalmazi feladatok cljra ma mr csak programozhat intelligens berendezseket, mikroprocesszoros kszlkeket hasznlnak. Az ilyen kszlkek m kdst a programmemriban trolt kdsorozat a program hatrozza meg. A mikrogpek kt csoportba sorolhatk aszerint, hogy a felhasznl mdosthatja-e a m kdtet# programot, vagy nem. A hztartsi gpekben, vagy a korszer vezrl#elektronikval elltott gpjrm vekben, vagy klnbz# gyrt berendezsekben lv# mikrogpek m kdtet# programjt gyrilag rjk be a csak olvashat tpus memrikba ( ROM, PROM, EPROM stb.), s gy az a felhasznl ltal nem mdosthat. Ezeket fix program kszlkeknek nevezzk. A klnbz# feladatokra is felhasznlhat kszlkeknl szmtgpeknl (PC), programozhat logikai vezrl#knl (PLC) stb. - gyrilag csak a konfigurcinak megfelel# memria, s perifria-kezelseket (BIOS, monitor program stb.) kszti el a kszlkgyrt, s trolja a fix memriban. A kszlk programmemrijnak egy jelent#s terlete rhat-olvashat (RAM), amelybe felhasznli programok tlthet#k, s innen futtathatk. Az ilyen berendezseket nevezik szabadon programozhat tpusaknak. A letlthet# felhasznli programokat akkor kell rnunk, ha ugyanazon kszlket msms feladat elltsra is fel kvnunk hasznlni. A kvetkez#ekben tmren foglalkozunk a programfejleszts cljval, eszkzeivel, mdszereivel, s ellen#rzsnek fajtival. 3.1.1. A programozs clja

A mikrogp m kdst meghatroz programot az un. code-, vagy programmemriba kell trolni az alkalmazott mikroprocesszor, vagy mikrokontroller - a tovbbiakban processzor - tpustl fgg# gpi kdok sorozatval. A program vgrehajtsakor a proceszszor innen olvassa ki az utastsokat, s paramtereket.

42 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

A programozs clja teht. egy olyan kdsorozat ltrehozsa, amelyet egy mikrogp (mikroprocesszor bzis szmtgp) programmemrijba tltve, meghatrozza a mikrogp feladat szerinti m kdst. A programfejleszts lpsei

3.1.2.

A programfejleszts az albbiakban tmren ismertetett lpsekb#l ll. A program felptsnek megtervezse. Ezt segti a folyamatbra megrajzolsa. a. A programban hasznlt vltozk, llandk, perifria-cmek meghatrozsa. b. szveges formban - valamilyen szvegszerkeszt# (editor) segtsgvel - kell megrni a programozsi-nyelv " helyesrsi " (szintaktikai), s tartalmi (szemantikai) szablyai szerint. Az gy megirt szveg a program forrsnyelvi formja. A szmtgpek, mikrogpek alkalmazsnak szleskr elterjedse a klnbz# programnyelv vlasztkot is b#vtette. A programnyelveket gpkzeli- (assembly), s a magas szint nyelvek csoportjba sorolhatjuk. Gpkzeli az a programozs, amelynl minden program lps programsor - az alkalmazott processzor egy-egy utastsa . Mivel minden processzornak sajt utastskszlete van, ezrt a programrs is processzorfgg#. Az ilyen programrst nevezzk assem bly vagy ms kzeltsben processzorutasts szint programrsnak. A m agas szint programozsi nyelvek (Pascal, C, stb) rendszerint a nem-

zetkzileg elfogadott m atem atikai , logikai m veletek, s klnbz# ltalnos , a programszerkezetet meghatroz utastsok segtsgvel rjk le a feladatot. Ezrt e nyelveken a programozs fggetlen attl a gpt#l, amelyen a programot futatni akarjuk. A magas szint nyelven trtn# programrst m velet - kzpont programozsnak is nevezhetjk. c. A forrsnyelvi programbl a klnbz# fordt programok (assembler, compiller) lltjk el# a program trgykd (object) alakjt, illetve a programlistt, amelyek mr a processzor utastskdjait is tartalmazzk. (A lertakbl kvetkezik, hogy a magas szint nyelveknl is a fordtprogram mr processzortl fgg#.)

43 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

d. A trgykd programbl, vagy programokbl (tbb modul esetben) a szerkeszt # (linker) program lltja el# a futtathat programvltozatot. Az gy el#lltott programot kell berni (letlteni) a programmemriba. A programmemria lehet fix (ROM, EPROM), illetve irhat-olvashat (RAM) kialakts. A begets, vagy letlts trtnhet teljes kd (binris), vagy tmrtett (pl. HEX) alak fjlbl. Ennek megfelel#en a programozs utols lpse a kvnt kdkonverzi elvgzse. 3.2. Assembly nyelv programozs A klnbz# assembly nyelvek nagyon sok azonos elemet tartalmaznak. Rendszerint a felptsk, szintaktikai szablyaik kzel azonosak. Lnyeges eltrs a processzorok utasts-kszleteiben van. Az assembly nyelvek formai kvetelmnyei viszonylag szigorak. A leger#sebb ktttsg a processzor utastsok rsa, amelyeket az adott processzor dokumentcijnak deklarlt formjban szabad hasznlni. Szabadsgfok, hogy nincs klnbsg a kis-, s nagybet s rsmd kztt. Mindegyik assembly - ben hasznlhatk: szimblumok a vltozk, llandk, s cmek megadshoz, cmkk (label) a programrszek azonostshoz, helyfoglal-rtkad utastsok (direktvk) a program-. s az adatmemria kezelshez, m veleti jelek (opertorok) a szimblumok, cmek kztti aritmetikai, logikai m veletekhez, fordtsi (command) utastsok, s magyarzatok (comment) a program szveges lershoz. 3.2.1. A forrsnyelvi program

A forrsnyelvi program rsakor trekedni kell az ttekinthet# felptsre, a megfelel# magyarzatokkal tmogatni az rthet#sget. Ugyanakkor szigoran be kell tartani a szintaktikai szablyokat. A program ltalnos szerkezete a kvetkez#: fej a program jellemz#inek tmr sszefoglalsa, fordtsi parancsok, 44 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

a hasznlt vltozk, konstansok, memria szegmensek deklarlsa, a program trzs (inicializls, f#program), a szubrutinok (alprogramok).

A mikrogp ltal elvgzend# feladatokat a f#programban, s a szubrutinokban kell lerni a processzor utastsainak segtsgvel. A forrsnyelvi programban minden utastst kln sorba kell rni. Egy sor ltalnos felptse a kvetkez#:

cmke: m veleti utasts s operandusok

; magyarzat

A sorokbl - felsoroltak kzl - egy, kett#, vagy mindhrom hinyozhat, vagyis egy sor lehet res, tartalmazhat csak cmkt, vagy csak magyarzatot, vagy csak utastst, illetve ezek lehetsges variciit. A forrsnyelvi program ajnlott szerkezete lthat az albbi pldn. Az alkalmazott magyarzatok (comment-ek) segtik a szerkezet felismerst. Mint lthat a magyarz szvegek kezdhet#k a sor brmelyik helyn, de mindig pontosvessz#vel kell kezdeni. A fordt program (assembler) soronknt fogja olvasni a forrsnyelv szveget, s amikor a sorban ; - t tall, akkor abbahagyja a sor elemzst, s a kvetkez# sort fordtja.
;xxxxxxx A PROGRAMAZONOST FEJ xxxxxxx ;********************************************************** ;* BMF KKVM Automatika Intzet ;* Elektronika Szakcsoport ;********************************************************** ;* F#program: GYAKORL-TESZT ;* Vltozat: V1.2 ;* Dtum: 1999.09.05 * ;* Ksztette: XY ;********************************************************** ;* A modul lersa: ;* A mikrokontrolleres gyakorl bels# perifrii;* nak tesztelse. ;********************************************************** ;xxxxxxx FORDTSI PARANCSOK xxxxxxx $XREF $DEBUG NAME FO_MOD ;################### DEKLARCIK ################################### ;****** Gyakorl port cmei ****** * * * * * * * *

45 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa NGS LEDS XDATA XDATA 0C000H 0C001H ; nyomgomb-sor cme ; LED-sor cme 3.fejezet

;******* Szegmensek deklarlsa ****** PROG VALT VALTB STACK SEGMENT SEGMENT SEGMENT SEGMENT CODE DATA DATA BITADDRESSABLE DATA ; program ; bjtos vltozk ; bitcmezhet# vltozk ; stack memria

;****** ADAT szegmens bjtos vltozknak ******* RSEG VALT

DS

10H

;helyfoglals 16 bjt rszre

;****** ADAT szegmens bitcmezhet# vltozknak ******* RSEG VALTB

; xxxxx bjtos vltozk xxxxx DS BEM: DS BEPEL: DS JELZ: DS 2 1 1 1 ; nevezetlen helyfoglals ; bemeneti memria ; pozitv l memria ; jelz# bjt

; xxxxx bit vltozk xxxxx NG0P NG6P NG1N JLZB1 BIT BIT BIT BIT BEPEL.0 NG0P+6 BENEL.1 JELZ.0 ; NG0 nyomgomb poz.l bitje ; NG6 nyomgomb poz.l bitje ; NG1 nyomgomb neg.l bitje ; 1.jelz#bit

; xxxxxx STACK kijells xxxxxxx RSEG DS STACK 10H ;STACK kezdet ;16 bjt lefoglalsa STACK rszre

;################### PROGRAMOK ################################### ;xxxxxxx Program szegmens xxxxxxx RSEG PROG

;xxxxxxxx Program-trzs xxxxxxxxx START: LJMP INIT ; ugrs az inicializlsra

;****** Megszakts ugrtbla ****** DS 8 ; helyfoglals a megszaktsoknak

;******* Inicializls ******* INIT: MOV SP,#STACK-1 . . . ;******** F# program ********* FOPR: CALL BEOLV ; beolvass, l meghatrozs ; vltozknak kezd#rt adsa ; perifria zemmdok belltsa ; megszaktsok engedlyezse

46 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa ;xxx a feladatot megold program xxx . . . ;xxx kimenetek vezrlse xxx FOPRV: CALL JMP KIIR FOPR ;kimenetek vezrlse ; visszatrs a f#program elejre ; a program tovbbi rsze 3.fejezet

;******** Szubrutinok ******** ;xxxxxxx beolvas s l kpz# rutin xxxxxxx BEOLV: MOV DPTR,#NGS MOVX A,@DPTR . . . RET ;xxxxxxx kiviteli rutin xxxxxxx KIIR: MOV MOV . . . RET END rs ;vgt ; a fordtprogramnak jelzi a forDPTR,#LEDS A,KIM ;kimeneti memria kivitele ;a kimeneti perifrira LED sorra ; a rutin tovbbi rsze ;beolvass a nyomgomb-sorrl ; a rutin tovbbi rsze ;visszatrs a f#programba

A cmke ( label )

A cmkt olyan programrszek els# utastsa el kell rni, amelyekre a program egyb helyein hivatkozunk, vagyis ahov a vezrlst t kell adni (ugrs, vagy rutin hvs). A cmke tulajdonkppen a hivatkozsi hely cmt tartalmaz szimblum. A programban azonos cmkk nem hasznlhatk! A cmke egy bet vel ( 'a' .... 'z', 'A'..... 'Z', '.' ) kezd#d# karaktersor (szimblum, jelz#), amelynek tovbbi karakterei szmjegyek is lehetnek, s a ' : ' karakterrel kell befejezni. Magyar kezetes bet k hasznlata tilos! Elvileg a karakterek szma nincs korltozva, de a fordt csak az els# nyolc karaktert trolja, s nem tesz klnbsget a kis s nagybet k

47 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

kztt. ( Ha kt cmke csak a kilencedik karaktert#l kezdve klnbzik, akkor a fordt hibt jelez, mivel azonosnak tekinti azokat. ) A cmkket rendszerint a sor elejre rjuk, kiemelve ezzel a sor jelz# szerept. Helyes cmkk: Kezdet: _1sor: foprog_2: M veleti utasts s operandusok Helytelen cmkk: 2.sor: Ugrs.1: Els# sor:

A programsorban a m veleti utasts rja el# a CPU ltal vgrehajtand m veletet, s a hozz csatlakoz operandus - ok adjk meg a m veleti tnyez#ket, vagy azok cmt. Az operandus lehet: specilis assembler szimblum (pl. regiszter), program szimblum, indirekt cm, konstans, bels# RAM cm, bit-cm, program cm. A hasznlhat specilis assembler szimblumok: A (ACC) B R0...R7 DPTR PC C AB AR0..AR7 Akkumultor B regiszter az aktulis regiszter-bank munkaregiszterei a kls# memrik cmzshez hasznlt regiszterpr (DPH-DPL) programszmll tlcsorduls bit regiszterpr szorzsnl, s osztsnl az aktulis regiszterbank munkaregisztereinek abszolt cme

48 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

A lehetsges m veleti utastsokat, a hozz tartoz operandusokat, s helyes rsmdjukat az alkalmazott mikroprocesszor / mikrokontroller utastskszlet - e tartalmazza. A m veleti utastst egy szval, az un mnemonic - al rjk le, amely a m velet angol megnevezse, vagy annak rvidtse. Az operandusok lehetnek szm - ok, vagy szimblum - ok, illetve meghatrozott rsjel, amely meghatrozza az adott opertor cmzsi mdjt. pl. MOV 20 , 45

sorban a m veleti utasts a MOV mnemonic a mozgatst jelenti, amely utn meg kell adni el#szr a cl cm - t, (itt a 20-as cm memriahely), majd a forrs cmt, vagy rtkt ( pldnkban a 45 ugyancsak cm ). Az utasts teht arra utastja a CPU - t, hogy a 20 - as cmen tallhat adatot msolja t a 45 cmen lv# helyre. A kvetkez# utastsban MOV 20 , #45 a msodik operandus el#tt ll # jel azt jelenti, hogy az utna kvetkez# szm egy rtk, vagyis a CPU feladata, hogy a 20 - as cm helyre rjon 45-t. Az operandusok szimblumokkal is megadhatk. Az operandusok, vagy j szimblumok el#llthatk a mr deklarlt szimblumok opertorokkal trtn# sszekapcsolsval. Opertorok: aritmetikai: +,+,* / MOD () el#jel sszeads, kivons szorzs oszts maradk csoportosts ( +5, -0AH ) ( cm + offset ) ( 1200H*7 ) ( 17/4 ) ( 17 MOD 4 ) ( (cm-offset)*3 )

49 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

logikai: NOT HIGH LOW SHR,SHL AND OR XOR hasonlt: >= / GTE nagyobb egyenl# <= / LTE <> / NE = / EQ < / LT > / GT nem egyenl# egyenl# kisebb mint nagyobb mint ( SIMB >= 13H ) ( SIMB LTE 0A1H ) ( SIMB NE 045H ) ( SIMB = 0A2H ) ( SIMB < 0B2H ) ( SIMB GT 051H ) kisebb egyenl# egyes kompl. sz fels# bjtja sz als bjtja jobbra/balra lpt. S m velet VAGY m velet ( NOT 5 ) ( HIGH 1234 ) ( LOW 1234 ) ( 2 SHR 8 ) ( SIMB AND 0AH ) ( SIMB1 OR SIMB2 )

KIZR-VAGY m. ( 12H XOR 5 )

Szimblumok hasznlata

A programozst nagyban segti, ha szmokkal megadott cmek, vltozk helyett a jelentsre utal szavakat, rvidtseket, vagyis szimblumok - at hasznlunk. Szimblumok a mr megismert cmke, illetve utasts mnemonic - ok is. a cmke egy programcmet helyettest, az utasts mnemonic a CPU utastskdjt.

Szimblumokkal lehet helyettesteni vltozk trolsi helynek cmt, konstansokat.

Szimblumban csak bet , szmjegy s a '_' karakter szerepelhet. A processzor utasts - mnemonicjai, illetve a bels# regiszterek elnevezsei, s a direktvk nem hasznlhatk ltalnos szimblumknt. A szimblum deklarlshoz az EQU direktvt kell hasznlni. pl. EQU BE_GOMB 12 s felhasznlsa programsorban a

50 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

MOV C , BE_GOMB azt jelenti, hogy a CPU tlcsorduls bit -jbe ( C ) msolja t a 20 cm bit rtkt. A szmok, szvegek brzolsa

A szmtstechnikban nem csupn a decimlis, hanem a binris, az oktlis, s a hexadecimlis szmbrzolst is hasznljk, illetve az ASCII szabvny szerinti karakter, s string megads is szksges. Binris: a binris szmjegyek sorozata utn irt B bet pl. 011010 b vagy 011010 B

Decimlis: a decimlis szmjegyek sorozata vagy utna irt D bet pl. 345 vagy 345 D

Oktlis: az oktlis szmjegyek sorozata utn irt O bet pl. 137 o vagy 137 O

Hexadecimlis: a hexadecimlis szmjegyek sorozata utn irt H bet , ha szm a bet karakterek valamelyikvel kezd#dik akkor 0 kell el rni pl. 15A H Karakterek ' A ' formban megadott karaktert az ASCII kddal helyettest. Szveg ( string ) " Ez egy szveg " az egyes karaktereket ASCII kddal helyettestve helyezi le. vagy 0E34 H .

51 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

Magyarzatok (comment) is rhatok a forrsnyelvi progra-

A programrszletekhez magyarzatok (comment)

munkban. Ezzel segteni lehet a programlpsek megrtst, az ttekinthet#sget. A magyarz szveget mindig a ; karakterrel kell kezdeni. pl.: ; Plda a magyarzat elhelyezsre KEZD: MOV A,#5EH ANL A,KIM ; JZ TOV ; itt kezd#dik a program ; az akkumultor feltltse a kimeneti memria maszkolsa

A magyarzat szerepelhet egy nll sorban is, de ha van cmke, vagy utasts, illetve mindkett#, akkor csak ezeket kvet#en rhat. Fordtst vezrl# utastsok

A forrsnyelvi fjlbl a fordtprogram (az assembler) kszt trgykd (.obj) fjlt. A fordt szmra is lehet utastsokat adni, az un. direktvk segtsgvel. A legfontosabb direktvk a kvetez#ek: 3.2.2. Assembler DIREKTIVK

A direktvk tulajdonkppen a fordtst vezrl# parancsok. Ezek segtsgvel definilhatk szimblumok, foglalhatk le s inicializlhatk memria terletek, kapcsolhatk ssze modulok, llthatk be program-, s szegmenscmek. EQU Szimblum definil direktvk: A szimblumhoz rendel egy rtket, vagy regiszter nevet. A szimblum rtke ks#bb mr nem vltoztathat. pl. HATAR EQU 1200 52 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

ERTEK AKKU SZAML

EQU EQU EQU

HAT+R - 'A' A R7

SET

A szimblumhoz gy rendel rtket, vagy regisztert, hogy az jra definilhat. pl. TAR VALT . . TAR VALT SET SET R1 0D2H SET SET R0 1AH

DATA

A szimblumhoz rendel egy direkt cmezhet# bels# memria cmet. pl. BEM1 KIM2 DATA DATA 20H 22H

IDATA

A szimblumhoz rendeli a csak indirekt cmezhet# bels# memria egy cmt. pl. OSSZEG MARAD IDATA IDATA 60H OSSZEG - 1

XDATA

A szimblumhoz rendeli egy kls# memria cmt. pl. TABL KIF1 XDATA XDATA 100H TABL + 23H

CODE

A szimblumhoz rendeli a programmemria egy cmt. pl. START INTV_0 CODE CODE 00H START + 3

53 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

SEGMENT Egy reloklhat SZEGMENS deklarlst biztostja. A kvetkez# formban hasznlhat: Szegm_Nev ahol a Szegm_Nev Szegm_tipus gyen letltve, elh_tip a letlts kezdett hatrozza meg [ opcionlis ]. a szegmens funkcijra utal nv, megadja, hogy a szegmens melyik memriaterletre leSEGMENT Szegm_tipus [elh_tip]

Szegmens-tpusok:

CODE XDATA DATA IDATA BIT

program memria, kls# adatmemria, a direkt cmezhet# bels# memria, indirekt cmezhet# bels# memria, a bit-cmezhet# bels# memria.

Elhelyezsi tpusok:

PAGE INPAGE

lapkezdetre igazts ( csak CODE s XDATA utn ), a szegmens csak egy lapon bell lehet (csak CODE s XDATA utn),

INBLOCK

a szegmens csak egy 2048 bjtos blokkot foglalhat el (csak CODE utn),

BITADDRESSABLE a bels# memria bit-cmezhet# 16 bjt-ja ( 20H - 2FH )lehet (csak DATA s IDATA utn ), UNIT egy biten, vagy egy bjton kezd#d# szegmens,

OVERLAYABLE olyan szegmens, amelyet a C-51 deklarlt, s ebbe beszerkeszts engedlyezett.

54 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

Helyfoglal, s inicializl direktvk DS adott szm sszefgg# memriaterletet foglal le (brmelyik memriban), hasznlata: [Cmke:] DS szm, vagy kifejezs

DBIT

adott szm bitet foglal le, hasznlata: [Cmke:] DBIT szm, vagy kifejezs

DB

a programmemriban ad kezd#rtket a felsorolt bjtoknak, hasznlata: [Cmke:] DB szm[,kifejezs][,szimblum]...

DW

a programmemriban ad kezd#rtket a felsorolt szavaknak, hasznlata: [Cmke:] DW szm[,kifejezs][,szimblum]...

Modulok kztti kapcsolatok direktvi

Feladatuk a klnbz# modulokban deklarlt szimblumok elrsnek biztostsa.

PUBLIC

a direktvval deklarlt szimblumok minden modulbl elrhet#k, hasznlata: PUBLIC Szimb[,Szimb[,....]]

EXTRN

egy msik modulban deklarlt szimblum elrst biztostja az aktulis modulban. Hasznlata: EXTRN Szegm_tipus(Szimb_lista)

NAME

az egyes trgy-modulok (object) megklnbztetst teszi lehet#v. Ha nem adjuk meg, akkor a forrsfjl neve lesz a trgymodul neve is. Hasznlata:

55 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

NAME

Trgy_mod_nv

Cm bellt s szegmens vlaszt direktvk

A direktvk segtsgvel adhatk meg programrszek, szegmensek kezd# cmei, illetve vlaszthatk mr ltez# szegmensek. meghatrozza a kvetkez# utasts, vagy adat cmt. ORG 100H ORG START

ORG

END RSEG

a forrsprogram vgt jelzi. ( Mindig kell hasznlni ) egy - mr korbban definilt - reloklhat szegmens kivlaszt RSEG Szegmens_nv

CSEG, DSEG, XSEG, ISEG, BSEG az egyes szegmensek kezd#cmt lehet megadni a direktvk segtsgvel. Hasznlatuk:

CSEG DSEG XSEG ISEG BSEG

[AT absz-cm] [AT absz-cm] [AT absz-cm] [AT absz-cm] [AT absz-cm]

Amennyiben nincs cm, akkor a fordtsnl mindegyik szegmens 0 cmnl kezd#dik.

USING

az aktulis regiszterbankot vlasztja ki. Hasznlata: USING sorsszm (a sorszm 0...3 lehet)

A szegmensek kijellsre, a vltozk elhelyezsre, s a klnbz# helyfoglalsokra mutat mintt a PELDA1.LST fjl. A bemutatott plda a forrsnyelvi fjl fordtsa utn ltrehozott lista-fjlt szemllteti. A lista vgn lthat szimblum-tblzat megadja, a 56 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

szimblum nevt, tpust ( C,D,B,N ), reloklhat R, vagy abszolt cmre A kerlt a deklarlsnl, valamint azt, hogy a lista hnyadik sorban kerlt deklarlsra #, s melyik sorokban hasznlt mg az adott szimblum. A reloklhataknl mg a szegmensnv is lthat. Megfigyelhet#, hogy minden relatvan (reloklhatan) deklarlt szegmens vltozinak cme 0-n kezd#dik. A tnyleges cmet a szerkeszts ( linkels ) utn kapjk meg.

A51 MACRO ASSEMBLER

PELDA1

DATE 02/09/96 PAGE

MS-DOS MACRO ASSEMBLER A51 V4.4 OBJECT MODULE PLACED IN C:\XE2A51\GYAK\PELDA1.OBJ ASSEMBLER INVOKED BY: A51 C:\XE2A51\GYAK\PELDA1.A51

LOC OBJ

LINE

SOURCE

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

;xxxxxxx fordtsi parancsok xxxxxxx $XREF $DEBUG ;******************************************************* ;* K K M F Automatika Intzet * ;* Elektronika Szakcsoport * ;******************************************************* ;* Fprogram: Helyfoglals adatoknak * ;* Vltozat: V1.0 * ;* Dtum: 1996.08.20 * ;* Ksztette: Zalotay Pter * ;******************************************************* ;* A modul lersa: * ;* Pldk a klnbz # helyfoglalsi megoldsokra * ;******************************************************* NAME Pelda_1

;xxxxxxx Deklarcik xxxxxxx ;**** Relatv cmmegadsok (reloklhat szegmensek)***** VALT1 SEGMENT DATA a direkt cmezhet# bels# mem.-ban VALT2 SEGMENT DATA BITADDRESSABLE ;Adatszegm. a bit cmezhet# bels# m.-ban VALTB SEGMENT BIT ;Bit szegmens STACK SEGMENT IDATA ;Stack szegmens ;Adatszegmens

57 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 29 30 31 32 33 34 35 MOV 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 ;****** Program szegmens ****** RSEG PROG ;A program els # utastsa PROG SEGMENT CODE ;Program szegmens 3.fejezet

0000 758100 F

SP,#STACK-1 . .

;A program

utols utastsa *****

;****** Adatszegmens a direkt cmezhet # bels# memriban RSEG V1: V2: V3: DS VALT1 1 DS DS DS

0000 0001 0003 0004

;Helyfoglalsok a V1,V2,V3 vltozknak 2 1 20

;Nevezetlen memriaterlet lefoglalsa

;***** Adatszegmens a bit cmezhet # bels# memriban ***** RSEG BEM: KIM: VALT2 DS DS 1 1 ;Helyfoglals a BEM s KIM vltozknak

0000 0001

;***** Bit szegmens ***** RSEG B1: VALTB DBIT 1 ;Helyfoglals a B1,B2,B3 ktrtk vltozknak

0000 0001 0002

0000

1000 7800

75

0030 0031 0032 00AF

61 B2: DBIT 1 62 B3: DBIT 1 63 64 ;***** Stack szegmens **** 65 66 RSEG STACK 67 68 DS 10H ;Stack memria lefoglalsa 69 70 71 ;***** Abszolt cmmegadsok **** 72 73 CSEG AT 1000H 74 FOLYT: MOV R0,#KIM 76 77 DSEG AT 30H 78 79 BEM2: DS 1 80 KIM2: DS 1 81 V4 DATA 32H 82 K1 EQU 0AFH 83 84 BSEG AT 30H

58 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 85 86 87 88 89 90 91 3.fejezet

0030 0031 0000

B4: B5: B6

DBIT DBIT BIT

1 1 BEM.0

END

XREF SYMBOL TABLE LISTING ---- ------ ----- ------NAME T Y P E V A L U E ATTRIBUTES / REFERENCES 0000H.0 0000H.1 0000H.2 0026H.0 0026H.1 0000H.0 0000H 0030H 1000H 00AFH 0001H 0031H ---0003H 0081H 0010H 0000H 0001H 0003H 0032H 0018H 0002H 0003H R R R A A R SEG=VALTB 60# SEG=VALTB 61# SEG=VALTB 62# 86# 87# SEG=VALT2 88# R SEG=VALT2 53# 88 A 79# A 75# 82# R SEG=VALT2 54# 75 A 80#

B1 . . . . B ADDR B2 . . . . B ADDR B3 . . . . B ADDR B4 . . . . B ADDR B5 . . . . B ADDR B6 . . . . B ADDR BEM. . . D ADDR BEM2 . D ADDR FOLYT C ADDR K1 . . . . N NUMB KIM. . . D ADDR KIM2 . D ADDR PELDA_1. . ---PROG . C SEG SP . . . . D ADDR STACK.I SEG V1 . . . . D ADDR V2 . . . . D ADDR V3 . . . . D ADDR V4 . . . . D ADDR VALT1. D SEG VALT2. D SEG VALTB.B SEG

19 REL=UNIT 29# 33 A 35 REL=UNIT 28# 35 66 R SEG=VALT1 44# R SEG=VALT1 45# R SEG=VALT1 46# A 81# REL=UNIT 25# 42 REL=BITADDRESSABLE 26# 51 REL=UNIT 27# 58

REGISTER BANK(S) USED: 0 ASSEMBLY COMPLETE, NO ERRORS FOUND

3.2.3.

Fordtsi parancsok

A forrsnyelvi fjl fordtsi mdozatra adhatk a fordtsi parancsok. A parancsok kztt az els#dleges tpusak csak egyszer hasznlhatk, s a forrs-program legels# - rtkelhet# - sorban kell megadni (megjegyzs, magyarz szveg megel#zheti). A msodlagos tpus parancsok a programban tbbszr, s brmely helyen megadhatk. Mindkt tpus parancsot sor elejre a $- jellel kezdve kell rni. A fordtsi parancsok egy kln csoportjt alkotjk a feltteles parancsok, melyek segtsgvel - megadott felttekt#l fgg#en - programrszek kitilthatk a fordtsbl. Els#dleges parancsok: DATE (rvidtve: DA) 59 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

A lista minden oldaln a fejlcbe dtum rsa. A dtum maximlisan 9 bet s lehet. Alaprtelmezs: pl.: $ DATE (12/07/96) MS-DOS szerinti rsmd

DEBUG/NODEBUG (rvidtve: DB/NODB) A DEBUG parancs hatsra a szimblum informcik ( cmkk, szimblumok s rtkk ) is belekerlnek a *.obj fjlba. Ezek rvn a szimultor, illetve emultor is megjelenti ezeket a szimblumokat. Alaprtelmezs: pl.: $ DEBUG $ DB $ NODB NODEBUG

ERRORPRINT/NOERRORPRINT (rvidtve: EP/NOEP) A fordts sorn felismert hibkat lehet egy megadott fjlba kiratni. Nem vltoztatja meg azt, hogy a hibk a lista fjlba is bekerlnek. Alaprtelmezs: pl.: $ EP(PROG1:ERR) $ NOEP NOEP

OBJECT/NOOBJECT (rvidtve: OJ/NOOJ ) Parancs object fjl ksztsre, vagy letiltsra. Ha nem adunk meg nevet, akkor a forrsfjl nevn kszl a fjl. Alaprtelmezs: pl.: $ OBJECT (C:\XE2A51\PELDA1.OBJ) OBJECT ( fjl_nv.OBJ)

60 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

$ NOOJ

PAGELENGHT (rvidtve: PL) A listzsnl egy lapra irt sorok szmt hatrozza meg az utasts utn zrjelbe irt - 10-nl nagyobb - szm . Alaprtelmezs: pl.: $ PAGELENGHT (132) $ PL (75) PL (68)

PAGEWIDTH (rvidtve PW) A listzsnl egy sorba irt karakterek szmt hatrozza meg az utasts utn zrjelbe irt - 8 s 132 kztti - szm. Alaprtelmezs: pl.: $ PW (79) $ PAGEWIDTH(122) PW(120)

PRINT/NOPRINT (rvidtve: PR/NOPR ) Ksztsen, vagy ne ksztsen lista fjlt. Ha a PRINT utasts utn nem adunk meg fjl nevet, akkor a forrsnven kszl a lista. Alaprtelmezs: pl.: $ PRINT $ NOPR $ PR(temp.lst) PRINT(forrs_nv.LST)

SYMBOLS/NOSYMBOLS (rvidtve: SB/NOSB ) rjon, vagy ne rjon szimblum azok attribtumaival tblzatot a lista vgre. Alaprtelmezs: pl.: $ SYMBOLS 61 .oldal SYMBOLS

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

$ NOSB

MOD51/NOMOD51 (rvidtve: MO/NOMO ) Az alaprtelmezsben ( MOD51) az assembler felismeri a 8051 kontroller regiszter s SFR szimblumait. Amennyiben ms tpushoz kszl a program, akkor a NOMOD51 parancsot kell megadni, s az alkalmazott kontroller szimblumait tartalmaz un. include fjlt (pl.: REG552.INC) kell a program elejn beolvastatni az INCLUDE msodlagos paranccsal. Alaprtelmezs: pl.: $ NOMOD51 MOD51

COND/NOCOND (rvidts: nincs) A COND parancs hatsra feltteles fordts (IF-ELSEIF-ENDIF szerkezet) rvnytelen rszt is listzza, mg a NOCOND megadsnl nem. Alaprtelmezs: pl.: $COND $ NOCOND COND

MACRO/NOMACRO (rvidts :nincs) Alaprtelmezsben felismeri, s feldolgozza a macro - defincikat. A NOMACRO utasts hatsra a fordt nem dolgozza fel a macro -kat. Alaprtelmezs: pl.: $MACRO $ NOMACRO MACRO

REGISTERBANK/NOREGISTERBANK (rvidtve: RB/NORB ) Az RB parancs hatrozza meg, hogy a programban melyik ( zrjelbe irt szm/szmok ) regiszterbankokat kvnjuk hasznlni. A NORB parancs megsznteti a helyfoglalst a bank szmra. 62 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

Alaprtelmezs: pl.:

REGISTERBANK(0)

$ REGISTERBANK (0,1) $ NORB

XREF/NOXREF (rvidtve: XR/NOXR ) rjon, vagy ne rjon szimblum tblzat utn keresztreferencia listt. Alaprtelmezs: pl.: $ XREF $ NOXR NOXREF

TITLE (rvidtve: TT) rjon a lap tetejre fejlcet. A szveget zrjelben kell a parancs utn rni. Alaprtelmezs: TITLE a fjl neve kiterjeszts nlkl, vagy a 'NAME' parancscsal megadott nv. pl.: $ TITLE ( modul meghatrozs )

Msodlagos parancsok EJECT (rvidtve: EJ ) A parancs hatsra a listban lapdobs kvetkezik pl.: $ EJ

INCLUDE (rvidtve: IC) A parancstl kezdve a fordt a zrjelbe irt fjlt fordtja s iktatja be az object fjlba, majd folytatja a forrsfjl fordtst. Maximlisan kilenc ilyen kzbeiktatst alkalmazhatunk. pl.: $ INCLUDE (REG552.INC) 63 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

LIST/NOLIST (rvidtve: LI/NOLI ) A parancsok arra adnak utastst, hogy a kvetkez# rszeket listzza, vagy ne. Ezzel meghatrozott rszek listzsa mell#zhet#. Alaprtelmezs: pl.: $ LIST $ NOLIST GEN/NOGEN (rvidts: nincs ) A parancsok azt hatrozzk meg, hogy a makr-kifejts bekerljn, vagy ne a listba. Alaprtelmezs: pl.: $ GEN $ NOGEN Feltteles fordtsi parancsok SET/RESET A feltteles fordts szmra deklarl, vagy szntet meg szimblumot s rendel a szimblumhoz rtket. Ha csak a szimblumot deklarljuk, akkor rtke 0FFFFH lesz. pl.: $ SET (TMP, VALT= 55) $ RESET (TEMP,VALT) IF A feltteles szerkezet kezd# parancsa. Utna kell megadni az rtkelend# felttelt. Ha a felttel teljesl, akkor folytatdik a fordts, ellenkez# esetben az ENDIF parancs utni rsz fordtsa kvetkezik. pl.: $ IF (ALT=55) 1. programrsz $ ENDIF 2. programrsz GEN LIST

64 .oldal

Forrs: http://www.doksi.hu

Zalotay Pter: DIGITLIS TECHNIKA II Mikrogpek programozsa 3.fejezet

ELSE Vlasztsos feltteles szerkezet (IF-ELSE-ENDIF) parancsa. Ha az IF felttele nem teljesl, akkor az ELSE utni rsz fordtsa kvetkezik. pl.: $ IF (VALT=55) 1. programrsz $ ELSE 2. programrsz $ ENDIF 3.programrsz ELSEIF Egymsba gyazott vlasztsos feltteles szerkezet parancsa. Az ELSE gon bell jabb IF, vagy IF-ELSE szerkezet beiktatst teszi lehet#v. pl.: $ IF (VALT=55) 1.programrsz $ ELSEIF(VALT2) 2.programrsz $ ELSEIF (SWITCH=2) 3.programrsz $ ENDIF 4.programrsz END pl.:IF A feltteles fordtsi szerkezet lezr parancsa.

65 .oldal

You might also like