Eljárások és függvények assembly nyelven

Az eljárás (szubrutin) - a fő funkcionális egysége bomlik (felosztása több részre) a feladat. Az eljárás csoportot képvisel parancsok egy adott részkérdésnek megoldások és az a lehetőség, hogy megszerezze az ellenőrző pont hívást feladatai magasabb prioritást és ellenőrzések visszatér erre a pontra. A legegyszerűbb esetben a program állhat egy egységes eljárás. Az eljárás képes azonosítani és megfelelően végrehajtott egy sor utasítást, amely, ha egyszer le, ha szükséges, amelyek bármely helyen a programban.
Funkció - eljárást, amely vissza értéket.
Eljárások értékes, mert aktiválni lehet bármely pontján a programban. Eljárások átvihetők néhány érvet, amely lehetővé teszi, hogy egyetlen példányt a kód a memóriában, és változtassa meg az adott használati eset, behelyettesítve a kívánt értékeket az érveket.
A leírás, a parancsokat egy eljárásban assembly nyelven használ két irányelv: PROC és endp.
Szintaxis eljárás leírása:
ProcedureName PROC nyelv távolság
; testkezelések
ProcedureName endp
A fejléc az eljárás (PROC irányelv) csak akkor kötelező, hivatkozás az eljárás neve. Képesség távolság értékeket vehet közel vagy távol jellemzi a lehetőséget igénybe az eljárást egy másik kódot szegmensben. Alapértelmezésben a tulajdonság be van állítva, hogy a távolság közel. és ezt az értéket használjuk, amikor kiválasztunk egy lakás lakás memória modellt.
Az eljárás bárhol elhelyezhető a programban, de úgy, hogy véletlenszerűen nem kap vezérlő. Ha az eljárás egyszerűen helyezze be egy közös patak utasításokat, a mikroprocesszor kerül parancs eljárások részeként a patak. Ezt szem előtt tartva, ott vannak a következő szálláshely lehetőség a programban eljárás:
- elején a program (akár az első végrehajtható parancs);
- végén (miután a parancsot, amely visszaadja a vezérlést az operációs rendszer);
- Intermedier kiviteli alakban - helyezkedik el a testben az eljárás vagy más eljárások a fő program;
- egy másik modult.
Elhelyezési eljárás elején a kód szegmens azt feltételezi, hogy a parancs szekvencia által határolt PROC és endp irányelveket. Akkor felkerül a jelölés az első csapat, amellyel a program elindul. Ez a címke meg kell határozni, mint a paraméter END irányelvet. jelölés végén a program:
.kód
MyProc proc közelében
áztat
MyProc endp
kezdeni proc
hívás MyProc
.
kezdeni endp
end Start
Elhelyezés eljárás végén a program azt sugallja, hogy a parancsokat, korlátozott PROC és endp irányelvek. Ez kerül a parancs után, amely visszaadja a vezérlést az operációs rendszert.
.kód
kezdeni proc
hívás MyProc
.
kezdeni endp
MyProc proc közelében
áztat
MyProc endp
end Start
Egy közbenső változat az eljárás testelrendezés vállal elhelyezése belül egy másik eljárás, vagy a fő program. Ebben az esetben van szükség, hogy az elkerülő eljárások a szervezet által határolt PROC és endp irányelveket. A parancs feltétel nélküli ugrást JMP:
.kód
kezdeni proc
JMP ml
MyProc proc közelében
áztat
MyProc endp
ml:
.
kezdeni endp
end Start
Az utolsó lehetőség helyét eljárás leírása - egy külön modulban - azt sugallja, hogy a leggyakrabban használt eljárások be egy külön fájlban. Fájl eljárásoknak kell kialakítani a rendszeres forrás fájlt, és alávetni sugározzák a tárgykód. Ezt követően, a tárgy fájl csatolása kombinálunk egy fájlt, amelyben ezeket az eljárásokat használjuk. Ez a módszer feltételezi, hogy a forrás szövegét a program néhány eleme összefüggő sajátosságai a végrehajtás fogalmának moduláris programozás assembly nyelven. eljárások egy külön modulban elrendezést is használják építeni a Windows-alapú alkalmazás, amely a API-hívás funkciókat.
Mivel az eljárás nevét ugyanolyan tulajdonságokat, mint a címkén az átmenet csapat, majd alkalmazza az eljárást, akkor a feltételes vagy feltétel nélküli parancs átmenetet. De hála egy speciális mechanizmus eljárás hívás, akkor mentse információt a program keretében a ponton az eljárás hívást. Ezzel összefüggésben utal információt az állam a program azon a ponton, az eljárás hívást. A rendszer mikroprocesszoros csapatok két csapat részt vesz a munka kontextusában. Ez a parancs hívás ret:
- hívja ProcedureName @num - eljárás kezdeményezése (szubrutin).
- ret szám - vissza a vezérlés a hívó.
szám - egy opcionális paraméter jelzi a bájtok számát az oszlopról eltávolítandó, amikor visszatér az eljárást.
@num - bájtok száma által elfoglalt verem átadott argumentumokat eljárás (a jellemző paramétert a fordító MASM).
Kombinálása eljárások rendezett különböző modulok
Különös figyelmet kell fordítani az elhelyezési eljárás egy másik modult. Tehát külön modulként - ez funkcionálisan autonóm egység, akkor semmit sem tud a belső szerkezet más egységekre, illetve fordítva, más modulok is, nem tud semmit a belső szerkezete a modult. De minden modul kell az eszközöket, amelyekkel erről értesíti a fordítónak, hogy egy tárgy (olyan eljárás változó) legyen látható a modulon kívüli. Éppen ellenkezőleg, meg kell magyarázni, hogy a fordítónak, hogy egy objektum ki a modult. Ez lehetővé teszi, hogy a fordító generál gépi utasításokat rendesen, így azok egyes mezőket. Később, a linket beállíthatja a modulokat, és lehetővé teszi az összes külső hivatkozások az egyesített egység.
Itt a neve - az azonosító meghatározott másik modult. B működhet azonosítója:
- változó nevét;
- eljárás nevét;
- konstans nevek.
- ha a neve - a neve egy változó, akkor a típus lehet állítani, hogy a bájt. szó. dword. qword és tbyte;
- ha a neve - egy eljárás nevét, a típus lehet közel vagy távol; A MASM fordító neve után az eljárás szükséges meghatározni a bájtok számát a verem, hogy vegye érvek a funkciót:
extern p1 @ 0: közel
Példa az irányelvek és az állami extern két modul
; 1. modul
.586
. modell lakás, stdcall
. adat
extern p1 @ 0: közel
.kód
kezdeni proc
hívás p1 @ 0
áztat
kezdeni endp
end Start