Professional Documents
Culture Documents
hu
3. fejezet
Forrs: http://www.doksi.hu
3.1.1. 3.1.2.
3.2.
3.2.1.
3.2.2. 3.2.3.
41 .oldal
Forrs: http://www.doksi.hu
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
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
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
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#:
; 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
DS
10H
; 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
;******* 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
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
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
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 )
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.
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
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
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
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
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:
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,
54 .oldal
Forrs: http://www.doksi.hu
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
DW
PUBLIC
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
NAME
Trgy_mod_nv
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:
[AT absz-cm] [AT absz-cm] [AT absz-cm] [AT absz-cm] [AT absz-cm]
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
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.
PELDA1
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
;****** Adatszegmens a direkt cmezhet # bels# memriban RSEG V1: V2: V3: DS VALT1 1 DS DS DS
;***** 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
1000 7800
75
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
B4: B5: B6
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
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
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
$ 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
$ 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
Alaprtelmezs: pl.:
REGISTERBANK(0)
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
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
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