<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
11.5.11. Makró nyelv
A makrók tulajdonképpen ismételten felhasználható forráskód részletek, amelyek a fordítási folyamat során a makróhívás helyére épülnek be. A makrók használatával csökkenthető a programozói munka, a program áttekinthetőbbé válik, valamint a megírt makrók más programokban is felhasználhatóak.
A makrók és szubrutinok közötti különbségek:
ˇ
a szubrutinok csak egyszer szerepelnek a gépi kódban; a makrók minden makróhívás helyére beépülnek;
ˇ
a szubrutinok minden hívásnál pontosan ugyanazon azonosító-címkék által kijelölt adatokon végzik el feladatukat; a makrók viszont minden egyes hívásukkor a megadott paramétereknek megfelelő címkékkel épülnek be a programba, így valójában minden hívásnál más azonosítójú adatokkal dolgozhatnak.
A makrók tehát a magas szintű programnyelvek függvényeihez és eljárásaihoz hasonlóak és ennek megfelelő rugalmasságot biztosítanak.
A makrókat a forráskódban még felhasználásuk előtt definiálni kell, amely a következő táblázatban látható fordításvezérlő utasítások segítségével lehetséges.
MAKRÓ SZERKESZTŐ UTASÍTÁSOK | |
---|---|
ENDM | Makró vége. |
EXITM | Soron kívüli kilépés a makróból. |
EXPAND | A makró forráslistájának beillesztése a makróhívás helyére a fordítási lista fájl létrehozásakor. |
LOCAL | Belső változó megadása. |
MACRO | Makró kezdete. |
NOEXPAND | A makró forráslista hívási helyekre történő beillesztésének tiltása a fordítási lista fájl létrehozásakor. |
A makrók szerkezetét mutatja be a következő programrészlet:
teszt macro ADAT1, ADAT2 ... ... endm |
A makrók definiálását a macro utasítással kell kezdeni, amely előtt a makró azonosító címkéje áll, utána pedig a makró paraméterei.
A makrókat minden esetben az endm utasítással kell zárni.
A kezdő és záró utasítások között bármely mikrovezérlő utasítás és fordításvezérlő utasítás szerepelhet.
A makróhívás a makró azonosítójával és paraméterlistájának kitöltésével lehetséges. A fenti makró néhány hívására mutat példát a következő programrészlet:
... teszt SZAM, SZAMLALO ... ... teszt KARAKTER, ADAT ... ... teszt MAX, ERTEK ... |
Látható, hogy minden makróhívásnál más paraméterek szerepelnek, vagyis a makró minden alkalommal a megadott címkéknek megfelelő, eltérő adatokon fogja elvégezni ugyanazt a feladatot.
A paraméterek közötti vesszőt az egyik paraméter elhagyása esetében is ki kell tenni, mert a fordító program számára az egyes paraméterek csak így azonosíthatóak. A kihagyott paraméterek nulla értékűnek számítanak.
Természetesen paraméter nélküli makrók is definiálhatók:
olvas macro ... ... endm |
A paraméter nélküli makrók segítségével elérhető, hogy az utasítások (makróhívások) azonosítói utaljanak azok feladataira, megkönnyítve így a program értelmezését. Erre mutat egyszerű példát a következő programrészlet:
... ... indul macro bsf kimenet,3 endm leall macro bcf kimenet,3 endm ... ... ... ... indul ... ... leall ... ... |
A makrókon belül használt azonosító címkék lehetnek külső vagy belső címkék. A külső címkék a program bármely területéről elérhető azonosítók, amelyek hozárendelése a program futása során nem változik. A belső címkékre való hivatkozás viszont csak a makrón belül lehetséges.
A belső címkék definiálása a LOCAL fordításvezérlő utasítással lehetséges. A belső címkék azonosítóinak hozzárendelése csak a makróhíváskor történik meg, így egy makró többször is hívható változó ütközés nélkül, valamint saját magát is hívhatja.
A makrók egymást és saját magukat is hívhatják tetszőleges mélységig.
A makróból való soron kívüli kilépést biztosítja az EXITM fordításvezérlő utasítás. Valamilyen belső feltétel teljesülése esetén az EXITM utasítás hatására a makró forráskódba való beillesztése megszakad. Ilyen esetben az EXITM és a soron következő ENDM utasítások közötti programrészt a fordító program figyelmen kívül hagyja.
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>