Kako podesiti pametne telefone i računare. Informativni portal

Opis naredbi debugera debug.



Program DEBUG (debugger) pruža sredstvo za otkrivanje grešaka kada
rad sa programom prevedenim na mašinski jezik. Program
DEBUG pruža mogućnost koračanja kroz program i
gledajte šta se dešava dok ovo radite. DEBUG program je također
jedna stvar softverski alat isporučuje se kao dio DOS-a. Vi
preuzmite ga na isti način kao i bilo koji drugi program i radite u njemu
dijalog pomoću tastature i ekrana. Kada program DEBUG
očekuje bilo kakvu radnju od korisnika, zatim vaš zahtjev
označava se simbolom "-".

Umjesto navođenja svih naredbi koje ulaze u program
DEBUG, koristimo ovaj program za otklanjanje grešaka da provjerimo rad upravo sada
kompajlirani program prikazan na Sl. 5.13 i A5.14. Na
Fig. 5.17 prikazuje odgovarajući listing.
V ovaj primjer program DEBUG se poziva prvi i
program koji bi trebao biti otklonjen je naznačen - u
u našem slučaju, program FIG5 = 13.EXE. Nakon DEBUG programa
učitan, učitava program koji se otklanja greške.
Kontrola sada pripada debugeru i koristi "-"
pokazuje šta čeka na unos. Dok ne uđete za
uputstva, ništa se neće dogoditi programu.

R komanda prikazuje sadržaj svih registara u ovom trenutku
što odgovara učitavanju programa FIG5 = 13 i prenošenju kontrole na njega.
Sadržaj registara je sam po sebi razumljiv, osim da bude
možda vrijednosti zastavice. NV zastavica označava br
overflow, UP flag - oznaka smjera, itd. Prilikom povlačenja
sadržaj registara u zadnjem redu je sljedeći
naredba koja se izvršava. Lokacija 04C5: 0000 sadrži PUSH DS naredbu.
B> A: DEBUG FIG5_13.EXE
-R

AX = 0000 BX = 0000 CX = 0120 DX = 0000 SP = FFF0 BP = 0000 SI = 0000 DI = 0000
DS = 2C26 ES = 2C26 SS = 2C26 CS = 2C26 IP = 0000 NV UP DI PL NZ NA PO NC
2C26: 0000 1E PUSH DS

2C26: 0000 1E GURNUTI DS
2C26: 0001 B80000 MOV AX, 0000
2C26: 0004 50 GURNUTI SJEKIRA
2C26: 0005 FC CLD
2C26: 0006 8CC8 MOV AX, CS
2C26: 0008 8ED8 MOV DS, AX
2C26: 000A 8D361D00 LEA SI,
2C26: 000E AC LODSB
2C26: 000F A24000 MOV , AL
2C26: 0012 E82C00 CALL 0041
2C26: 0015 803E40000A CMP , 0A
2C26: 001A 75F2 JNZ 000E
2C26: 001C CB RET Daleko
2C26: 001D 9D POPF
2C26: 001E E2A0 PETLJA FFC0
2C26: 0020 20AFE0AE I , CH
2C26: 0024 A3E0A0 MOV , SJEKIRA

D2C26: 0

2C0E: 0000 CD 20 00 A0 00 9A EE FE 1D F0 ED 04 04 1C 3C 01. ............<.
2C0E: 0010 22 1B EB 04 22 1B 04 1C 01 01 01 00 02 06 FF FF "..." ...........
2C0E: 0020 FF FF FF FF FF FF FF FF FF FF FF FF 08 2C D0 FF ............., ..
2C0E: 0030 04 1C 14 00 18 00 0E 2C FF FF FF FF 00 00 00 00 ......., ........
2C0E: 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
2C0E: 0050 CD 21 CB 00 00 00 00 00 00 00 00 00 00 20 20 20! ...........
2C0E: 0060 20 20 20 20 20 20 20 20 00 00 00 00 00 20 20 20 .....
2C0E: 0070 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 ........

RAX
AX 0000
:1234

E 2C0E: 21
2C0E: 0021 69. 73. 20. 61.20 20.


DS = 2C26 ES = 2C26 SS = 2C26 CS = 2C26 IP = 003C NV UP DI PL NZ NA PO NC
2C26: 003C CD10 INT 10
-T

AX = 0E54 BX = 0000 CX = 003F DX = 0000 SP = FFEA BP = 0000 SI = 001D DI = 0000
DS = 2C26 ES = 2C26 SS = 2C26 CS = F000 IP = 0165 NV UP DI PL NZ NA PO NC
F000: F065 FB STI
-T

Fig. 5.17 Lista debagera za slike 5.13 i 4.14 (početak)
AX = 0E54 BX = 0000 CX = 003F DX = 0000 SP = FFEA BP = 0000 SI = 001D DI = 0000
DS = 2C26 ES = 2C26 SS = 2C26 CS = F000 IP = 0166 NV UP DI PL NZ NA PE NC
F000: F066 FC CLD
-G 2C26: 3E

T
AX = 0E54 BX = 0000 CX = 003F DX = 0000 SP = FFEA BP = 0000 SI = 001D DI = 0000
DS = 2C26 ES = 2C26 SS = 2C26 CS = 2C26 IP = 013E NV UP DI PL NZ NA PO NC
2C26: 003E RET
-G

Ovaj program je test

Program je normalno prekinut
-R

AX = 0754 BX = 0000 CX = 003F DX = 0000 SP = FFEA BP = 0000 SI = 001D DI = 0000
DS = 2C26 ES = 2C26 SS = 2C26 CS = 2C26 IP = 003E NV UP DI PL NZ NA PO NC
2C26: 003E C3 RET
-Q

Fig. 5.17 Lista debugera za slike 5.13 i 4.14 (nastavak)

Ovdje se treba malo zadržati i analizirati
informacije koje se upisuju u registre. Registrirajte sadržaje
odgovara trenutku kada program FIG5 = 13 prima kontrolu
iz komandnog procesora. Imajte na umu da je par registara
CS: IP ukazuje na prvu naredbu specificiranu naredbom END
programe. DS i ES registri označavaju softverski prefiks
segment. Konačno, par registara SS: SP pokazuje na segment
STACK. Opisano stanje registara će se kasnije uporediti sa
isto stanje registara za fajl tipa .COM.

Da vidite više naredbi, morate unijeti znak "U"
(rastaviti), a na displeju se prikazuje dvadesetak
sledeće komande. Ovo je zgodno kada imate program za koji ne postoji
listing. Rastavljanje programa vam omogućava da ga vidite
timovi. Ovo vam može uštedjeti papir i vrijeme kada
program je malo izmijenjen. Pošto je vaš listing veći
ne odgovara programu koji se nalazi u memoriji, onda njegov
rastavljanje vam omogućava da pronađete ispravne adrese za
svaki tim.

Međutim, rastavljanje sa DEBUG programom ima
niz nedostataka u odnosu na korištenje listinga. Odsutan
komentare (koji mogu biti veoma važni za razumevanje programa), i
memorijske ćelije se identifikuju samo po adresi, a ne po imenu
varijabla. Na primjer, komanda pohranjena na lokaciji 04C5: 000E ima,
kao što je prikazano na slici 5.13, sledeći pogled:

MOV OUTPUT_CHARACTER, AL

I to u rastavljenom obliku

MOV , AL

One su jedna te ista komanda. Za programera koji izvodi
debug, OUTPUT_CHARACTER ime varijable govori više od adrese
ćelije. Međutim, DEBUG program ne zna imena varijabli,
i ona je primorana da radi sa stvarnim adresama.

Osim toga, program DEBUG ne pruža isto
mnemonike asemblera koje asembler razumije. Ovo znači,
da će neke komande izgledati drugačije. Tim iz ćelije
04C5: 0014 će izgledati

CMP B ,, 0A

Ali ista komanda na slici 5.13 je predstavljena u obliku:

CMP OUTPUT_CHARACTER, 10

Program za rastavljanje i za ulaz i za izlaz
radi samo sa heksadecimalnim vrijednostima. Ovo objašnjava
izgled vrijednosti 0A. Već smo shvatili zašto se dobija vrednost
umjesto imena OUTPUT_CHARACTER. Koji je lik "B,"?

Asembler radi na varijablama dobro definiranog tipa. Ovo
znači da tokom sklapanja, tip varijabli može imati
značenje: bajt, riječ ili neko drugo. Dakle, kada
zatim programator unosi naredbu koja sadrži referencu na memorijsku oblast
asembler zna veličinu ove oblasti. Program DEBUG ne radi
ima ideju o dužini varijable zapisane na adresi
... Međutim, program za rastavljanje to sigurno zna
ova komanda šalje tačno jedan bajt podataka specificiranih od strane
direktno u timu, na. Dakle, simbol
"B" označava da se neposredna operacija sastoji od
prijenos jednog bajta. Da biste dobili isti rezultat sa
koristeći asembler, odgovarajuća naredba bi trebala biti u obliku:

CMP BYTE PTR, 10

Možete razmišljati o "B", kao skraćenici za BYTE PTR.
Slično, W se koristi za WORD PTR, L za dugo
(daleko) povratak, itd.

Zajedno sa komandom u rastavljenom obliku se i ona unosi
objektni kod. Kao što vidite, na 04C5: 001C je upisano
neke komande koje nisu na Sl. 5.13. Ovo područje podataka,
koji sadrži string "Ovo je test". Međutim, tim izvođenje
rastavljanja, ne zna se gdje završavaju komande u programu
i podaci počinju. Tako ona sve tumači kao
timovi. (Usput, ovaj niz naredbi je izvršen
bi, ako je u vašem programu napravljen prijelaz na razmatrani
područje podataka.)

Komanda za prikaz D vam omogućava da vidite prikaz
područje podataka. Ekran se sastoji od dva dijela.
Uz navođenje sadržaja memorijskih ćelija u heksadecimalnom obliku
reprezentacija sadrži znakove u ASCII kodu koji
odgovaraju ovim vrijednostima. Ako je prikaz komandi sličan
nema smisla, onda se čini da je područje podataka vrlo
jasno. Kada nemate mnogo posla, možete
pokušajte napisati program čije su komande u ASCII kodu
odgovara inicijalima vašeg imena. Sa programom za otklanjanje grešaka, možete
promijeniti sadržaj registara i memorijskih ćelija. Ako unesete znak R
(registar), a zatim tip registra, na ekranu će se prikazati
sadržaj ovog registra sa mogućnošću njegove korekcije. Ako pritisnete
"return" ključ, sadržaj registra će ostati isti. To
će se promijeniti ako se unese nova vrijednost.

Također možete mijenjati sadržaj memorijskih ćelija. Input
znak E (uređivanje) vam to omogućava. Gde
program DEBUG prikazuje vrijednosti pojedinačnih memorijskih ćelija,
nakon čega slijedi lik. Možete promijeniti sadržaj
ćelije, unošenjem nove vrijednosti ili pritiskom na razmaknicu za
idite na sljedeću ćeliju, ili - tipku "return" na
vratite se u režim zahtjeva za sljedeću naredbu debuggera. V
u razmatranom primjeru ostaju vrijednosti u prve tri ćelije
isto. Ćelija 04C5: 0024 promijenjena iz 61H u
više od 20h. Pošto je ova ćelija uključena u područje podataka, onda
prikazana poruka će se razlikovati od one koja je bila u
emitovani program.

Svaka komanda koja pristupa memorijskim lokacijama pretpostavlja
da je adresa dio naredbe. Tim E kao i tim
display, prikazuje sadržaj ćelije navedene u
njenu adresu. Slično, bilo je moguće koristiti adresu u naredbi
rastavljanje. Možete unijeti adresu u obliku segmenta i pomaka,
ili samo pomaci. Ako ste naveli samo pomak, onda
odgovarajući segmentni registar će biti odabran od strane DEBUG programa. V
u slučaju naredbe U koristi se CS registar, a za komande D i E,
po defaultu, segment će biti određen DS registrom.

Pokušajmo sada izvršiti ovaj program. Možeš samo
trči i vidi šta će se desiti. Za ovo ne
potreban vam je program DEBUG. DEBUG vam omogućava da definišete tačke
tačke prekida koje se nazivaju "prelomne tačke" programa. Hvala za
uvođenje takvih tačaka u program može vratiti kontrolu
program DEBUG. Ovo pruža još jednu priliku da provjerite status
memoriju i registre za kontrolu napretka
programe.

Komanda G, (izvrši) prenosi kontrolu sa DEBUG programa
korisnički program. Izvršavanje naredbi počinje iz ćelije,
postavljen parom registara CS: IP (isto kao u real
mikroprocesor). Program koji se testira nastavlja da radi do
dok ne prođe tačku prekida. U našem primjeru, mi
postavite tačku prekida na adresi 3CH. Pošto smo samo naznačili
offset, DEBUG koristi
sadržaj registra CS. Iz liste prikazane na Sl. 5.14,
možete vidjeti da ofset 3CH odgovara INT 10H. V
u razmatranom primjeru programa odabrano je upravo ovo mjesto,
jer je to tačka u kojoj se kontrola prenosi na potprogram
BIOS pozvan iz ROM-a. Provjera programa u ovom trenutku
osigurava da su registri prethodno postavljeni u ispravno stanje
izvršavanjem BIOS rutine.

Čim se naiđe na tačku prekida, kontrola
vraćen u program DEBUG. U ovom slučaju, kao iu slučaju
naredbom R, na displeju se prikazuje sadržaj registara i sljedeća
naredba koja se izvršava. Pošto se kontrola ponovo prenosi na program
DEBUG, možete koristiti bilo koju od naredbi za otklanjanje grešaka.

Postoje ograničenja u korištenju tačaka prekida.
Stvarnu tačku prekida implementira opkod 0CCH.
Komanda koja odgovara ovom kodu podiže INT 3 prekid.
Ovaj matematički prekid vraća kontrolu programu.
DEBUG. Ako neka naredba vrati kontrolu debugeru, onda
tačka prekida mora biti na početku ove komande. Ako
tačka prekida je odabrana negdje drugdje, kontrola nije
će biti vraćeno debugeru i pogrešna komanda će biti izvršena
program koji je trebao biti. Na primjer, ako je dato
"= G 3D", tada bi komanda INT 0CCH bila na adresi 3CH, i dalje
Izvršenje programa je teško predvidjeti.

Ako je tačka prekida odabrana pažljivo, onda ne
neće biti komplikacija. Komanda "G" vam omogućava da postavite do deset tačaka
prekidi. Nakon što prođe bilo koji od njih,
vraćanje originalnih vrijednosti prijelomnih tačaka. Performanse
debug komande "G" bez tačaka prekida nikada neće izaći
na bilo koju od prethodno postavljenih tačaka prekida, jer su sve one
su uklonjeni. Ako pokrenete program i on se zaustavi i
zapela, onda je moguće da se vrati kontrola koja
preneseno u program, to će biti moguće samo sa sistemskim ključem
resetiraj Ctrl = Alt = Del, tj. morate početi ispočetka.
Budite oprezni kada pokrećete nepoznati program.

Ako želite da unesete trajnu tačku prekida,
koristite naredbu E da promijenite vrijednost prvog bajta
komande na vrijednost 0CCH. Ova tačka prekida će biti tu sve vreme
ili barem dok ga ne promijenite. Možda
želite da koristite ovaj prekid na ulaznoj tački u
rutinu rukovanja greškama i analizirati greške koje se javljaju
pažljivije nego kada ih predate programu.

Postoji još jedna okolnost vezana za bodove
prekida da se ima na umu. Ako pokušaš da pitaš
tačka prekida u ROM području, onda ništa
to će uspjeti. Pošto ne možete promijeniti sadržaj ROM-a, naredba
0CCH tu nikada neće biti napisan.

Razmotrite sljedeću naredbu debuggera - naredbu praćenja T.
Ova naredba inicira izvršenje jedne naredbe debagovanog
programe. U našem primjeru, T naredba se izvršava više puta. Kako
možete vidjeti da li se izvršava prvih nekoliko BIOS komandi,
poziva se prekidom INT 10H. BIOS potprogram, naravno,
je u ROM-u. Komanda trace vam omogućava da "pauzirate"
program kada se izvršava u ROM-u.

Prije prenošenja kontrole na korisnički program, naredba
trace postavlja odgovarajući bit u registru zastavica
praćenje. Ovaj bit pokreće INT 1 prekid nakon izvršenja
svaki tim. Vektor prekida INT 1 vraća kontrolu
program DEBUG. Automatski izvrši INT 1 prekid
resetuje bit praćenja u prvobitno stanje. To znači da
DEBUG se ne prekida nakon izvršenja svake naredbe.
Komanda trace je odličan način da se "probije".
težak dio programa. U ovom slučaju, DEBUG program izlazi na
ekranizirajte svaku naredbu zajedno sa sadržajem registara koji je upravo ušao
trenutak prije izvršenja ove naredbe. Pošto u ovom
način rada, ne koriste se granične točke, već stvarne granične točke,
čak se i ROM programi mogu pratiti.

Vratimo se našem primjeru. Komanda = G 4C5: 3E pruža
potpuno izvršavanje BIOS rutine. Zapiši to
program je prikazao simbol "E". Pozvan na prekidu 10H
BIOS rutina upisuje znakove na ekran. U ovom slučaju jeste
prvi znak prikazane poruke. Pa kako se sad može
uvjereni da se naš program izvršava ispravno, zatim ulaskom
simbolom "G", osiguraćemo izvršenje programa do kraja bez tačaka
prekidi.

U ovom primjeru razmatrana je datoteka tipa .EXE, a samim tim i for
povrat kontrole u DOS sistem nismo mogli koristiti prekid
INT 20H. Umjesto toga, program je gurnuo stanje registra u stog.
DS i vrijednost 0. Kontrola se na kraju vraća nazad u DOS sistem
glavni program koristeći povratnu naredbu tipa FAR. Program
DEBUG prepoznaje ovo i bilježi stanje mašine na kraju
programa koji se testira. Ako je to bila .EXE datoteka, onda
prekid INT 20H bi na sličan način vratio kontrolu
program DEBUG. Sada, nakon što sam proveo dovoljno vremena na ovom primjeru,
možemo izaći iz DEBUG programa i vratiti se u DOS sistem sa
koristeći naredbu za završetak Q.

Koristeći prečicu postavljenu na radnu površinu, kliknite desnim tasterom miša na nju i izaberite "Svojstva" iz iskačućeg kontekstnog menija. Na kartici "Prečica" u prozoru koji će se otvoriti kao rezultat ove radnje, kliknite na polje "Objekat". Zatim pritisnite taster End da pomerite kursor na sam kraj reda, unesite razmak i otkucajte željeni taster (-debug). Nakon toga, kliknite na dugme "OK" da sačuvate prečicu sa napravljenim promenama i pokrenete igra na uobičajen način - dvostrukim klikom na ovu ikonu.

Otvorite glavni meni na dugmetu "Start" i izaberite stavku "Pokreni" - na taj način ćete otvoriti standardni prozor za pokretanje programa. Ova radnja odgovara pritiskanju prečice na tastaturi Win + R - možete je i koristiti. Zatim u prozor koji se otvori unesite punu putanju do izvršne datoteke programa. Nije potrebno da ga kucate ručno, možete kliknuti na dugme "Pretraži" i pronaći izvršni fajl igre na disku vašeg računara. Nakon toga dodajte prekidač -debug odvojen razmakom i kliknite na dugme "OK". Sljedeći put kada počnete koristiti ovaj dijalog, nećete morati ponovo upisivati ​​putanju i ključ nije potreban - uneseni niz će biti sačuvan u padajućoj listi, odakle ga možete odabrati.

Kreirajte tekstualnu datoteku bilo gdje na vašem računaru. To možete učiniti na radnoj površini - kliknite desnim tasterom miša na sliku u pozadini, otvorite odeljak Novo u iskačućem kontekstualnom meniju i izaberite Tekstualni dokument. Unesite u prvi red dokumenta punu putanju do izvršne datoteke igre - možete je kopirati u prečicu programa ili u adresnoj traci Explorera. Dodajte -debug prekidač odvojen razmakom i sačuvajte dokument sa ekstenzijom bat. Trči igra morate dvaput kliknuti na ovu datoteku.

Ne mogu sve stare igre i programi raditi na novijim operativnim sistemima i na visokim rezolucijama ekrana. Na Windows-u možete podesiti postavke kompatibilnosti i aplikacija će se pokrenuti. U nastavku pročitajte kako to učiniti.

Instrukcije

Desni klik na prečicu igre. U padajućem izborniku odaberite "Svojstva".

U prozoru koji se otvori idite na karticu "Kompatibilnost".

Kliknite na "OK".

Povezani video zapisi

Programi za varanje su izmišljeni da bi se pojednostavila kompjuterska igrica. Uz pomoć cheat kodova, možete dobiti dodatne bonuse i sposobnosti za svog kompjuterskog heroja.

Trebaće ti

  • - program "CheMax";

Instrukcije

Cheats for igrice Kozaci
U strategiji "Kozaci", meni za unos cheat kodova otvara se kada pritisnete tipku "Enter"
supervizor - uključivanje/isključivanje borbene magle
novac - dopuna
multitvar - pristup svim vojnicima
Bogovi - pomoć od bogova
AI - sposobnost kontrole neprijatelja
resursi - napuniti sve resurse
štit - super oružje

Cheats for igrice Sims 3
Da unesete kodove u igrici Sims 3, pritisnite prečicu na tastaturi CTRL + SHIFT + C. Ako se ne otvori, minimizirajte igru ​​i provjerite da li je drugi program otvoren kada pritisnete ove tipke. Zatvorite ga i proširite igru. Ponovo pritisnite tipke.
Za korisnike Viste: Koristite tastere Ctrl + Windows + Shift + C.
Neki kodovi za Sims 3:
Kaching - Dodaje §1.000 u porodičnu kasicu
Motherlode - Dodaje §50,000 Simoleona u porodični budžet
Familyfunds - Omogućava vam da postavite budžet.

Cheats for igrice Counter-Strike 1.6
Ovo je jedna od najpopularnijih igara. Za ovu kompjutersku igricu hakeri su smislili mnogo programa za varanje. Preuzmite BadBoy v 5.2. Ovo je univerzalna varalica koja uključuje sve prethodne verzije. Instalirajte program u root folder cstrike. Pokrenite igru ​​i pritisnite tipku "Insert". Otvoriće se meni ovog programa. Koristite tipke “Page Up” i “Page down” za odabir željenih postavki i reprodukciju. Ova prevara vam omogućava da vidite kroz zidove, brzo trčite, precizno pucate. Ali ovaj program je blokiran na mrežnim serverima.

Cheats for igrice Kamiondžije 2
Tokom igrice pritisnite taster "Pauza / Pauza" na tastaturi i unesite šifru koja vam je potrebna.
SLFILLUP - dobićete pun rezervoar goriva.
SLRECOVER - službi spašavanja bez trošenja novca.
SLREPAIR - besplatna popravka automobila.

Povezani video zapisi

Bilješka

Za ove cheat kodove možete dobiti zabranu na mrežnim serverima

Tekstualne igre su jedan od omiljenih načina provođenja slobodnog vremena među mladima koji vole igre uloga. Uostalom, da biste igrali kao svoj omiljeni lik, ne morate pripremiti odijelo i otići u šumu. Igraj forum igra možete biti kod kuće, na poslu ili u pauzama između parova, općenito, kada vam to odgovara.

Instrukcije

Dakle, odlučili ste da kreirate sopstveni tekst igra i uskoro ćete postati administrator vašeg svijeta igranja uloga. Za početak, bilo bi lijepo da sebi nađete jednog ili dva pomoćnika, jer posla ima dovoljno.

Ako želite da uradite igra u svom izvornom svijetu, morate pažljivo razmisliti i oslikati strukturu svijeta, njegova pravila, kulturu i vrijednosti. Ako radite testnu ulogu, ili - pažljivo proučite onu koju ste odabrali. Kao administrator, trebalo bi da znate sve - sposobnosti likova koji će igrati, čarolije koje se koriste.

Napišite radnju igre. Na primjer, možete odabrati jednu od knjiga ili neki drugi svijetli događaj koji vam se sviđa. U zapletu, pored opštih informacija sadržanih u primarnom izvoru, morate navesti šta oni rade u ovom trenutku, koji su ciljevi suprotstavljenih strana, šta junaci planiraju da poduzmu kako bi rešili sukob.

Sastavite pravila foruma i obrazac upitnika. Pravila raznih tekstualnih igara su vrlo slična, možete ih pogledati na bilo kojem forumu igara i, uzimajući ih kao osnovu, napisati svoja. Pri tome je potrebno napraviti listu pitanja na koja moraju odgovoriti igrači koji se prijavljuju za ulogu lika. Obično u prijavnici napišu ime, rasu i godine lika, opisuju izgled, karakter i vještine. Najbolje je da popunjavanje postavite uz upitnik.

Kada je tekstualni dio spreman, možete kreirati na kojem će se igra odvijati. Postoji nekoliko besplatnih servera na Internetu (na primjer, ploča). Ako znate kako pisati web stranice, možete kreirati jedinstveni dizajn s vlastitom shemom boja, logotipom i dugmadima. Ako ne, nemojte se obeshrabriti, možete odabrati standardni predložak. Na kraju krajeva, dizajn foruma nije glavna stvar.

Podijelite forum na sekcije i objavite informacije. Ne bacajte sve zajedno, ostavite jedan odjeljak za tehničke informacije o igrici - radnju, pravila, listu potrebnih likova. Neka se upitnici razmotre u drugom dijelu. Podijelite svoj svijet na nekoliko lokacija i kreirajte posebnu temu za svaku od njih. Obavezno kreirajte temu za razgovor kako igrači ne bi razgovarali o životu dok igraju. U ovom trenutku, vaša tekstualna igra je spremna da primi posjetitelje.

Povezani video zapisi

Pun do fajl je potrebno, po pravilu, da se prosledi kao parametar nekom programu za rukovanje. Najčešće se ovaj zadatak javlja prilikom programiranja nekih procesa, ali ponekad je potrebno samo provjeriti lokaciju objekta s putanjom navedenom u uputama. Ovaj parametar sadrži nabrajanje svih direktorija, počevši od korijenskog direktorija, koje trebate otvarati uzastopno da biste došli do željene datoteke.

Trebaće ti

  • Windows OS.

Instrukcije

Koristite "Explorer" ako trebate pronaći kompletan put To fajl u Windows operativnom sistemu. Otvorite program pomoću "vrućih tastera" Win + E ili odabirom stavke "Računar" u glavnom meniju, koja se poziva klikom na dugme "Start". Ako znate nešto o lokaciji željenog objekta, navigirajte stablom direktorija što je bliže moguće - to će suziti raspon pretraživanja, a time i vrijeme za ovu proceduru.

U polje desno od adresne trake upravitelja datoteka unesite naziv datoteke i pričekajte dok program pregleda sve poddirektorije i pronađe objekte čija imena sadrže nešto slično. Pun putće biti postavljeno u kolonu "Putanja do foldera" tabele sa rezultatima pretrage. Nema potrebe da ga prepisujete ručno - kliknite desnim tasterom miša na ovu liniju, u iskačućem kontekstualnom meniju izaberite red "Svojstva" i kopirajte sadržaj polja "Lokacija" prozora koji se otvori.

Ako ste iz bilo kojeg razloga prisiljeni koristiti sučelje komandne linije, koristite naredbu DOS where. Potrebno ga je postaviti na parametar R da bi pretraga datoteka bila rekurzivna, odnosno da bi se pogledale sve podmape. Osim toga, obavezno navedite ime željene datoteke, a opcioni parametar može biti dio putanje do njega koji vam je poznat. Ova naredba također vrši pretragu, tako da ćete specificiranjem barem dijela putanje smanjiti vrijeme provedeno na njemu. Na primjer, ako trebate dobiti punu put To fajl sa imenom RM.csv, za koji znamo samo da se nalazi na disku F, naredbu treba napisati ovako: gdje / R f: RM.csv

Nakon što unesete komandu i njene parametre, pritisnite Enter i na kraju pretrage naći ćete kompletnu put na sledećem redu interfejsa. Nažalost, ovdje ne možete odabrati i kopirati samo ovaj red, pa kliknite desnim tasterom miša bilo gdje u prozoru, odaberite naredbu "Odaberi sve" iz izbornika, a zatim pritisnite Enter. Na taj način ćete u međuspremnik postaviti sav sadržaj interfejsa komandne linije, koji se može očistiti od nepotrebnih redova u bilo kom uređivaču teksta.

Otklanjanje grešaka je važan dio procesa razvoja softvera. Za aplikativne programe, to se radi u alatima korisničkog načina rada i često je ugrađeno u IDE. Ali da biste mogli otkloniti greške, na primjer, drajvere, morate pokrenuti debugger jezgra.

Trebaće ti

  • - administratorska prava na ciljnoj mašini.

Instrukcije

Pokrenite komandni procesor cmd. Kliknite na dugme "Start" na traci zadataka. Kliknite na stavku "Pokreni ..." u meniju koji se pojavi. U dijaloškom okviru Pokreni program unesite cmd i kliknite na OK.

Napravite rezervnu kopiju datoteke boot.ini. Saznajte instalacijsku putanju trenutne kopije Windows-a pomoću naredbe: echo% SystemRoot% Idite na disk jedinicu na kojoj je instaliran operativni sistem tako što ćete uneti slovo uređaja praćeno dvotačkom. Promijenite njegov korijenski direktorij pomoću naredbe cd. Uklonite sistemske, samo za čitanje i skrivene atribute iz datoteke boot.ini koristeći naredbu attrib, napravite sigurnosnu kopiju naredbom copy i ponovo postavite atribute: attrib -h -s -r boot.inicopy boot.ini boot ini.oldattrib + h + s + r boot.ini

Prikažite trenutnu listu opcija preuzimanja. Koristite naredbu: bootcfg / query Pomičite se kroz stavke na listi i odredite koja će se koristiti za kreiranje nove konfiguracije sa mogućnošću otklanjanja grešaka u jezgra... Zapamtite ID evidencije pokretanja.

Kreirajte novi zapis za pokretanje tako što ćete pokrenuti naredbu bootcfg sa opcijom / copy. Koristite parametar / id da navedete id unosa koji se kopira. Koristite parametar /d da odredite naziv za prikaz za unos. Na primjer: bootcfg / copy / id 1 / d "Win XP (Debug)" Ponovo navedite opcije pokretanja koristeći komandu bootcfg sa parametrom / query i saznajte ID dodanog unosa.

Omogućite opcije za pokretanje debugger a jezgra na zapis za pokretanje kreiran u prethodnom koraku. Ako će se otklanjanje grešaka vršiti na ciljnoj mašini, samo dodajte opciju /debug. Na primjer: bootcfg / debug on / id 2 Ako planirate daljinsko otklanjanje grešaka sa povezivanjem ciljnog računara na host mašinu preko com porta, dodatno koristite opcije / port / baud da odredite broj porta i brzinu prenosa, respektivno: bootcfg / debug on / port COM2 / baud 9600 / id 2 Ako će se daljinsko otklanjanje grešaka vršiti pomoću IEEE 1394 interfejsa (FireWire kabl), koristite opciju / dbg1394 da omogućite odgovarajući režim i / ch opciju da odredite broj kanala, za primjer: bootcfg / dbg1394 on / ch 42 / id 2 Pregledajte zapise o pokretanju koristeći komandu bootcfg sa / query parametrom i provjerite da li su promjene napravljene. Zatvorite prozor ljuske pokretanjem naredbe za izlaz.

DEBUG . EXE - poseban sistemski program za unos i postupno izvršavanje programa napisanih mašinskim jezikom ili korišćenjem asemblerskih instrukcija.

Pritisnite dugme da pokrenete ovaj program. Počni, onda Izvrši, unesite Otklanjanje grešaka i pritisnite unos, kao rezultat toga, program se mora učitati s diska u memoriju.

Nakon što je preuzimanje završeno, na ekranu se pojavljuje prompt u obliku crtice, koji pokazuje da je Debug spreman da prihvati komande.

Najčešće korišteni instrukcije Otklanjanje grešaka :

1. Q- izlaz iz programa.

2. ? - traženje pomoći.

3. H(Heksaritmetika) - Heksadecimalna aritmetika. Ako nakon znaka H upišemo 2 broja (svaki ne više od 4 cifre) razdvojena razmakom, onda ćemo dobiti zbir i razliku biranih brojeva:

4. R [<имя регистра>] - rad sa registrima (od riječi Register). Instrukcija "R" bez parametra vam omogućava da vidite sadržaj svih registara, kao i vrijednost zastavica i naredbe koja se nalazi na ofsetu 0100 u segmentu koda. Obično se prva komanda programa nalazi na ofsetu 0100.

Pomoću ovog uputstva možete unijeti novu vrijednost u jedan registar. Da biste to učinili, nakon naredbe unesite naziv registra:

Kao što vidite, pri prvom pregledu registara komandom r, registar AX je bio 0, zatim je promijenjen sadržaj registra.

5. U[<сегментный регистр>:]<начальный адрес>, <конечный адрес>- pregled memorijskih ćelija, počevši od specificiranog pomaka u segmentu specificiranom registrom segmenta. Naredba U (Unassemble) rastavlja komande koje se nalaze u memoriji na datoj adresi.

Na primjer, u sljedećem primjeru gledamo komande koje se nalaze u CS registru, počevši od adrese 100 do adrese 102.

6.E [<сегментный регистр>:]<смещение>- snimanje informacija u ćelije operativne memorije.

Kao što je pomenuto, pomoću Debug-a možete unositi komande i na mašinskom i na asemblerskom jeziku. Instrukcija Debug E (Enter) se koristi za unos komande na mašinskom jeziku ... Ovdje se Debug koristi kao interpreter za direktan rad sa mikroprocesorom. Možete postaviti mašinske instrukcije, zapisati ih na određeno mjesto u RAM-u, obično počevši od 0100 pomaka u odnosu na početak segmenta koda. Zatim izvršite korak po korak (jednu naredbu istovremeno) ili cijeli program odjednom.

Budući da mikroprocesor razumije samo binarne brojeve (mogu se pisati u heksadecimalnom, skraćeno), kodovi mašinskih instrukcija se pišu u obliku heksadecimalnih brojeva, a komande su jedno-, dvo-, trobajtne itd.

Na primjer, komanda za dodavanje vrijednosti iz AX i BX registara je dvobajtna i ima mašinski kod 01D8.

Uputstvo „E<смещение>”Tokom operacije ispisuje u sljedećem redu nakon svog unosa adresu koja se sastoji od dva broja i stare vrijednosti bajta na ovoj adresi:<содержимое CS>:<смещение><значение байта>, zatim računar čeka da se unese nova vrijednost bajta.

Da biste unijeli, na primjer, dvobajtnu mašinsku instrukciju 01D8, potrebno je da upišete 01 u segment koda na pomaku 100, a D8 na pomaku 101:

7.T(iz Tracing) - pokretanje programa koji se nalazi u RAM-u na adresi 0100 u načinu rada korak po korak. Da biste pozvali program na izvršenje, prvo morate voditi računa da se broj 0100 nalazi u IP registru (brojača komandi).

8.A<смещение> – unos komande asemblera (iz Assemble). Prvu komandu programa treba uneti na ofsetu 0100. Zatim sistem čeka na alternativni unos asemblerskih komandi. Da biste dovršili unos, pritisnite Enter nakon praznog reda.

Primjer... Hajde da uvedemo asemblerski program u RAM koji sabira dva broja. Postavimo početnu adresu na sljedeći način: A 0100.

Debager će prikazati vrijednost adrese segmenta koda i pomaka u obliku xxxx: 0100. Sada možete unijeti svaku naredbu, završavajući tipkom Enter.

Prije izvršavanja programa, provjerite generirane mašinske kodove pomoću naredbe U. Morate reći debugeru adrese prve i posljednje komande koje želite vidjeti, u ovom slučaju 0100 i 0106. Unesite: U 100, 106

Kao što vidite, mašinski kodovi su generisani ispravno.

Koristeći naredbu R, prikazujemo sadržaj registara i prvu naredbu našeg programa:

Koristeći T komande, izvršavamo sve naredbe programa u nizu:

Ovako se unose i prate programi asemblerskog jezika.

Hajde da istražimo ostale komande za otklanjanje grešaka i vratimo se na primer.

9. G(sa Go) - pokretanje programa koji se nalazi u RAM-u na adresi 0100. Da biste pozvali program na izvršenje, prvo morate voditi računa da se broj 0100 nalazi u IP registru (brojaču komandi).

10. N<имя.com-файла>- postavlja ime programa (Name) za njegovo naknadno upisivanje na disk ili čitanje sa diska. Prije pisanja, prvo morate upisati 0 u registar BX, a veličinu programa (u bajtovima) u registar CX.

11. W(od Write) - pisanje programa na disk. Nakon izvršenja “W” instrukcije, datoteka sa ekstenzijom .COM će se pojaviti na disku u trenutnom direktoriju - tačna kopija programa.

programa sa diska u RAM. Naziv programa je unaprijed postavljen naredbom N.

Vratimo se na primjer sa sabiranjem dva broja. Da biste zapisali ovaj program na disk, trebate učiniti tri stvari:

1. dati ime programu;

2. navesti dužinu programa;

3. izvršiti snimanje.

1. Imenujmo budući fajl koristeći N komandu.

2. Program se sastoji od četiri dvobajtne instrukcije, zauzima adrese sa pomacima od 0100 do 0106, što znači da mu je dužina 8 bajtova. Veličina programa za otklanjanje grešaka pohranjena je u par registara. U našem slučaju, vrijednost dužine stane u jedan registar, tako da jednostavno nulimo gornji registar para: BX = 0, CX = 8.

3. Za pisanje programa na disk koristite W.


BILJEŠKA
Slike nisu prikazane na ovoj stranici, ali ih možete pronaći u knjizi.


Da bismo napisali program koji već poznajemo koristeći Debug, uradićemo sledeće (pretpostavlja se da ste već pokrenuli Debug i da ste videli crni ekran sa malom crticom koja treperi u gornjem levom uglu).

Hajde da unesemo slovo "a" (podsećam vas poslednji put - sve komande se unose na engleskom) i pritisnite ENTER.

Zatim ulazimo u program pritiskom na ENTER na kraju svakog reda:

0B72: 0100 MOV AH, 02 0B72: 0102 MOV DL, 41 0B72: 0104 INT 21 0B72: 0106 INT 20 0B72: 0108 Rezultat će biti nešto poput onog prikazanog na sl. 1.6.

NAPOMENA 1
Imajte na umu da su sve numeričke vrijednosti napisane bez slova h na kraju. To je zato što Debug radi samo sa heksadecimalnim brojevima i ne mora se objašnjavati u koji sistem numeracije se unose podaci.

NAPOMENA 2
Nakon unosa naredbe -a pojavljuju se znakovi: 0B72: 0100. U vašem slučaju, prva četiri znaka mogu biti različita, ali nas još uvijek ne zanimaju. Šta mislite da znači broj 0100? Sjećate li se direktive ORG 100h (pogledajte odjeljak)? Otprilike - ovo je adresa sa koje program počinje. Odnosno, prva komanda programa (za COM fajlove) se unosi u memoriju sa ovom adresom. Svaka komanda zauzima 2 bajta, tako da će sljedeća adresa biti 0102, itd.

Već poznajemo same naredbe (pogledajte odjeljak), tako da ih ovdje nećemo opisivati.

Program je napisan - potrebno je provjeriti njegov rad. Pritisnite ENTER ponovo tako da se na ekranu pojavi crtica, koja označava da možete uneti komandu za Debug. Zatim unosimo naredbu g (od engleskog "GO") i pritisnemo tipku ENTER. Na ekranu ćemo vidjeti sljedeće:

G A Program se normalno završio - Ovdje je A isto slovo koje je prikazano na ekranu kao rezultat rada programa. Zatim se pojavljuje poruka o normalnom završetku programa (može se razlikovati ovisno o verziji Debug-a).

A sada, ako vas zanima, možete provjeriti program korak po korak, odnosno gledati kako se komande izvršavaju jedna za drugom. Da biste to učinili, morat ćete ponovo upisati tekst programa (ne zaboravite prvo unijeti naredbu a), a zatim:

Unesite komandu t i pritisnite tipku ENTER. Vidjet ćemo nešto ovako:

AX = 0200 BX = 0000 CX = 0000 DX = 0000 SP = FFEE BP = 0000 SI = 0000 DI = 0000 DS = 0B72 ES = 0B72 SS = 0B72 NA CS = 0B72 NA CS = 0B72 N IP = 0B72 IP = 0 B72 IP = 0 B241 MOV DL, 41 Ovo nije ništa drugo do stanje registara procesora nakon što se prvi red programa izvrši. Kao što vidite, u registar AH upisan je broj 02. Donji red sadrži adresu naredbe i samu naredbu koja će se sljedeće izvršiti.

AX = 0200 BX = 0000 CX = 0000 DX = 0041 SP = FFEE BP = 0000 SI = 0000 DI = 0000 DS = 0B72 ES = 0B72 SS = 0B72 NA CS = 0B72 NA CS = 0B72 N PL = 0 B74 IP = 0 CD21 INT 21 MOV DL, 41 instrukcija je, kako se očekivalo, zapisala broj 41 u DL registar.

Ponovo unesite komandu t i pritisnite tipku ENTER. Vidjet ćemo sljedeće:

AX = 0200 BX = 0000 CX = 0000 DX = 0041 SP = FFE8 BP = 0000 SI = 0000 DI = 0000 DS = 0B72 ES = 0B72 SS = 0B72 CS = 0347 CS = 0347 NAUP7 0347 IP = 0347 IP = 0347 IP 80FC4B CMP AH, 4B Timovi CMP AH, 4B nisu u našem programu. Naš program je završio svoj rad. Naredbu t možemo unositi dugo vremena - dobićemo stanja registara. Zašto se to dešava, nama još nije zanimljivo. Bolje je uneti komandu g i pritisnuti tipku ENTER, ovo će konačno izvršiti naš program i vidjeti šta smo već vidjeli.

Program je napisan i testiran. Ali kako to učiniti samostalnim, odnosno kako kreirati COM fajl? Na kraju krajeva, ono što smo uradili radi samo sa Debug-om. Da biste kreirali izvršnu datoteku, morate odgovoriti na nekoliko pitanja:

  1. Koliki će biti naš fajl? Izvršenje programa počinje u 0100h, a posljednji red u programu sadrži 0108h. To znači da će veličina datoteke biti 8 bajtova (108h - 100h = 8).
  2. Kako da imenujemo naš fajl? Ali barem kako. Međutim, preporučljivo je da fajlovima date engleska imena koja ne sadrže više od 8 karaktera (DOS je prijatniji za rad na ovaj način). Pozovimo na primjer debug_1.com
Sada uradimo sljedeće:
  1. Napišimo ponovo naš program (vlak, vlak...).
  2. Zapišimo veličinu datoteke u CX registar. Da biste to uradili, unesite komandu r cx i pritisnite ENTER. Zatim unesite veličinu datoteke (8 bajtova) i pritisnite ENTER.
  3. Upisujemo naredbu n, zatim jedan razmak i naziv datoteke. Pritisnite ENTER.
  4. Na kraju, unesite komandu w i pritisnite ENTER.
Kao rezultat svih ovih radnji, na ekranu će se pojaviti sljedeće informacije (pogledajte i sliku 1.7): -r cx CX 0000: 8 -n debug_1.com -w Write: 00008 bajtova - Ako radite u DOS emulaciji modu ispod WINDOWS-a, tada će datoteka debug_1.com biti sačuvana na radnoj površini ili u folderu trenutnog korisnika. Zavisi od verzije i/ili postavki WINDOWS-a. Sada se može pokrenuti kao normalan program. Ako niste pronašli ovu datoteku u navedenim mapama, pronađite je kroz pretragu datoteka. Pa, ako ne znate kako to učiniti, pogledajte knjigu Computer for Dummies.

Osećam da smo već umorni. Debug se napušta komandom q.

Nakon što smo stekli snagu i strpljenje, proučimo još jednu opciju za debagovanje - disassembler. Uz njegovu pomoć možete rastaviti bilo koju COM datoteku (to jest, izvršiti suprotnu radnju asemblera - pretvoriti izvršnu datoteku u izvorni kod na asemblerskom jeziku). Recimo da imate program koji niste vi napisali - ne znate njegov izvorni kod, ali zaista želite da ga vidite. Za to služi rastavljač.

Dakle, program za otklanjanje grešaka je zatvoren za nas. U komandnu liniju upisujemo:

Debug debug_1.com (gdje je debug_1.com naziv datoteke koju želimo rastaviti) i pritisnite ENTER.

BILJEŠKA
Ako se program ne pokrene, tada morate navesti punu putanju do njega, na primjer

C: \ WINDOWS \ COMMAND \ debug debug_1.com Ako je program pokrenut, ali je dao grešku (na primjer: Greška 1282 ili "Datoteka nije pronađena"), tada morate navesti punu putanju do datoteke, na primjer: C : \ WINDOWS \ COMMAND \ debug C: \ MYPROG \ debug_1.com Ako ovo nije pomoglo, onda ste možda ipak napravili grešku negdje na putanji ili putanja nije u skladu sa zahtjevima DOS-a. U ovom slučaju, bolje je program postaviti u korijen C pogona, odakle se garantuje učitavanje duž putanje "C: \ debug_1.com".

Ako se otklanjanje grešaka pokrene bez poruka o grešci, unesite komandu u i pritisnite ENTER. Evo šta vidimo (približno, pogledajte i sliku 1.8):

U 0BC6: 0100 B402 MOV AH, 02 0BC6: 0102 B241 MOV DL, 41 0BC6: 0104 CD21 INT 21 0BC6: 0106 CD20 INT 20 0BC6: 0108 56 MOV DL, 41 0BC6: 0104 CD21 INT 21 0BC6: 0106 CD20 INT 20 0BC6: 0108 56 PUSH 0BC06: PUBC06 PUSH01 0BC06 010C 0AC0 ILI AL, AL 0BC6: 010E 741A JZ 012A 0BC6: 0110 3C3A CMP AL, 3A 0BC6: 0112 750D JNZ 0121 0BC6: 0114 2E CS: 0BC6: 0115 807C0100 CMP BYTE PTR, 00 0BC6: 0119 0121 7506 JNBC 2E CS: 0BC6: 011C C60400 MOV BYTE PTR, 00 0BC6: 011F EB09 JMP 012A - Pogledajte prva četiri reda. Da li prepoznajete? Ovo je naš program. Ostali redovi nas ne zanimaju (ovo su instrukcije preostale od programa ili podataka koji su radili prije pokretanja Debug-a). Pa, ako razmatramo nepoznatu datoteku, kako da znamo gdje se program završava, a gdje počinje "smeće"? To se otprilike može postići veličinom datoteke (za vrlo male programe). Veličina se može vidjeti u svojstvima datoteke. Samo imajte na umu da je u svojstvima datoteke veličina data u decimalnom obliku, a Debug nam daje heksadecimalne adrese. Stoga ćete morati pretvoriti decimalni broj u heksadecimalni.

Postoji još jedna opcija (koja takođe nije uvijek prihvatljiva) - pronaći u rezultirajućoj listi red koji sadrži naredbu za izlaz iz programa (INT 20).

Ako je program velik, onda lista njegovih komandi neće stati na ekran. Zatim ponovo unosimo komandu u i pritisnemo ENTER. I tako do kraja programa.

Možda nećete vidjeti svoj program na ekranu. To može biti ili zbog činjenice da se program iz nekog razloga nije učitao ili zbog nepodudaranja adresa. Budite oprezni: obratite pažnju na memorijske adrese prikazane u lijevoj koloni. Naš program počinje od adrese 0100. Ako je adresa drugačija, onda ovo, prema tome, nije naš program.

DEBUG debugger je dizajniran za širok spektar zadataka. To uključuje, na primjer, sljedeće zadatke: proučavanje trenutnog sadržaja RAM-a; rastavljanje .COM i .EXE fajlova, razvoj i debagovanje sopstvenih programa na asemblerskom jeziku; proučavanje rada programa i njihove izmjene; testiranje periferne opreme za rad sa I/O portovima direktno (u dijalog modu); proučavanje komandnog sistema procesora, BIOS i MS-DOS prekida.

Postoje dva načina za pokretanje debuggera:

debug (Enter) ili debug filename (Enter)

Nakon pokretanja, debuger se učitava u RAM, a sadržaj CS, DS, ES, SS segmentnih registara se učitava u prvi slobodni pasus odmah nakon samog debugera. IP registar je postavljen na 100.

DEBUG debugger ima poseban pokazivač adrese podataka koji se po defaultu koristi u mnogim naredbama za otklanjanje grešaka.

Nakon pokretanja programa za otklanjanje grešaka, na lijevoj strani ekrana pojavljuje se linija [-] koja pokazuje da debugger čeka naredbu. Sve brojeve tumači debugger u heksadecimalnom zapisu.

DEBUG COMMANDS

A je komanda za sklapanje. Ova komanda vam omogućava da unosite programe koristeći komandne mnemoničke kodove u RAM-u. Unos komande za otklanjanje grešaka

A<число>(Enter)

prisiljava ga da se prebaci na način primanja komandi sa tastature i njihovog uzastopnog postavljanja, počevši od adrese jednake onoj navedenoj u komandi. Dvije popularne asemblerske instrukcije DB i DW mogu se koristiti kao ulaz. Na primjer:

DB 1,2,3, "PRIMER"

DW 1000,2000, ”FFFF”

Debager podržava mnemoniku svih procesorskih instrukcija, kao i 80X87 koprocesor. Prilikom sastavljanja naredbi JMP i CALL, po defaultu, ako je moguće, SHORT je varijanta ovih naredbi. Ali možete specificirati NEAR ili FAR prije adrese prijelaza, što će dovesti do generiranja odgovarajućih naredbi. Mnemonika RET naredbe koja odgovara dalekom CALL FAR je RETF. Moguće je, au sumnjivim slučajevima, koristiti pokazivače WORD PTR ili BYTE PTR. Prilikom ulaska u program dozvoljeno je ispisivanje prefiksa CS :, ES :, SS: ispred komande u istom redu.

Primjer. Program će ispuniti ekran simbolom “!”.

Unesite A 200 (Enter), a zatim uđite u program

Na kraju programa, postoji INT 20 instrukcija koja vraća kontrolu nazad monitoru komandi za otklanjanje grešaka. Pokrenite ovaj program naredbom

S - poređenje. Ova komanda uspoređuje dva memorijska područja bajt po bajt i ispisuje sve razlike između njih u obrascu

<адрес> <содержимое> <содержимое> <адрес>

U ovom unosu, informacije o prvom memorijskom području su date na lijevoj strani, a informacije o drugom na desnoj strani.

Primjer. Uporedite dva bloka memorije od 256 bajta. Prvi počinje sa 100, drugi sa 300.

Da biste to učinili, trebate birati

S 100L100 300 (Enter)

Ova komanda može biti korisna, na primjer, kada se provjerava identitet dvije diskete. Da bismo to učinili, odgovarajući blokovi ovih disketa od interesa za nas se učitavaju u susjedna memorijska područja, koja se zatim analiziraju pomoću C naredbe.

D - dump memorije. Ova komanda daje na displeju ispis određene oblasti RAM-a, predstavljene u heksadecimalnoj notaciji, a sa desne strane daje njihov simbolički prikaz. Štaviše, kombinacije kodova koje nemaju simbolički prikaz u ASCII standardu su prikazane tačkama. Linija prikazuje šesnaest bajtova. U ovom slučaju, puna adresa krajnjeg lijevog bajta je naznačena na desnoj strani. Dakle, jedna linija sadrži hex dump, kao i ASCII dump od šesnaest bajtova RAM-a. Ako je komanda D data bez parametara, tada se na ekranu u osam redova prikazuje ukupno 128 bajtova (80H). Svaki red sadrži znak „-“ koji dijeli 16 bajtova na pola: između osmog i devetog bajta.

Primjer. Pogledajte pokazivače vektora za prva trideset i dva prekida (20H).

Morate unijeti naredbu

D 0: 0.7F (Enter)

E - komanda za promjenu sadržaja bajtova. Ova komanda vam omogućava da skenirate sadržaj memorije naprijed i nazad po bajtovima i, ako je potrebno, promijenite sadržaj skeniranih bajtova.

Unos komande:

E<адрес>(Enter)

uzrokuje da se program za otklanjanje grešaka prebaci u mod za uređivanje pojedinačnih bajtova. Ovo ispisuje sadržaj trenutnog bajta u heksadecimalu nakon čega slijedi tačka. Nakon toga, možete upisati vrijednost novog sadržaja bajta, ali također možete ostaviti sadržaj bajta istim bez unosa bilo čega. Zatim morate upisati jedan od tri kontrolna znaka:

a) "razmak", što znači prelazak na uređivanje sljedećeg bajta;

b) “Enter”. Ovo će izaći iz režima za uređivanje bajtova u program za otklanjanje grešaka na nivou komande;

v) "-". Pritiskom na ovaj znak skočit ćete na prethodno uređivanje bajta.

Primjer. Promijenite vrijednost brojača sistemskog sata.

Hajde da unesemo komandu

i otkucajte četiri broja 70 70 70 70, razdvojena razmacima, zatim znak za povratni znak 0D. Zatim morate izaći iz programa za otklanjanje grešaka i izvršiti naredbu za vrijeme operativnog sistema.

F - naredba popunjavanja. Ova komanda vam omogućava da popunite sadržaj specificiranog opsega RAM-a sa ponavljajućim nizom bajtova sa specificiranim i vrijednostima. Konkretno, kada se lanac sastoji od jednog bajta, ova komanda vam omogućava da nulirate potrebnu memorijsku oblast kada je bajt jednak nuli, kao i da stavite jedan u sve bitove, popunjavajući ga bajtom jednakim FF.

Naredba ima sljedeću sintaksu:

F<диапазон_памяти> <цепочка байтов>(Enter)

Primjer. Popunite memorijsku oblast počevši od DS: 0100 nulama za ukupno 16384 bajtova (4000 16).

F 100L4000 00 (Enter)

Provjerite sa komandom

D 100L4000 (Enter)

G - naredba za pokretanje programskog programa. Ova komanda je dizajnirana da pokrene program za izvršenje. U tom slučaju, ako se memorijska oblast u kojoj su pohranjeni podaci prebace kontrola kao program, računar se „zamrzne“ i treba ga ponovo pokrenuti. U slučaju kada program sadrži ozbiljne greške (na primjer, ne postoji INT 20 izraz za povratak na nivo komande za otklanjanje grešaka), pokušaj njegovog izvršenja pomoću G naredbe takođe uzrokuje zamrzavanje računara.

Ovaj operator se obično koristi u jednom od sljedeća četiri oblika:

Izvršenje ovog operatora svodi se na prenos kontrole na CS: IP adresu. CS i IP vrijednosti se mogu pronaći upisivanjem naredbe R (Enter) za ispis svih registara procesora;

b) G =<адрес>(Enter)

Ovo pokreće program na navedenoj adresi.

c) G<адрес>(Enter)

U ovom slučaju, program počinje sa CS: IP adrese, a kada operater dođe do navedene adrese, BREAK zaustavlja izvršavanje programa. Uobičajena početnička greška je izostavljanje znaka jednakosti kada se koristi naredba G. U ovom slučaju, navedena adresa se uzima kao tačka prekida, a ako je CS: IP ukazao, na primjer, na područje podataka, računar će se zamrznuti.

d) G =<адрес> <другой_адрес>(Enter)

u ovom slučaju, program se pokreće sa adrese navedene iza znaka “=” i ako program dođe do komande sa vrijednošću adrese specificirane drugom (drugom adresom), zaustavlja se. Ovaj način zaustavljanja programa naziva se uvođenje tačke prekida. Kada se specificira tačka prekida, odgovarajući bajt komande na ovoj adresi se zamenjuje sa INT 3, koji je veličine 1 bajt. Kada se dostigne tačka prekida, originalna vrijednost bajta se vraća.

Prvo, uđimo u program (pomoću komande A 100):

MOV, 1234

DEC BX; postavite tačku prekida ovdje

Pokrenimo program sa naredbom G = 100 109 (Enter) Program je, došavši na adresu 109, stao i dao potpuni dump registara.

H - komanda heksadecimalne aritmetike. Ova komanda vam omogućava da dobijete zbir i razliku dva heksadecimalna broja navedena u naredbi.

Kao odgovor, dobijamo 1 (zbir) i FFFF (razlika).

I - ulazna komanda sa porta. Ova komanda čita sadržaj I/O porta na navedenoj adresi tako što ga ispisuje na ekran u heksadecimalnom obliku.

Sintaksa naredbe:

I<адрес_порта>(Enter)

Pritom dobijamo sadržaj porta B sa programabilnog perifernog interfejsa 82.

L - komanda za pokretanje sa diska. Ova komanda omogućava učitavanje i logičkih sektora sa disketa i tvrdih diskova, kao i pojedinačnih datoteka. Učitavanje sektora sa diska vrši se naredbom:

L<адрес><номер_диска><начальный_сектор><число_секторов>(Enter)

Ovdje "adresa" označava početnu adresu u RAM-u, počevši od koje će sadržaj blokova-sektora biti sekvencijalno lociran. Varijabla "broj diska" označava s kojeg diska će se pokrenuti. Broj 0 znači pogon A, broj 1 znači pogon B, broj 2 znači pogon C, itd. Sljedeće dvije varijable označavaju od kojeg sektora počinje čitanje i ukupan broj očitanih sektora.

Učitajte BOOT blok sa diskete A: u RAM, počevši od adrese DS: 1000, za šta je potrebno izvršiti naredbu

L 1000 0 0 1 (Enter)

Tada se sadržaj BOOT bloka može ispisati pomoću naredbe

D 1000L200 (Enter)

i takođe rastaviti

U 1000L200 (Enter)

N<имя_файла>(Enter)

Zatim morate izvršiti naredbu L bez argumenata. Kao rezultat ovih radnji, datoteka (osim datoteka sa ekstenzijom EXE) će se učitati u RAM počevši od adrese CS:100. Ako učitani fajl ima ekstenziju EXE, debugger će učitati datoteku počevši od CS: 0 adrese. Broj pročitanih bajtova pohranjuje se u registarski par BX:CX nakon što se izvrši naredba L.

M - naredba kopiranja Ova naredba kopira sadržaj dijela glavne memorije u drugo područje glavne memorije. Sintaksa naredbe je sljedeća:

M<диапазон> <начальный_адрес>(Enter)

Ovdje se "opseg" odnosi na memorijsku oblast koju treba kopirati, a "početna_adresa" se odnosi na adresu prvog bajta iz kojeg se nalaze kopirani podaci. Ova naredba se može koristiti za privremeno spremanje sadržaja RAM-a, a zatim ga vratiti.

Prvo, pogledajmo sadržaj memorije:

D 100L100 (Enter)

Zatim čuvamo dio memorije, počevši od adrese

M 100L100 1000 (Enter)

Prebrisat ćemo originalni sadržaj

F 100L100 0 (Enter)

Provjerite nuliranje

D 100L100 (Enter)

Na kraju, vratite originalni sadržaj

M 100L100 100 (Enter)

N - komanda za određivanje imena. Ova naredba prije svega određuje ime datoteke, koja će se zatim ili pročitati sa diska pomoću naredbe L, ili upisati na disk komandom W. Sintaksa ove naredbe je sljedeća:

N<имя_файла>(Enter)

Pročitajmo datoteku AUTOEXEC.BAT sa diska u RAM. Da biste to učinili, izvršite

N C: \ AUTOEXEC.BAT (Enter)

U registarski par BX: CX, biće upisana dužina učitane datoteke u bajtovima.

O - komanda za izlaz podataka na port. Ova naredba vam omogućava da izbacite specificirani bajt na port sa navedenom adresom. Koristan je za interaktivno testiranje perifernih uređaja i kućišta na matičnoj ploči. Sintaksa naredbe:

O<адрес_порта> <величина>(Enter)

Ovdje se umjesto "port_address" zamjenjuje adresa traženog porta u rasponu 0-FFFF, a umjesto "value" - vrijednost, koja se zatim učitava u port. Ako je port 16-bitni, tada "vrijednost" može biti 4-cifreni heksadecimalni broj koji se učitava u port.

Pogonski motor A: za flopi disk se može uključiti sljedećom komandom

O 3F2 10 (Enter)

R - komanda praćenja visokog nivoa. Ova komanda, kao i T komanda, je namenjena za praćenje programa. Međutim, za razliku od T traga, ovaj trag je manje detaljan. Ne prati pomno potprograme i softverske prekide, kao ni petlje LOOP i instrukcije linije s ponavljanjem. Kao i kod T traga, nakon svake naredbe ispisuje se sadržaj svih registara i sljedeća naredba koju treba izvršiti. Sintaksa naredbe:

P =<адрес> <число_команд>(Enter)

Možete izostaviti bilo koji od dva parametra komandne linije:<адрес>i/ili<число_команд>... Parametar<адрес>specificira početnu adresu, počevši od koje će se izvršiti praćenje, i parametar<число_команд>će označiti ukupan broj naredbi koje će se izvršiti nakon pritiska na tipku (Enter). Obavezno je uneti simbol “=” prilikom navođenja adrese kako se adresa ne bi pomiješala sa brojem izvršnih naredbi. Ova vrsta P praćenja je izuzetno korisna za učenje opšte logike izvršavanja programa, eliminišući dosadno praćenje detalja. Na početnom proučavanju programa potrebno je krenuti sa R-tragom.

Hajde da uvedemo, počevši od adrese 100, sledeći program

Zatim ćemo izvršiti P-tracing. Da biste to učinili, prvo unesite naredbu P = 100 (Enter), a zatim uzastopno

Nakon toga ćemo izvršiti uobičajeno detaljno T-tracing.

Q je naredba za izlazak iz debagera. Q naredba izlazi iz debugera na sljedeći najviši nivo programa. U ovom slučaju, radni fajlovi se ne pohranjuju.

R - naredba za dump / ispravljanje registara. Ova komanda vam omogućava da vidite sadržaj svih registara odjednom, kao i zastavice, ili pregledate vrijednosti pojedinačnih registara i registara zastavica sa mogućnošću da ih promijenite.

daje ispis svih registara kao i komandu na koju ukazuje CS:IP.

R<имя_регистра>(Enter)

daje ispis sadržaja navedenog registra, a zatim ispisuje dvotočku u sljedećem redu. Nakon toga, korisnik može pritisnuti tipku (Enter) i izaći nazad na monitor komandi debagera, ili postaviti novu vrijednost registra prije pritiska tipke (Enter). U potonjem slučaju, stara vrijednost registra će biti zamijenjena novom. Moguća imena registara: AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, IP, F (zastavica registar).

Kada koristite naredbu

treba imati na umu da se kodiranje vrijednosti zastavice vrši na vrlo specifičan način. Ispod je tabela kodiranja, gdje par znakova lijevo odgovara vrijednosti 0 odgovarajuće zastavice, a desno vrijednosti jednakoj 1 (zastava je postavljena):

Prilikom izvršavanja naredbe

vrijednosti zastavice se ispisuju u niz obrnutim redoslijedom od redoslijeda u tabeli. Odmah nakon toga, na liniji se ispisuje crtica<->, debager prelazi u stanje čekanja na unos sa tastature. Ako korisnik samo pritisne tipku (Enter), vrijednosti zastavice se neće promijeniti i komande debuggera će se vratiti na monitor. Međutim, prije toga korisnik može upisati nove vrijednosti nekih zastavica prema tablici kodiranja. Redoslijed u ovom slučaju nije bitan.

S je naredba za pretraživanje. Naredba pretraživanja za uređeni skup bajtova omogućava vam da tražite određeni niz bajtova u određenom rasponu RAM-a i ima sintaksu:

S<диапазон_памяти> <цепочка_байтов>(Enter)

Odgovor se vraća kao lista adresa počevši od kojih se nalazi navedeni niz bajtova.

Pretpostavimo da želite da utvrdite da li se niz znakova "DOS" pojavljuje u prvih 32K RAM-a. Da biste to učinili, unesite naredbu

S 0: 0L8000 44 4F 53 (Enter)

T - naredba praćenja. Ova naredba omogućava izvršavanje jedne ili više naredbi u načinu praćenja, ispisujući sadržaj svih registara i mnemonike sljedeće dekodirane komande koja se izvršava. Nakon praćenja trenutne komande, IP pokazivač se pomera tako da pokazuje na sledeću komandu. Tim

prati jednu trenutnu komandu na koju ukazuje CS: IP, sa odgovarajućom promjenom IP-a.

T<число>(Enter)

izvodi sekvencijalno praćenje nekoliko naredbi, čiji je ukupan broj naveden u naredbi.

T =<адрес>(Enter)

prati jednu naredbu do navedene adrese.

Opšti pogled na naredbu T je sljedeći:

T =<адрес> <число_команд>(Enter)

Naredba: T = FFFF: 0 (Enter)

prati prvu izvršnu komandu kada se računar prvi put pokrene.

U je komanda za rastavljanje. Ova komanda vam omogućava da rastavite programe učitane u radni prostor debugera. Opća sintaksa:

U<начальный_адрес> <длина>(Enter)

U<начальный_адрес>,<конечный_адрес>(Enter)

uzrokuje rastavljanje 32 bajta, počevši od bajta na koji ukazuje CS: IP, i prikazuje rezultujući popis.

W - naredba za pisanje na disk. Ova komanda vam omogućava da pišete na disk (flopi diskove ili čvrsti disk) u sekvencijalnim blokovima navedenog opsega RAM-a, kao i da pišete u datoteke. Upisivanje u sektore na disku vrši se naredbom

W<адрес><номер_диска><начальный_сектор><число_секторов>(Enter)

Ova komanda upisuje na disk ne više od 80H sektora, broj sektora ne veći od 80. Parametar<адрес>označava adresu glavne memorije, počevši od koje se sadržaj memorije kopira na disk. Parametar<номер диска>označava disk na koji se snima (0-disk A :, 1-disk B :, ..., 80 - čvrsti disk C :). Parametar<начальный сектор>označava broj logičkog sektora iz kojeg će biti učitana RAM slika. Parametar<число секторов>označava ukupan broj sektora upisanih na disk.

Kopirajmo sadržaj BIOS-područja RAM-a u datoteku na disku. Uz pretpostavku prisutnosti PC/AT sa standardnom veličinom BIOS-a od 64K, prvo nulimo BX registar, a zatim ga unesemo u registar CX 2000H. Zatim postavite ime datoteke u koju ćemo kopirati stariju polovinu BIOS-a, komandom

N BIOS.COM (Enter)

Konačno, komanda

W F000: E000 (Enter)

će unijeti sadržaj BIOS-a u BIOS.COM datoteku.


Top srodni članci