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

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

  • ha a neve - a neve állandó, a típus legyen absz.
  • 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

    Kapcsolódó cikkek