Szegmens struktúra programok

Szegmens struktúra programok

Hogyan fogalmát memória szegmensek tükröződik a szerkezet a program? Meg kell jegyezni, hogy a szerkezet a program határozza meg, egyrészt, hogy a processzor (ha a memória hozzáférés csak akkor lehetséges a segítségével a szegmenst, majd a program valószínűleg kell állnia szegmens), és a másik - a funkciók az operációs rendszer, amelynek alapján ezt a program fog futni. Végül a program struktúráját és az is befolyásolja, a szabályokat a választott fordító - különböző fordítóprogramok szabhat némileg eltérő követelményeket támaszt a forráskód a program. A könyv elkészítése a fordítás és hibakeresés a mintaprogramok használt csomag TASM 5,0 Corporation Borland International; ez kényelmes, különösen a jelenléte több ablak vizuális debugger. Ez a probléma azonban nem kritikus, és az olvasó is hibakeresés a példák a könyv használatához szerelő korábban megismerte a leírását.

Példa 1-1.Prostaya program három szegmens

; Határozni a megfelelő szegmens regiszterek szegmensek
vállalnak CS: kód, DS: az adatok

; Leírjuk adatszegmens
adatszegmens; adatszegmens Nyitott
msg db „program fut $„az output string
adat kerül, közel az adatszegmens

; Leírjuk verem szegmens
db szegmens verem; Megnyitás verem szegmens
dB 256 DUP (?); hajlik a köteg 256 bájt
stk végződik, közel a verem szegmens

end kezdődik; End szövegbeviteli pont

Meg kell jegyezni, hogy a bemeneti forrást a program a szöveget a billentyűzet használható mind nagy- és kisbetűk; a fordító kap, például MOV AX vonal, DATA és mov ax, adatok egyaránt. Azonban a megfelelő kulcsokat lehet tenni a fordító, hogy különbséget a kis- és nagybetűk az egyes elemeket a javaslatokat. Ebben a könyvben a szövegben a program és a leírás a nyelv nyilatkozatok kisbetűk elsősorban kivételével nyilvántartást elnevezések, amelyek a jobb érthetőség kedvéért vannak jelölve nagybetűvel.

A program 1-1 ismerteti a három szegmens: parancs részes nevű kód, az adatok nevezett szegmenst adatok és verem szegmens nevű stk. A leírás az egyes szegmens kezdődik a kulcsszó szegmens előzi meg néhány nevet, és véget ér a kulcsszó végén, előtte az azonos nevű, a fordító, hogy pontosan tudja, mit akarunk fejezni a szegmensben. A nevét szegmensek választják teljesen véletlenszerűen. A szöveg végén egy program vége szerelő irányelv, az utolsó adás. A minőség az irányelv operandus meghatározza a belépési pont a program ebben az esetben a kezd jelet.

A megrendelő ezeket a szegmenseket a program, mint általában, nem számít. programot gyakran kezdődik az adatok szegmens, akkor valamivel könnyebb olvasni a programot, és egyes esetekben megszünteti a lehetséges félreértések értelmezése parancsok hivatkozó adatok még nem írták le. Mi vagyunk az elején a program a Menü szegmens, majd - az adatok szegmens, és a végén - egy szegmense a verem; Ez az elrendezés néhány kényelmi hibakeresési programokat. Csak az a fontos, hogy megértsük, hogy a számítógép memória szegmensek csökkenni fog abban a sorrendben, amelyben a programban leírt (ha a különleges szerelvény segítségével nem állítja be a boot sorrendben szegmensek memória).

A szegmenseket lépett a program segítségével az assembler irányelvek és a szegmens végét. Mi az assembler direktíva? A program során ott vannak a kulcsszavak két típusa van: a CPU utasítások (. Mov int) és fordító irányelvek (ebben az esetben a „fordító” és a „szerelvény” szinonimák, jelezve a program, amely átalakítja a forráskód írt assembly nyelvű kódot lesz, ha a program által érzékelt a processzor). Az assembler irányelvek jelzik a kezdetét és végét a szegmens végek és a szegmensek; kulcsszavak típusát írja le felhasznált adatok (db, dup); specifikus jellemzőket, mint egy köteg szegmensek, és így tovább. e. Irányelvek továbbítására használt szolgáltatási információt a fordítónak, amit használ során a sugárzott adást. Része azonban végrehajtható program, amely a gépi kód, ezeket a sorokat nem tartoznak, mint a processzor hajtja végre a programot, nincs rájuk szükség. Más szóval, a piaci szegmens végét, és nem fordította gépi kódra, és csak az assembler a fordítás programot. Ezzel a kérdéssel fogunk találkozni, ha figyelembe vesszük a program listát.

Tovább szerelő irányelv használunk az első mondatban a program:

A cél a 1-1 program várhatóan kötni a képernyőn szöveget „Ez működik!” Ismertetett, a adatszegmensben. A következő javaslatok a program csak a művelet végrehajtásához. Ezt nem közvetlenül, hanem a hivatkozás a segédprogramok MS-DOS operációs rendszer, amelyet a rövidség fogjuk a továbbiakban hivatkozni lehet egyszerűen DOS. A tény az, hogy a processzor utasítás, és ennek megfelelően az assembly nyelvű szereplők nincsenek parancsok kijelző (és utasítások billentyűzet, írj egy fájlt a lemezen, stb.) Következtetés Még egy karakter a képernyőn valójában egy meglehetősen bonyolult művelet, amely ahhoz szükséges, hogy végezze el a hosszú sorozat processzor utasításokat. Természetesen ez a parancsokat is szerepel a programban, de ez sokkal könnyebb segítséget kérni, hogy az operációs rendszer. A szerkezet számos DOS program végrehajtása a standard és gyakran szükséges funkciók - kijelző és billentyűzet, írj egy fájlt, és olvasni egy fájlt, vagy olvasni az aktuális időt, az elosztás vagy felszabadítás, és még sokan mások.

Hogyan kell végrehajtani egy futó program? Tény, hogy a végén a program - ez egy meglehetősen összetett műveletek sorozata, amely magában foglalja többek között a kibocsátás memória elfoglalt befejezni a programot, valamint a kihívást a rendszer program (pontosabban - a parancs processzor COMMAND.COM), amely megjeleníti a DOS kérelmet, és várni fog a következő parancs nyilatkozatot. Mindezek az intézkedések kerülnek végrehajtásra a DOS funkció 4CH számát. A függvény feltételezi, hogy az AL regiszter teljes kódja a program, amely azt továbbítja a DOS. Ha a program sikeres, a befejezés kódot kell 0, ezért vagyunk ugyanabban a mondatban mov ax, 4C00h terhelés NA 4 csatornás, és az AL - 0, és hívja az ismerős DOS int 21h utasítást.

Elvégzésére próbaüzem a fenti program, először meg kell lennie kidolgozása és a link. Hagyja, hogy a forráskód egy fájlban tárolja nevű P.ASM. Broadcast a szerelvény hívja TASM.EXE az alábbi DOS parancsokat;

Kulcs / z teszi kimenetet egy program forráskódját szöveges kijelző sor, amelynek során a szerelő talált hibát (anélkül, hogy ez a kulcs keresési kellene végezni hibát sugárzott hirdetések).

Kulcs / zi ellenőrzések fordult a tárgy információs fájl nem szükséges, ha a program végrehajtásához, de használják a debugger.

Kulcs / n elnyomja a lista a lista a szimbolikus jelölést a programban, a ami némileg csökkentette a tőzsdei leíró, de csökkent a mérete.

Szembenézni további paraméterek határozzák meg a fájlneveket az eredeti (P.ASM), tárgy (P.OBJ) és felsorolja (P.LST). Érdemes lehet hívni a vonalat fordítót, hogy adja meg a teljes fájlneveket a kiterjesztéseket, de ez nem szükséges, mivel az alapértelmezett fordító használ kiterjesztésű fent felsorolt.

Hívjon sorelrendezéshez a következő formában:

Kulcs / x hirdetést elrendezés elnyomja a kialakulását, amely általában nincs szükség.

/ V kapcsoló továbbítja az indító információs fájl, amit a debugger. Szembenézni további paraméterek tüntetni a modulok: tárgy (R.OBJ) és a boot (R.EHE).

Mivel a tanulmány ezt a könyvet, akkor kell írni, és debug számos program, célszerű létrehozni egy batch fájl (neve, például A.VAT), amely automatizálja a végrehajtását az azonos típusú broadcast műveletek és elrendezését. Szöveg kötegelt fájlban a legegyszerűbb formája lehet, így (feltételezve, hogy a könyvtár elérési útját a csomag TASM szerepel a PATH parancs paraméter):

TASM / z / zi / n p, p, p
tlink / X / V p, p

A program futtatása kész R.EHE r.ehe csapat

Amikor A program letöltése szegmensek vannak elhelyezve a memóriában ábrán látható. 1.9.

Szegmens struktúra programok

Ábra. 1.9.Obraz programot a memóriában.

Kapcsolódó cikkek