assembly nyelven programozás útmutató, programozás
2.8. Programozás alapjai. szerelő Macro Tools
Modern szerelőknek tartalmaz egy úgynevezett makro összeszerelő macromedia és néha nevezik az oka. Az általános elképzelés a Macromedia, hogy a felvétel a forráskód kínál speciális nyelvi Macromedia (makró nyelv), akkor bizonyos mértékig kezelni a folyamat sugárzott programot. A makró nyelv lehetővé teszi, hogy végre vagy nem hajtja végre a fordítást az egyes területeken a program, attól függően, hogy a kapcsolat állapota által meghatározott (feltételes fordítás); végre reprodukciós programot részén forráskód, beleértve a módosítás minden egyes ismétlés (ismétlődő egységek); közé írt program külön beállítás szilánkok szövegének megfelelően előre meghatározott paraméterek (makrók). Tárgyak, amelyek által létrehozott a makró nyelv irányelvek nevén makrókat. Néha azonban a kifejezés makro kifejezés csak egy bizonyos macromedia elme, nevezetesen azt, hogy a makró. Makrók segítségével leegyszerűsíti összeállításához a forráskód a program, és néha teszi a szöveget világos, bár néhány esetben, például abban az esetben a feltételes fordítási direktívák, épp ellenkezőleg, oda vezethet, hogy jelentős szövődménye az eredeti szöveg.
Mint minden programozási nyelv, a nyelv a Macromedia sok különféle finomságok, hanem alkalmazás programozási gyakran csak az alapvető jellemzői a nyelvet. Ezért korlátozzuk a figyelmet a fő gyülekezési Macromedia.
ismétlődő egységek
ismétlődő egységek kénytelenek megismételni a fordító előre egyszerű szöveges blokk meghatározott számú alkalommal. Repeatable blokk állhat leíró adatok irányelvek (és ha benne van a adatszegmens), vagy a processzor utasítás (majd azt a programban leírt szegmens). Például ez lehetővé teszi az adatok szegmens alkossák ASCII kódok orosz betűkkel:
sym = „A”; kezdeti értéke az idő változó
szimbólumok :; Array név hivatkozni rá
REPT 32, annyiszor ismételjük
db szim; Repeatable irányelv
sym = sym + l; megváltoztatása egy változó
END m; End ismétlődő egység
Amint látható, a fragmens ismétlődő egység kezdődik assembler irányelvek REPT (ismétléssel, ismétlés), és véget ér az irányelv END m (end makro, makro vége). Valójában az adatszegmens van allokálva 32 bájt töltött számok 81H, hogy 9Fh, amelyekről feltételezik, hogy kell tekinteni, mint egy szekvenciát az orosz betűk. Ugyanezt az eredményt lehet elérni a következő javaslatokat:
szimbólumok dB "A", "B", "B", "G", stb Az I betű
és egyszerűbb, bár kevésbé egyértelműen:
szimbólumok Db 128.129.130.131, stb a szám 159.
ismétlés több makro csökkenti a szükséges időt a leírás szövegét tömb a kívánt programot, bár lehet csökkenteni a láthatóságát ezt a leírást.
Ha a számítógéphez csatlakoztatott mérő vagy ellenőrző berendezés néha szükség van, hogy lelassítja a processzort, ha hozzáfér a portok a berendezés. Lassítása végzi többek között a program szövegének egy, vagy ha szükséges, néhány feltétel nélküli ugrást parancsokat a következő mondat lép:
AL, 300h, az első hívást a berendezés
jmp a; késleltetési idő
a: JMP b; teljesítő
b: jmp e; három csapat JMP
c: AL, 301h, közvetlenül a berendezés kezelését
Annak érdekében, hogy ne hozzon létre egy csomó felesleges, sőt, pont az ilyen javaslatok gyakran vannak írva a következő:
AL, 300h, az első hívást a berendezés
JMP $ + 2; késleltetési idő
JMP $ + 2; végrehajtás
JMP $ + 2, három csapat JMP
AL, 301h, közvetlenül a berendezés kezelését
REPT 6 JMP $ + 2 END m
Ez shake könnyebb, mint írásban 6 csapat JMP.
A makrók ismétlés több fajta, amit nem térünk ki.
makrók
Programok írt assembly nyelven, gyakran tartalmaznak ismétlődő részek a szöveg ugyanazzal a szerkezettel. Ezt a szöveget a területen lehet készíteni egy makrót, amelyre jellemző a véletlenszerű nevet és egy opcionális listája hivatalos érveket. Ha ez a döntés nem születik, a megjelenése egy sort a programot, amely a makró nevét, és egy lista az aktuális paraméterek (együtt a továbbiakban makro) képződésével jár, az összes kívánt szöveget, az úgynevezett Macro. Változtatásával a tényleges érvek lehetnek, változatlanul hagyják a szerkezetét Macro, változtatni néhány eleme.
Makrók kell kezdeni a húr a makró nevét, és az irányelv makró, az érveket, amelyek a lista azokat a formális paraméterek. Vége a makro irányelv END m.
Tegyük fel, hogy a programot kell tárolni többször a verem tartalmát a három nyilvántartás, de minden esetben regisztrációhoz számokat és azok sorrendjét más. Rendezzük Ezeket a műveleteket a makró:
álljon egy
tolja b
push
END m
A megjelenése a forrás programsor
generál a következő szövegrészt:
tolja AX nyomja BX tolja CX
Ha a forrás szöveg van egy sor
a megfelelő Macro fog kinézni:
nyomja DX
nyomja ES
nyomja BP
Mivel a tényleges érvek tehet szerelő jelöléssel engedélyezett ez a parancs. Különösen a makró hívás
PSH mem, [BX], ES: [17H]
vezet a következő Macro:
nyomja mem
nyomja meg [BX]
nyomja ES. [17h]
Ha egyes makro húr kell címkézni (pl azzal a céllal, hogy a szervezet a ciklus), a kijelölés védjegyeket kell nyilvánítani helyben helyi szolgáltató. Ebben az esetben a szerelő, hogy létrehoz Macro megteremti a saját jelölését jelek, nem ismétlődő ismételt hívások azonos makró:
késedelem makró
helyi pont
mov CX 200
pont: loop pont
END m
késleltetheti a makró létrehoz egy késéssel rögzített időtartama. Ha a szöveg a program, hogy az két makrók késés
...
késés
...
késés
a Macro illeszkedik a szöveget a program a következő lesz:
Az ismételt helyettesítések makró fordító helyettesíti a kijelölési pont címkék különböző elnevezések. 0000. 0001 stb ezzel biztosítva a megfelelő parancsok végrehajtása ciklusok és átmenetek.
Makrók hasonlóak szubrutinok e tekintetben, hogy mindkét esetben bemutatunk olyan program részletben egyszer, és kapcsolja rá többször, esetleg az átviteli különböző paramétereket. Azonban ezek a számítástechnikai eszközök különböznek a használat módja és annak képességeit.
Rutinok csökkentheti a hangerőt a futtatható fájlt a program leírás szerint ismétlődő szakaszok csak egyszer. Minden hívás szubrutinhívás parancs átmenet akkor egy és ugyanaz a program fragmentumot, amely rutin, és elvégzése után az alprogram - visszatér a hívó. A szöveg az alprogram teljesen meghatározva szakaszában írásban, a változások végrehajtása során az alprogram csak annak köszönhető, hogy az átadás neki bizonyos meghatározott értékeket.
A mechanizmus a makró használata. Minden makró, a fordító fog találkozni a programot, akkor helyébe a teljes szövegét a makrót. Ha a makróban paramétereket, a folyamat helyett a paraméter helyettesítések fordul elő a szövegben a makró. Így alakult Macro része a program szövegének, megkülönböztethetetlen a többi javaslatot a program, és nem kell semmilyen hívást. Tekintettel ezekre a körülményekre némileg hatékony makro szubrutinokból végrehajtási sebesség, különösen, ha figyelembe vesszük az elkészítéséhez szükséges időre a paraméterek hívása előtt alprogram (például nyomja őket a verem). Aligha szükséges azonban, ha elvégzi az összehasonlítást. Rutinok és makrók különböző alkalmazási területeken.
Rutinok használják, hogy csökkentsék a hangerőt a program, hogy növelje az átláthatóságot, és egyszerűsíti a korrekciós algoritmus végrehajtása minden szoftvercsomag összetételének megváltoztatásával és az eljárás az úgynevezett alprogramok. Ebben az esetben az aktív használata rutinok csökkentheti a méretét a program több tucat alkalommal.
Ennek oka az, makrók segítségével egészen más. Makrók is leegyszerűsítheti a programot írni, és lehet mondani, a programozás automatizálási eszköz. Ebben az esetben a makró nyelv remek lehetőséget biztosít a szöveg módosításához Macro, beállítástól függően említett makrót. Illusztráljuk ezeket a funkciókat egy egyszerű példával makrók megjelenítéséhez karakter képernyőn. Ez a makro használható a folyamat hibakeresés komplex programok, hogy információt szerezzenek a tartalmát bármilyen memória sejtek. Egy példa van kialakítva, mint egy komplett programot, amely pusztán szimbolikus.
Ábra. 2.18. A következtetés a program 2.1.
; Macro endpr befejezése a program
endpr makro; makro paraméterek nélkül
mov ax, 4C00h
int 2
END m; vége makro
; Delay egyéni makróprogram késés
késleltetheti makro idő, Parameter - a lépések számát
locallabell, Iabel2; Helyi címkék
nyomja CX; Mentés külső számláló
mov CX, idő, hogy az aktuális paraméter
Iabel2. nyomja CX; tartsa a verem
mov CX, 0, legyen az 64K lépések
Labell: loop lanell; belső hurkot
pop CX; letölteni a külső számláló
hurok Iabel2; külső hurok
pop CX; visszaállítása CX programot
END m; vége makro
Annak érdekében, hogy a fordító elérhető makrók MYMACRO.MAC fájlt, akkor legyen abban a szakaszban a fordítás csatlakozni a forráskód a program assembler direktíva tartalmazza:
illeszthetem makro, mac
Minden makrók, amelyek szerepelnek a fájlban, bárhol használható a programban.
Irányelv feltételes fordítás
A feltételes fordítási direktívák (feltételes összeszerelés) lehetővé teszi, hogy az eredeti program szöveges töredékei különböző kiviteli az egyes programok, valamint a sajátos feltételek meghatározásával, hogy ellenőrizzék a fordítás folyamata. Így lehetséges például, hogy tartalmazza, vagy kizárni a szöveg a műsor, check-töredékek, vagy konfigurálja a programot futtatni egy adott processzor.
Tegyük fel például, hogy a folyamat a hibakeresés egy komplex program, használjuk a szubrutin regs megjeleníti a tartalmát a CPU regiszterek. Beleértve több helyen egy hívást a rutin, megvan a képessége, hogy az előrehaladás figyelemmel kísérése annak végrehajtását, beleértve a finomabb pontok, mint például a helyét a program memória, vagy az intenzitás a használata a verem. A szabályozás a fordítási folyamat biztosított állandó debug (hibakereső) nem nulla értéket, amely szükségessé tenné a debug adás, és a nulla - működik. A program kezdete, valamint a területek egy hívás hibakereső rutinok a következők:
; Debug = l; karakter törléséhez „;” hibakeresés fordítás
; Debug = 0; Eltávolítás ';' Munka fordításra
. ; Text programot
ha a debug; Broadcast csak debug = l
hívja sorból; Hívja a debug rutinok
endif; End feltételes fordítási egység
...; A program folytatásáról
ha a debug; Tovább blokk felvétele hibakeresés
hívás sorból
endif
. ; A program folytatása
Természetesen lehetőség van debug programot a hibakereső verzió, majd törölje az összes hívások kisegítő alprogram regs kézzel kap egy működő kiviteli alakban, de a gyakorlatban általában (vagy mindig) úgy tűnik, hogy a műtét után a program egy ideig észleltetheti észrevétlenül korábban hiba ez vezet a szükségességét, hogy tegye be újra a hibakeresés vonalak. Gyakran előfordul, hogy ezt az eljárást meg kell ismételni többször. A program használata irányelvek feltételes fordítási eljárás csökkenti átalakítási programot a debug dolgozni, vagy fordítva, hogy a törlés művelet egy szimbólum „;” elején a program, és megszünteti az esélye a véletlen behurcolása a program új hiba a folyamat beillesztése és eltávolítása hibakeresési szálakat.
Vegyünk egy másik példát a feltételes fordítási direktívák. Mint már említettük, a modern processzorok a programozó jelentős mennyiségű további parancsokat lehet használni a valós módú programok, de természetesen, ha a számítógép rendelkezik a megfelelő processzor. Ez könnyű létrehozni egy univerzális program, amely elvégezhető akár modern processzorok (hatékonyabb módon), és az idősebb (néhány a hatékonyság csökkenése), ha tartalmazza benne direktívák feltételes összeállítása ezeket a további parancsokat. Ezek a csapatok, különösen a boltban utasítást egy köteg összes általános célú regiszterek Pusha Rohr és helyreállítják az összes nyilvántartás. Itt egy példa a feltételes összeállítása a csapatok, amely egy makrónyelvet szerkezetet, ha. mást. endif:
i386 = l
ha i386
.386
endif
kódszegmens use16
vállalnak CS: code
fő proc
...
ha i386
nyomja; Mentés valamennyi nyilvántartás egy csapat
más
tolja AX
nyomja CX
nyomja DX
nyomja BX
nyomja BP
nyomja SI
nyomja DI
endif
. Using nyilvántartások után
; Megőrzése értéküket
Ha 1386-ban
Rohr; Visszaállítja az összes regiszter egy paranccsal
más
pop DI
pop SI
pop BP
pop BX
pop DX
pop CX
pop AX
endif