Felvételi programok assembly nyelven
Fields kényelmesen elválasztott fülek.
Nevek az adatok, eljárások, utasítások szegmenseket vagy a címkék nem tartalmazhat több mint 255 latin betűk vagy számok, ahol az első karaktert kell írni szükséges. Alapértelmezésben a név értelme az első 32 karakter. Kis- és nagybetűk szerelő változhat vagy nem változik (billentyűk: / ML, / MU és / MX). Címkék gép parancsokat kell végződnie vastagbélben.
A közvetített minden név van társítva attribútumok számát.
Ez a mező tartalmazza a művelet gépi utasítás emlékeztető, igazgató-tivy vagy makrók. A kis- és nagybetűk, a Mnemonic kód szerelő műveletek nem különböznek.
operandus mező használható felvétel operandus amennyiben igénylő.
Ha több operandust általában elválasztva-ötödik.
Az assembly programokban megengedett többféle állandók:
· Decimális - egy számsorozat 0-9;
· Hex - egy sor hexadecimális számjegyek 0-9 és AF vagy a vagy f, megszűnik a H betű vagy h kell, hogy legyen az első tizedes jegyre;
· Oktális - sorszámokat 0-7, amelynek végén betűk Q, q, O vagy O;
· Bináris - sorszámok 0 vagy 1, megszűnik a B betű, vagy b.
Az alábbiakban egy tipikus felépítése egy egyszerű programot assembly nyelven.
QUIT: kilépési kód 0
Irányelv verem, dataseg codeseg és arra szolgálnak, hogy a szegmensek.
Macro startupcode tartalmaz inicializálás kódot, amely betöltése DS és SS szegmens regiszterek.
makró kilépési kód <код возврата> végzi a program befejezése és átadása a környezeti menedzsment. Opcionális paraméter-ny <код возврата> Ez visszatérési értéke, ahol ellenőrizni tudja a Team OS fájlokat.
irányelv vége <метка точки входа> Ez jelzi a végén a szöveg pro-gramm, és azt mondja a szerelő, hogy hol töltse a fordítást. Ezért az irányelv végén jelen kell lennie mind a pro-gramm. az opcionális <метка точки входа> Ez azt jelzi, használati utasítás, amelynek meg kell kezdeni a programot.
<имя> DW <выражение>,<выражение>. és
<имя> DB <выражение>,<выражение>.
meghatározására szolgálhatnak az adatok szavak vagy bájt, ill.
<выражение> Ez lehet állandó, vagy ha az érték nem meghatározott, akkor a kérdőjellel.
tervezés <число> dup (<выражение>,<выражение>. ) Ispol'uet-továbbítja leolvasások ismétlődő sorozatából kifejezések zárójelben <число> időben.
Kezelési programok DOS
Kezelési programok assembly nyelven a DOS áll nem-hány szakaszból áll:
· Broadcast használó programokat TASM szerelő;
· Fuss és programok hibáinak.
Lefordítani a forrás fájlt meg kell adni a parancssorban a következő formában:
TASM
Megjegyzés. A fájl neve NULL azt jelzi, hogy az adott fájl nem jön létre.
TASM bemeneti és kimeneti fájlokat használja a következő alapértékeket:
· A forrás file kiterjesztés - ASM;
· Object file: ugyanaz a neve, mint az eredeti fájl kiterjesztését - OBJ;
· Listing fájlnév - NULL, ha meg a / l vagy / LA - a nevét a lista fájl neve megegyezik az eredeti fájl, ha a név megadva, vagy állítsa be a / l és / LA, az alapértelmezett kiterjesztés - LST;
· Határon referencia fájl nevét - NULL, ha meg a gombot / C - a név a kereszthivatkozások fájl neve megegyezik az eredeti fájl, ha a név megadva, vagy meghatározott kulcs / C, az alapértelmezett kiterjesztés - CRF.
Assembly különféle broadcast módok beállítása a gombokkal, a leggyakrabban használt a következők:
· / L és / LA - létrehoz egy listát fájllistázást vagy hosszabb;
· / C - alkotnak egy fájlt a kereszthivatkozások asztal, Lie-lé forrás modul azonosítója programot jelző sorszámok, amelyek megemlítik az azonosító-tor;
· / ZI - elhelyezett tárgy modul teljes információt hibakeresés: az adatok és azonosítók címkék, sorszámok, stb
TASM alapozó / L / ZI
Broadcast PRIMER.ASM létrehozott fájlok PRIMER.LST tőzsdei fájlt, és ha nincs hiba, a tárgy PRIMER.OBJ fájlt. Az objektum fájl tartalmazza a teljes információt a debugger.
Összekapcsolni az objektum fájlt, adjon meg egy parancssort, amely hasonlít a következő:
tlink
TLINK bemeneti és kimeneti fájlokat használja a következő alapértékeket:
· Object file: kiterjesztés - OBJ;
· Végrehajtható fájl neve megegyezik a neve az objektum fájl kiterjesztését - EXE;
Modul terv fájl neve - NULL, ha beállítja a kulcs / M - modul terv fájl neve megegyezik az objektum nevét fájlt, ha van megadva, vagy meghatározott kulcs / M, az alapértelmezett kiterjesztés - MAP.
A linker különböző módok a műsorszórás, set-MYE nyomógombokkal, a leggyakrabban használt a következők:
· A / V -, hogy egy végrehajtható átfogó tájékoztatás a debugger: adat azonosítók és címkék, sorszámok, stb
tlink alapozó / M / V
Építsd tárgy PRIMER.OBJ fájlt. Execu-nyaemy fájl van neve - PRIMER.EXE, hogy információkat fog tartalmazni a debugger. fájl jön létre a modul neve terv PRIMER.MAP.
A program futtatása elvégzésére lehet tenni beírja a parancsot a program fájl neve (kiterjesztés EXE AUC-kötő opcionális):
Futtatni alatt debugger, futtatni kell a hibakereső nevével a program files:
A hibakereső TD
A teljesség igénye nélkül leírja a teljességet, ad leírást az alapokat értékű függvények és TD debugger képességeit.
Hogyan fut a program keretében egy hibakereső
Alatt futó hibakereső program végzi parancssoros
Mit lehet és mit nem lehet hibakereső TD
· Trace (léptető) - végezhető pro-gram egy operátor, kihagyva (vagy kihagyva) ugyanabban az időben felhívja eljárások és függvények;
· Töréspont - a program végrehajtásához, a programban meghatározott pont;
· Change - Meg lehet változtatni a tartalmát a változó;
· Nyomon követése - lehet kiosztani néhány változót, és a változások nyomon követése az értékek a futás során.
· Nem újrafordítani a programot. Ehhez szükség van egy fordító vagy assembler (pl TASM);
· És ami a legfontosabb, a hibakereső nem helyettesítheti a folyamat obdu-myvaniya. Turbootladchik egy hatékony eszköz, de ennek hiányában a gondolatait, nem kíméli sem idő, sem erőfeszítést.
A modul (modul) jelenít meg szöveget, hogy debug a programot. Mozoghat a szöveget, a program vonal és adatok megtekintését és a kódot.
Ablak CPU (CPU) jelzi az aktuális állapotát a központi feldolgozó egység (CPU). A dobozban öt panel (nak), ahol:
· Memóriakép (jellemzően adatszegmens);
· A tartalma CPU regiszterek;
· Tartalom CPU zászlókat.
Helyi Watch Window menüben (Alt + F10 vagy a Ctrl + F10) a következő elemeket tartalmazza:
· Edit (Szerkesztés) lehetővé teszi, hogy módosítsa a kifejezést a Órák ablakban. Meg lehet változtatni a tény, hogy van, vagy adjon meg egy új értéket;
· Eltávolítása (törlése) eltávolítja a Órák ablakban kijelölt rekord;
· Összes törlése (Delete all) törli a Órák ablak minden rekordot;
· Vizsgálja (Test) megnyitja a négyzetet (Inspector ablak), amely megjeleníti a tartalmát a jelenleg kiemelte az órák ablakban belépést;
· Change (Módosítás) értékét megváltoztatja a kijelölt bejegyzéseket jelenleg a Órák ablak egy értéket, amit válaszként beírni a parancssorba.
Az ablak Dump (Dump) jelenik formájában közvetlen zhimoe tartalmaznak memória területeken. (Ez az ablak megfelelő terület a CPU ablak lerakó.) Lehet megjeleníteni az adatokat formájában karakterek, hex-dtsaterichnyh bájtok, szavak, szavak kettős, vagy bármilyen lebegőpontos formátumban. Ez az ablak is használható pro-direct show formájában néhány adat, akkor nem kell a többi CPU ablakot. Ebben az ablakban a helyi menü olyan parancsokat tartalmaz, amely lehetővé teszi, hogy módosítsa vyvo-séges adatokat, változtatni a kimeneti formátum, valamint a kád manipulált adatokat blokkokat.
Helyi menü Dump ablakban (Alt + F10 vagy a Ctrl + F10) a következő elemeket tartalmazza:
· Display As (Output Mode) - beállítja a lerakó kimeneti mód: bájt, stb
a felhasználó képernyőjén - jelenik meg a programban. Ez a képernyő pontosan ugyanabban a formában, ahogy kellett volna, ha egy állapot Zárt a programot anélkül, hogy a hibakereső (közvetlenül DOS alatt).
Akkor használja ezt a képernyőt, hogy ellenőrizze rét, legyen veszi a program, és ez megfelel annak, amit kellene a képernyőn. Váltani a felhasználó a képernyő Mondd válassza ki az Ablak + felhasználói képernyő (vagy az Alt + F5).
Indítási parancs (bevitel, F9) indítja el a programot futtatni. Ha az alábbi események történnek, a vezérlés a debugger:
· A program befejeződött végrehajtása;
· Az észlelt töréspont megszakítás a keresetet;
· A leállnak a Ctrl + szünet.
Csapat lépés kurzor
Csapat lépés kurzor (Menj a kurzort, az F4) ellátja pro-gramm a sort, ahol a kurzor található (az aktuális ablakot vagy területet modul kód CPU ablakban).
Csapat Trace Into
Trace Into parancs (Trace mélység, F7) végez az egyik vonal a forráskód vagy gépi utasítást. Ha az aktuális sor tartalmaz egy hívást egy eljárás vagy függvény, a hibakereső-tölti meg nyomon követni ezt az eljárást. Azonban, ha a jelenlegi kb Mr. CPU mezőbe, majd futás egy gépi utasítás.
Command átlépni (Step hagyja, F8) végez az egyik vonal a forráskód vagy gépi utasítás, megkerülve Trace összpontosítva a hívott eljárás vagy függvény. Ez rendszerint egy sor forráskódot. Azonban, ha az aktuális ablak egy CPU mezőbe, majd az egyetlen gépi utasítás.
Ha ez a parancs kerül végrehajtásra egy gépi utasítás, Turbootladchik értelmezi néhány utasítást, mint egy, akkor is, ha vezetnek végrehajtásának MULTI-cal utasításokat:
· Hívás - szubrutinhívás;
· Int - interrupt hívás;
· Hurok, LOOPZ, LOOPNZ --menedzsment;
· Rep, repnz vagy repz, majd CMPS utasítást, LOD, movs, SCAS, rövid távra kirendelt megfigyelő.
A csapat Instruction Trace
A csapat Instruction Trace (Trace utasítás, Alt + F7) tölti meg egy utasítás. Ezt fel lehet használni, ha a követni kívánt megszakítás, vagy ha az ablak Modul és szeretné nyomon követni az eljárás vagy függvény, amely található a modul hibakeresési információk nélkül (például könyvtári rutinok).
Csapat program visszaállítása
Csapat Program reszet (program Ctrl + F2) Reboot-zhaet hibamentesített program azt a lemezt.
Példa feladat elvégzésekor
Mivel egy sor tíz szót tartalmazó egész számok. Megkövetelése etsya megtalálják a maximális értéket.
MASS dw 10h, 20h, 30h, 5 óra, 40 óra, 15 óra, 20 óra, 70 óra, 35h, 34h
ÖÈÊËÈ×ÅÑÊÈÅ È ÐÀÇÂÅÒÂËßÞÙÈÅÑß ÏÐÎÃÐÀÌÌÛ
E munka -, hogy dolgozzon készségek fejlesztése egyszerű ciklusú programok assembly nyelven.
Fejleszteni a feltétel kódot használhatja Coma sorok CMP teszt. Ezen túlmenően, a feltételeket a kódok által termelt Arif-meticheskimi és logikai utasításokat.
A szervezet a ciklikus számítás is van-használni a Feltételes átmeneti csoport, de abban az esetben a szervezet egy ciklus a számláló sokkal kényelmesebb használni a parancsokat ciklusba.
Példa feladat elvégzésekor
Mivel egy sor tíz szót tartalmazó egész számok. Megkövetelése etsya megtalálják a maximális értéket.
MASS dw 10h, 20h, 30h, 5 óra, 40 óra, 15 óra, 20 óra, 70 óra, 35h, 34h
Példák a logikai parancsok
Set 3, 0 bit regiszter AL, a többi bit nem módosítja
vagy AL, 00001001b.
Reset 4 és 6 bit a regisztrációhoz AL, a többi bit nem módosítja
AL, 10101111b.
Invert 4 és 2 bit regiszter AL, a többi bit nem módosítja
xor AL, 00010100b.
Ide LAB címkére, ha van egy 4 bites regiszter AL, egyébként továbbra is a program végrehajtása
teszt AL, 00010000b
JNZ LAB
; folytatódik
.
LAB:
Számoljuk ki a pincék közül egy byte - regisztrálja AL
mov CX, 8
xor BX, BX
LL: shl AL, 1
JNC NO
inc BX
NO: loop LL
Példa feladat elvégzésekor
Mivel egy sor 10 bájt. Minden byte nulla magas bit. Meg kell minden byte, amely 1 a 0. bit, terjeszteni páros számú egység a telepítés 7-edik bit bájt, minden byte, amely 0 a 0. bit, hozzáadni páratlan számú egység a telepítés 7-edik bit bájt.
MB db 04h 07h, 11h, 23h, 04h, 38h, 3Fh, 2Ah, 0Dh, 34h
mov CX, 10; CX - számolja az iterációk
mov AL, [BX]; fontolja meg a következő byte tömböt
tesztelni AL, 00000001b; telepítve, ha a bit 0-ra?
JZ BIT0CLR; Nem, bit 0 törlődik
; 0. bit be van állítva
tesztelni AL, 0FFh; páros számú is?
jp OK; Igen, több mit tenni
vagy AL, 80H; páratlan, páros terjeszteni
BIT0CLR :; bit 0 törlődik
tesztelni AL, 0FFh; páros számú is?
JNP OK; Többé nem kell csinálni semmit
vagy AL, 80H; páros, páratlan kiegészítője
mov [BX], AL; Írja változások bájttömböt
QUIT: kilépési kód 0
1. Mivel egy sor 10 bájt. Számoljuk ki a bájtok számát, amelyekben az alaphelyzetbe 6 és 4 bit.
2. Tekintettel tömb 8 byte. Ami azt tömbként 64 bit, hogy számolja meg az egységek számát.
3. Mivel egy sor 8 bájt. Ami azt tömbként 64 bit, hogy számít a hossza a leghosszabb szekvencia egység.
4. mivel egy sor 8 bájt. Ami azt tömbként-nek logikai értékek x0 x1 x2 x3 x4 x5 x6 x7 (igaz - nem nulla bit egy bájt, hamis - minden bit nulla) kiszámításához logikai vor öszvér f = (x7
x6x3x1) V (x6x4x2x1
5. Tekintettel egy sor 5 bájt. Kezelést, mint egy sor 10 tetrád, keresse meg a „kizáró vagy” mind a 10 notebook.
6. Mivel a tömb 10 byte. Számoljuk ki a bájtok számát koto-reset ryh 5 vagy 1 bit.
7. Figyelembe véve, bájt, mint egy sor logikai értékek x7 X6 X5 x4 x3 x2 x1 x0 (igaz - 1, hamis - 0), számítjuk logikai-iai f = (x7
x6x3x1) V (x6x4x2x1
8. Adott egy tömb 10 byte. Számítsuk ki a bájtok számát a Koto-ryh készlet 3 és 7 bit.
1. Mi a különbség a csapatok között tesztelni DST, SRC és és DST, SRC?
2. Hogyan állíthatom vissza az 5. bit változó - Byte BB?
3. Hogyan kell beállítani az 5. bit változó - Byte BB?
4. Hogyan fordítsa az 5. bit változó - Byte BB?
5. Hogyan ellenőrizheti, hogy van az 5. bit változó - Byte BB?
6. Mivel a csekket páratlan vagy páros számú készlet bit egy byte változó-BB?
7. Mik a feltételei a zászlók után módosítottak parancsok végrehajtása és, vagy, xor?
8. Mi a fő különbség a csapatok, logikai és aritmetikai műszakban?
9. Adja meg a maximális számú bitet az operandus betolható csak egy műszakban csapat?
10. A sorpárt
mov CL, 8
"Shift" BL, CL
mely parancsok lehet helyettesített helyett a „shift”, hogy a tartalmát a BL nem változik?
11. A sorpárt
"Balra tolódását" BL, 1
"Jobb irányú eltolódást" BL, 1
mely parancsokat lehet helyettesíteni, hanem a „eltolódás balra” és „jobb shift”, hogy a tartalmát a BL nem változik?