Referat, comentariu, eseu, proiect, lucrare bacalaureat, liceu si facultate
Top referateAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Utilitarul DEBUG. Prezentare generala. Comenzi DEBUG
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

Programul DEBUG este un utilitar care imi permite testarea sidepanarea fisierelor executabile. Linia de comanda DEBUG este:

DEBUG ad:iacaleiaafisieriaparametri fisier...ii

Daca ati specificat un nume de fisier, programul DEBUG incarcafisierul specificat in memorie unde poate fi testat si eventual corectat.Daca nu introduceti un nume de fisier, puteti lucra fie numai cucontinutul memoriei, fie puteti incarca -sub DEBUG - un fisier in memorieutilizind comenzile N (Name) si L (Load) - vom vedea !!. Parametri fisier sunt optionali si pot fi ceruti sau nu de fisierulincarcat in vederea depanarii. Prompt-ul programului DEBUG este caracterul "-". La lansarea programului DEBUG (fara parametri), registrele siindicatorii pentru programul care se depaneaza sint initializate cuurmatoarele valori: - registrele segment (CS:, DS:, ES:, si SS:) sint pozitionate lainceputul memoriei libere ; adica primul segment dupa sfirsitulprogramului DEBUG. - registrul pointer de instructiuni (IP) este pozitionat la adresahexazecimala 0100 (pentru programe .COM), respectiv 0 pentru .EXE.- restul registrelor (AX, BX, CX, DX, BP, SP, SI si DI) sintinitializate cu zero. Daca lansati DEBUG cu un specificator de fisier, registrul CXcontine lungimea fisierului in octeti. Daca fisierul este mai mare de 64Ko, lungimea este continuta de registrele BX si CX (BX contine partea ceamai semnificativa a lungimii). - indicatorii de conditii sint stersi. Este alocata toata memoria disponibila. Orice incercare de a alocamemorie din partea programului incarcat va esua.

Parametrii comenzii DEBUG

Toate comenzile DEBUG (cu exceptia comenzii Q (Quit) acceptaparametri. Acestia se pot separa prin virgula sau spatii dar acestiseparatori sunt ceruti numai intre 2 valori hexa.Ex: observati sintaxa comenzilor de mai jos, care sunt echivalente:- dcs:100 110- d cs:100 110- d cs:100,110




Parametrii unei comenzi DEBUG pot semnifica fie o adresa, fie uninterval, fie o lista de caractere. Specificarea unei adrese valide se face fie prin 2 valori hexaseparate de ":", (adresa de segment si deplasamentul in segment) fiespecificind numele unui registru segment urmat de ":" si de deplasament(offset) in hexa, fie printr-o singura valoare hexa semnificind offset-ul, iar pentru segment, comanda va sti sa-si aleaga segmentulimplicit (vom vedea !!). Ex: cs:014a sau 054d:014a Specificarea unui interval presupune fie specificarea a doua adrese(cazul anterior) din care una sau ambele nu necesita specificareasegmentului, fie specificarea unei adrese si lungimea intervalului.Primul caz revine la precizarea unei adrese de inceput respectiv desfirsit (ex: DS:14a 15a), iar al doilea la specificarea adresei deinceput a zonei de memorie si lungimea ei (ex: DS:14a L 10 unde <L>specifica ca urmeaza lungimea, iar 10 (in hexa) este lungimea efectivaa zonei). Parametri tip lista presupun o succesiune de mai multi octetisi/sau siruri de caractere. De exemplu: - E CS:100 F3 'XYZ' 8D 4 "abcd" -> este o lista de cinci entitati:trei octeti si doua siruri (remarcati prezenta ghilimelelor sau apostroafelor, nu are importanta !!), in total o lista de 10 octeti). Obs: - toate valorile se specifica in hexa !!- valoarea limita pentru interval este de 10000 hexa (64 Ko -marimea unui segment). Pentru a specifica aceasta valoare folosind numai4 cifre hexa introduceti 0000 (sau 0)- adresele de memorie specificate trebuie sa fie valide, adicatrebuie sa existe fizic. O incercare de a adresa o adresa de memorieinexistenta are rezultate imprevizibile. - numele de registru folosite in anumite comenzi sint numelestandard cunoscute ale registrilor 8086

Comenzile DEBUG

Informatii comune tuturor comenzilor DEBUG

- o comanda este compusa dintr-o singura litera, in mod uzualurmata de unul sau mai multi parametri. - comenzile si parametri pot fi introduse cu litere mari, cu literemici sau cu combinatii ale acestora. - comenzile si parametri pot fi separati cu delimitatori. - apasati CTRL-BREAK pentru a termina o comanda. - comenzile devin efective numai dupa introducerea tastei ENTER. - pentru comenzile care afiseaza informatii pe mai multe linii deecran puteti introduce CTRL-Num Lock pentru a executa o pauza in afisare.Apasarea oricarui alt caracter reporneste afisarea. - in momentul intilnirii unei erori de sintaxa, se afiseaza liniaeronata impreuna cu un mesaj care indica pozitia erorii. De exemplu: -D cs:100 CS:110 error In acest caz comanda D (Dump) asteapta ca al doilea parametru sacontina numai o valoare de offset. Gasind S (<C> este caracter validhexa!!) care nu este cifra hexa, afiseaza pe linia urmatoare mesajul<error> in dreptul caracterului eronat.

1. A (Assemble) aadresai

- asambleaza instructiuni in limbaj de asamblare direct in memorie. Toate valorile numerice pentru comanda A se introduc in hexa.Instructiunile in limbaj de asamblare pe care le introduceti sintasamblate in memorie la adrese succesive, cu adresa de inceputspecificata de parametrul adresa. Daca nu se specifica nici o adresa,instructiunile sint asamblate la adresa CS:100 daca nu s-a mai utilizatnici o comanda A anterioara, sau la urmatoarea adresa dupa ultimainstructiune asamblata cu o comanda A. Ca sa terminati introducereainstructiunilor, introduceti o linie vida (numai ENTER) si comanda A setermina. La instructiunile incorecte, DEBUG raspunde cu mesajul: /\Errorsi reafiseaza adresa de asamblare curenta. DEBUG suporta sintaxa limbajului de asamblare standard pentru 8086(inclusiv setul de instructiuni pentru 8087) cu urmatoarele reguli: - toate valorile numerice pot fi introduse ca 1-4 cifrehexazecimale. - mnemonicele prefix de segment (adica CS: DS: SS: si ES:) trebuieintroduse inaintea codului de instructiune la care se refera. Deasemenea, ele pot fi introduse si pe linii separate. - mnemonicele pentru instructiunile care lucreaza cu siruri decaractere trebuie sa contina explicit tipul de date la care se refera (Bpentru byte si W pentru word). - instructiunile jump si call sint asamblate automat short, nearsau far in functie de deplasamentul fata de adresa destinatie. Pentru aceste instructiuni este permisa si specificarea prefixuluiNEAR (sau NE) sau FAR caz in care nu se mai folosesc conventiileimplicite. De exemplu:

0100:0500 jmp 502 ; short jump0100:0502 jmp NEAR 505 ; near jump0100:0505 jmp FAR 50A ; far jump

- in anumite situatii DEBUG nu poate decide daca un operand serefera la un operand de tip adresa byte sau adresa word. In acest caztipul operandului trebuie specificat explicit cu prefixele "WORD PTR" sau"BYTE PTR". DEBUG accepta si prescurtarea lor, "WO" sau "BY".De exemplu: NEG BYTE PTR a128i DEC WO aSIi

- pentru a putea deosebi operanzii care se refera la o adresa dememorie, de operanzii imediati, DEBUG utilizeaza conventia ca operanziiintrodusi intre paranteze patrate se refera la adrese de memorie. Deexemplu: MOV AX,21H ; Incarca AX cu 21H MOV AX,a21Hi ; Incarca AX cu continutul adresei de memorie 21H

- sint incluse si doua pseudo-instructiuni foarte des folosite: DBasambleaza valori de octeti direct in memorie, iar DW asambleaza valoride cuvinte direct in memorie. De exemplu: DB 1,2,3,4,"ACESTA ESTE UN EXEMPLU" DW 1000,2000,3000,"BACH" - sint permise toate modurile de adresare indirecta prin registre.De exemplu:

ADD BX,34aBP+2i.aSI-1i POP aBP+SIi PUSH aSIi - sint permise toate codurile de instructiuni sinonime. De exemplu: LOOPZ 100 sau LOOPE 100 JA 200 sau JNBE 200

Exemple: -A200 08B4:0200 xor ax,ax 08B4:0202 mov abxi,ax 08B4:0204 ret 08B4:0205 2. C (Compare) interval adresa

- compara continutul a doua zone de memorie specificate, prima prininterval (vezi mai sus), iar a doua prin adresa de inceput. Daca segasesc octeti diferiti, se afiseaza adresa si continutul lor in formatul:

adresa1 octet1 octet2 adresa2

unde prima pereche (adresa1 octet1) se refera la adresa locatiei sicontinutul ei din prima zona de memorie specificata de interval, iar adoua pereche (octet2 adresa2) se refera la adresa locatiei si continutulei din a doua zona de memorie specificata de adresa. Daca in primul parametru introduceti numai o valoare de offset,comanda C foloseste, implicit, adresa de segment din DS:

Ex: C 100 L 20 200 - cei 32 de octeti de memorie incepind de la adresaDS:100 sint comparati cu 32 de octeti de memorie de la adresa DS:200. 3. D (Dump) aadresai sau D aintervali

- afiseaza continutul unei zone de memorie. Afisarea se face indoua parti:a) Portiunea hexazecimala in care fiecare octet este afisat inhexazecimal.b) Portiunea ASCII, in care octetii sint afisati in cod ASCII.Caracterele netiparibile sint indicate printr-un punct (.). Pentru un format de display cu 80 de coloane pe linie, fiecarelinie incepe la o adresa multiplu de 16 si contine 16 octeti. Intreoctetii 8 si 9 se afiseaza o linie (-). Obs.: Prima linie poate sa contina mai putin de 8 sau 16 octetidaca adresa de inceput nu este multiplu de 8 sau 16. Prima forma a comenzii permite afisarea continutului memorieiincepind cu adresa specificata. Daca nu specificati adresa (deci faraparametru !!), comanda D presupune ca adresa de inceput este adresaurmatoare ultimei locatii de memorie afisata de o comanda D anterioara. Daca nu s-a mai introdus nici o comanda D anterioara, adresa de inceputa afisarii este offset-ul 100H in segmentul DS: initializat de DEBUG lalansare.Ex:- D CS:100 - afiseaza 8 linii a 16 octeti incepind cu adresa CS:100H- D100 - afiseaza 8 linii a 16 octeti incepind cu adresa DS:100H Obs.: daca introduceti numai offset-ul ca adresa de inceput, comandaD foloseste implicit adresa de segment continuta in registrul DS:. A doua forma permite afisarea continutului unei zone de memoriespecificata printr-un interval. Ex: - D CS:100 L 20 - afiseaza 32 (20h) octeti incepind cu CS:100- D CS:100 115 - afiseaza octetii dintre adresel CS:100 si CS:115

Nota: Daca se introduce numai un deplasament ca adresa de inceput,comanda D foloseste implicit adresa de segment continuta in registrulDS:. Daca specificati adresa de sfirsit, introduceti numai offset-ul.

4. E (Enter) adresa alistai

- comanda inlocuieste continutul unuia sau a mai multor octeti,incepind cu adresa specificata, cu valorile continute in lista sauafiseaza si permite modificarea octetilor de memorie in mod secventialdaca nu introduc nici o lista de octeti. Obs.: daca introduceti numai deplasament ca adresa de inceput, Efoloseste implicit adresa de segment continuta in registrul DS:.

Ex: -E ds:100 F3 "xyz" 8D - adresele de memorie ds:100 - ds:104 sintinscrise cu cei cinci octeti specificati in lista.Daca nu am parametru lista comanda afiseaza adresa si octetul de laaceasta locatie, apoi sistemul asteapta introducerea datelor.Ex: -E 120

Acum puteti executa una din urmatoarele actiuni:1. Introduceti o valoare de una sau doua cifre hexa care inlocuiestecontinutul octetului. Apoi puteti executa oricare din urmatoarele treiactiuni.2. Introduceti un spatiu pentru a avansa la urmatoarea adresa. Continutulei este afisat. Daca doriti sa schimbati continutul adresei executatioperatia 1. Pentru a avansa la urmatorul octet fara schimbarea octetuluicurent, mai introduceti un spatiu.3. Introduceti o linie "-" pentru a reveni la adresa precedenta. Seafiseaza o noua linie cu adresa precedenta si continutul ei. Daca doritisa modificati continutul ei, executati operatia 1. Pentru a reveni cuinca un octet fara modificarea octetului curent, mai introduceti "-".4. Pentru a termina comanda E introduceti <ENTER>.Ex: -E cs:100 - afiseaza urmatoarele:

0FC3:0100 EB Pentru a modifica continutul adresei 0FC3:0100 din EB hexa in 41hexa introduceti 41.0FC3:0100 EB 41 Pentru a vedea continutul urmatoarelor trei locatii, introducetispatiu de trei ori:

0FC3:0100 EB._41 10. 00. 8C. Pentru a modifica continutul adresei curente (0FC3:0103) din 8Chin 42h, introduceti 42.

0FC3:0100 EB.41 10. 00. 8C._42 Acum sa presupunem ca doriti sa reveniti si sa modificati 10h in6Fh. Introduceti de doua ori o linie "-".

0FC3:0100 EB.41 10. 00. 8C.42 -0FC3:0102 00.-0FC3:0101 10.6F(Tot ceea ce este subliniat este afisat de DEBUG !!) Introduceti ENTER pentru a termina comanda.

5. F (Fill) interval lista- permite umplerea unei zone de memorie specificata prin intervalcu valorile din lista care contine o succesiune de octeti si/sau siruride caractere incluse intre ghilimele. Daca lista contine mai putine elemente (eventual un singurcaracter) decit numarul de octeti din interval, lista este utilizatarepetitiv pina cind toate adresele de memorie din intervalul specificatsint initializate. Daca lista contine mai multe elemente decit numarulde octeti din interval, elementele in plus sint ignorate. Obs.: Daca introduceti numai un offset ca adresa de inceput, comandaF utilizeaza implicit adresa de segment continuta in registrul DS:.Ex: F0FC3:100 L5 F3 "XYZ" 8D - adresele de memorie 0FC3:100 - 0FC3:104sint initializate cu cei 5 octeti specificati. In cazul listei decaractere se introduc in memorie codurile ASCII. Astfel adresele 100-104vor contine F3 58 59 5A 8D. F 100 L 20 41 - umple o zona de 32 octeti incepind cu DS:100H, cucaracterul 'A' (cod ASCII 41h)

6. G (Go) a=adresai abreakpointsi- executa programul pe care il depanati, si de asemenea, poate opriexecutia la o adresa specificata (breakpoint) si afiseaza registrele,indicatorii si instructiunea de la adresa unde executia a fost oprita. Executia programului incepe cu instructiunea curenta, a careiadresa este determinata de perechea de registre CS:IP, cu exceptiacazului cind ati introdus parametrul =adresa (= face distinctia intreadresa de start si adresa unui eventual breakpoint !!) cind executiaprogramului incepe de la CS:adresa. Obs.: daca nu utilizati parametrul =adresa asigurati-va ca valorileregistrelor CS:IP sint initializate corect inainte de executia lui G. Se pot specifica pina la zece adrese de breakpoint, in oriceordine, oricum programul se va opri la adresa cea mai mica din lista sitot asa in continuare. Obs.: a) adresele specificate ca parametri trebuie sa fie adrese ale unorcoduri de instructiuni 8086 valide. Daca specificati o adresa care nucontine un cod de instructiune 8086 (de ex. o adresa in mijlocul uneiinstructiuni !!) rezultatele sint imprevizibile.b) registrul SP trebuie sa fie initializat corect si stiva trebuie sacontina o zona disponibila de cel putin 6 octeti necesari pentrucomanda G. Altfel pot apare erori imprevizibile.c) daca pentru un parametru adresa de breakpoint introduceti numai undeplasament, comanda G utilizeaza implicit continutul registrului desegment CS:.d) odata ce executia programului s-a terminat (DEBUG afiseaza mesajul"Program terminated normally"), pentru o noua executie este necesar sareincarcati programul cu comenzile N si L.Ex: G 102 1EF 208 -executia incepe de la instructiunea curenta, a careiadresa este indicata de registrele CS:IP (=adresa nu a fost introdus).Sint specificate trei adrese de breakpoint. Sa presupunem ca executiaprogramului se opreste la a doua adresa adica inainte de executiainstructiunii de la adresa CS:1EF. Codurile de instructiuni originale serefac, toate cele trei adrese de breakpoint se sterg si comanda G setermina. Daca introduc in acest punct din nou G, programul va "pleca" dela adresa CS:1EF si nu de la adresa de start. Specificarea mai multor puncte de intrerupere are sens la unprogram cu multe ramificatii caz in care as putea pune breakpoint-le indiversele ramuri ale programului

6. H (Hex arithmetic) H valoare valoare

- afiseaza suma si diferenta a doi parametri hexa, in aceastaordine.

Ex: H 0F 8 si comanda va afisa: 17 07

7. I (Input) adresa-port

- executa o operatie de intrare de la un port specificat siafiseaza continutul datei citite.Ex:I 2F8 comanda afiseaza octetul citit de la portul 02F8h (deex. 6Bh).

8. L (Load) aadresa aunitate sector nr.sectii

- incarca un fisier sau continutul unor sectoare absolute de pedisc in memorie.

Cind comanda se introduce fara parametri sau numai cu parametruladresa, va incarca fisierul al carui specificator de fisier se gasestepregatit in blocul de control (FCB) de la adresa CS:5C. Numele fisierului se poate specifica in specificatorul de fisierintrodus la lansarea programului DEBUG sau utilizind inainte de L ocomanda N (Name). Fisierul este incarcat in memorie incepind de la CS:100, sau dela locatia specificata in parametrul adresa (pentru fisiere .HEX), de peunitatea de disc implicita sau specificata. Notati ca fisierele cuextensia .COM sau .EXE sint totdeauna incarcate la adresa CS:100respectiv CS:0 astfel incit daca specificati o adresa, aceasta esteignorata. Registrele BX si CX sint pozitionate cu numarul de octeticititi, cu exceptia fisierelor care au extensia .EXE, caz in care BX siCX contin dimensiunea programului (fisierele .EXE au un "header" care nuse inarca in memorie). Ex:DEBUG test.exe echivalent cu: DEBUG-L- Ntest.exe- LFisierul cu numele test.exe este incarcat de pe unitatea implicita siplasat in memorie incepind cu adresa CS:0.

A doua forma a comenzii se utilizeaza pentru a incarca un numar desectoare incepind cu sectorul specificat si aflat pe discul precizat prinunitate (0-unitatea A, 1-unitatea B etc) si plaseaza datele in memoriela adresa specificata de parametrul adresa. Obs: Daca introduceti numai un deplasament pentru adresa deinceput, comanda L foloseste implicit adresa de segment continuta inregistrul CS:.

Ex: L 100 2 0 1 - comanda imi incarca sectorul de BOOT (primul sector)de pe discul sistem C: in memorie la adresa CS:1009. M (Move) interval adresa

- muta continutul locatiilor de memorie specificate in interval,in locatiile incepind de la adresa. Mutarile de zone de memorie care sesuprapun sint executate fara pierdere de date in timpul transferului.Datele din zona sursa ramin neschimbate cu exceptia cazului cind sintmodificate de comanda M.Obs.: - daca introduceti numai un offset pentru adresa de inceput aintervalului, M foloseste implicit adresa din DS: ; pentru adresa desfirsit a intervalului specificati numai o valoare de deplasament.- daca introduceti numai un deplasament pentru adresa zoneidestinatie, M foloseste implicit adresa din DS:.

Ex: -M CS:100 110 500 - muta 17 octeti de la CS:100 la CS:110 in zona dememorie incepind de la DS:500.

10. N (Name) ad:iacaleifisier

- comanda permite specificarea numelui unui fisier executabilpentru comenzile L si W (Write) sau precizarea parametrilor necesariprogramului care se depaneaza. Obs.: daca lansati DEBUG fara un specificator de fisier, trebuiesa utilizati N inainte de a putea incarca un fisier cu comanda L. Exemple: DEBUG -Ntest -LPentru a trimite parametri programului depanat, vom introduce: DEBUG test- N file1 file2

In acest exemplu, DEBUG incarca fisierul test la adresa CS:0. Apoicu N, blocurile de control sint formate cu file1 la adresa DS:5Ch si cufile2 la adresa DS:6Ch. Blocul de control pentru test este rescris deprimul parametru. Daca introduc acum comanda G programul va rula ca si cum ar fi fostlansat de la prompt-ul DOS in forma: C\>TEST file1 file2 De remarcat ca in acest caz in care FCB-ul pentru programul depanateste sters de primul parametru daca dau comanda W (Write) datele dinmemorie se vor salve pe disc intr-un fisier FILE1.DAT (primul parametru)si nu test.exe cum era de dorit !!

11. O (Output) adresa-port octet

- trimite un octet de date la portul de iesire specificat prinadresaEx: O 2F8 4F - trimit octetul 4Fh la portul de iesire 2F8h

12. P (Proceed) a=adresaianumari

- executa o bucla, o instructiune repetitiva pe siruri de chr., ointrerupere soft sau o subrutina sau traseaza (vezi si T (Trace) oriceinstructiune. Cind dau comanda, programul testat executa fara intreruperebucla (LOOP) sau instructiunea repetitiva sau subrutina pina la capat sauun numar de instructiuni dat de parametrul numar. Primul parametru specifica adresa primei instr. de executat ;implicit este adresa data in CS:IP. Al doilea parametru specifica numarulde instr. de executat inainte de a reveni in DEBUG ; implicit este 1.Semnul "=" face distinctia intre adresa si numar. Obs.:- daca nu specific segmentul la adresa, aceasta se considera offsetfata de CS.- daca instructiunea de la adresa specif. sau curenta nu este obucla, subrutina ... atunci P lucreaza ca si T (Trace)- dupa terminarea comenzii, DEBUG afiseaza continutul registrelor,flag-lor si urmatoarea instructiune de executat ca si T.- nu se va da P pentru executia instructiunilor din memoria ROM.Ex: presupunem ca programul de testat are o subrutina la adresa 12Ch.Daca introduc: - P =12C programul meu va rula pina la adresa urmatoareCALL-ui si va afisa registrii, starea procesorului si instructiunea dedupa CALL.13. Q (Quit)

- termina programul DEBUG si reda controlul S.O (adica inCOMMAND.COM). Fisierul care contine programul cu care ati lucrat inmemorie nu este salvat la executia comenzii Q. Trebuie sa utilizaticomanda W inainte de Q, pentru a salva intr-un fisier, programul depanat.

14. R (Register) anume-registrui

Comanda permite fie afisarea continutului hexa al unui registru,cu posibilitatea (optionala) de a-l modifica continutul, fie afisareacontinutului hexazecimal al tuturor registrelor, plus stareaindicatorilor si urmatoarea instructiune de executat, fie afisarea celor8 indicatori (nume compuse din doua litere, ordonate alfabetica) cuposibilitatea (optionala) de a-i modifica. Pentru afisarea unui singur registru (registru de date sau de stare(registrul cu indicatorii), comanda va fi urmata de numele lui care poatefi unul dintre: AX,BX,CX,DX,BP,SP,SI,DI,CS,DS,ES,SS,IP (PC),F(indicatorii).Ex: - R AX - comanda imi permite afisarea si, eventual modificarea AX 11C2 registrului AX | fff Pot introduce <ENTER> si las AX neschimbat, sauintroduc o valoare hexa (1-4 cifre hexa) si apoi <ENTER>. In acest cazAX capata valoarea FFFh. Daca introduc omanda fara parametru imi va afisa continutul tuturorregistrelor si indicatorilor, ca si urmatoarea instructiune care seexecuta. Sistemul raspunde cu:AX=0E00 BX=00FF CX=0007 DX=01FF SP=03D9 BP=0000 SI=005C DI=0000DS=0FC3 ES=0FC3 SS=0FC3 CS=0FC3 IP=011A NV UP DI NG NZ AC PE NC0FC3:011A CD21 INT 21 Primele doua linii afiseaza continutul hexazecimal al registrelorsi pozitionarea celor opt indicatori de conditii. Ultima linie indicaadresa instructiunii de executat si formatul instructiunii in hexa sidezasamblat. Aceasta este instructiunea indicata de registrele CS:IP. Daca introduc: -RF comanda va afisa cei opt indicatori de conditii,fiecare conditie (setata sau stearsa) fiind codificata prin douacaractere. Indicatorii de conditii sint listati in ordinea in care aparin tabela urmatoare:+-------------------------------------+------------+------------+| Nume indicator | Pozitionat | Sters |+-------------------------------------+------------+------------+| Overflow (da/nu) | OV | NV || Direction (decrement/increment) | DN | UP || Interrupt (activat/dezactivat) | EI | DI || Sign (negativ/pozitiv) | NG | PL || Zero (da/nu) | ZR | NZ || Auxiliary carry (da/nu) | AC | NA || Parity (par/impar) | PE | PO || Carry (da/nu) | CY | NC |+-------------------------------------+------------+------------+ De ex. daca toti indicatorii sint pozitionati, se afiseaza:OV DN EI NG ZR AC PE CY - Acum pot fie sa-i las neschimbati (dau <ENTER>) fie pot modifica(adica sterge) oricare din acesti indicatori in orice ordine doresc,introducind valoarea complementara (vezi tabel).De ex. pentru a modifica pe primul, al treilea, si al cincilea indicatorvoi introduce (ordinea este aleatoare!!):

OV DN EI NG ZR AC PE CY - NZDINV 15. S (Search) interval lista

- cauta intr-o zona de memorie data prin interval un sir de octetispecificat in lista. Toate sirurile gasite in memorie sint indicate prinafisarea adreselor unde aceste siruri au fost gasite. Afisarea numai amesajului "-" fara nici o adresa, semnifica negasirea listei de octeti. Obs.: daca se introduce numai un offset pentru adresa de inceput aintervalului, S foloseste implicit adresa de segment din DS:.

Ex: -S CS:100 110 41 - caut in zona CS:100 la CS:110 octetul 41hDaca, de ex. octetul se intilneste de doua ori, raspunsul poate fi deforma: 09F7:0104 09F7:010D- S CS:100 L11 41 "AB" E - caut intre aceleasi adrese o lista de4 octeti. Se va afisa adresa de inceput a tuturor sirurilor de octeticare coincid cu lista introdusa. Daca nu se gaseste nici un sir, nu seafiseaza nici o adresa.

16. T (Trace) a=adresai anumari

- executa una sau mai multe instructiuni functie de numar, incepindcu instructiunea de la adresa specificata prin =adresa sau de la adresacurenta (din CS:IP). Comanda afiseaza continutul tuturor registrelor siindicatorilor dupa fiecare instructiune executata ca si urmatoareainstructiune, in acelasi format ca si R. Practic, permite executia pascu pas a unui program.Ex: - T - executa instructiunea curenta- T10 - executa 16 instructiuni incepind de la adresa din CS:IP.Continutul registrelor si indicatorilor este afisat dupa executiafiecarei instructiuni.

17. U (Unassemble) aintervali

- dezasambleaza instructiunile (translateaza continutul memorieiin instructiuni in limbaj de asamblare) incepind cu adresa de start sauadresa de dupa ultima comanda U sau cea specificata prin interval siafiseaza alaturi de instructiuni si adresele si valorile lorhexazecimale. Obs.: - daca introduceti numai un offset pentru primul parametru adresa,comanda U foloseste implicit adresa din CS:. - daca nu dau nici un parametru, U incepe dezasamblarea de la CS:0(.EXE sau CS:100 pentru .COM) si am posibilitatea de a dezasambla zonede memorie consecutive daca dau succesiv comenzi U fara parametru- implicit (daca nu specific un interval) se dezasambleaza 20h (32)octeti ex: - U0FC3:0100 108- se dezasambleaza 9 octeti in intervalul0fc3:100 - 0fc3:108O comanda echivalenta este -U0FC3:100 L9

18. W (Write) aadresa aunitate start_sec nr_secii

- permite salvarea programului depanat din memorie intr-un fisierpe disc sau in niste sectoare specificate. Comanda W are doua formate:

A. W adresa unitate start_sec nr_sec - comanda scrie programul depanataflat in memorie la adresa, pe discul specificat prin unitate (vezi sicomanda L) la adresa precizata prin start_sec si nr_sec. Datele incepindde la adresa se scriu pe disc incepind cu start_sec si continua pina cindse scrie nr_sec sectoare. Obs.:- se recomanda evitarea acestei forme pentru W deoarece scriereadatelor la adrese absolute pe disc poate distruge informatii utile pedaca adresa pe disc este specificata eronat- daca ptr. adresa se introduce numai offset, W foloseste implicitadresa din CS: pentru adresa de segmentEx: W 1FD 1 100 A - datele incepind cu adresa CS:01FD se scriu pe disculB:, 16 sectoare incepind cu sectorul 256

B. W aadresai - in acest format, comanda salveaza de la adresa intr-unfisier pe disc (cel dat la lansare DEBUG sau primul parametru din ultimacomanda N) un numar de octeti egal cu cel specificat in registrii BX:CX. Trebuie sa am grija sa-mi notez valorile initiale ale registrilorBX si CX pentru a-i restaura inainte de a da W. Programul depanat este scris peste fisierul original care a fostincarcat in memorie sau intr-un fisier nou daca numele definit in bloculde control nu exista pe disc. Nu puteti scrie intr-un fisier cu extensia.EXE sau .HEX. Aceste fisiere trebuie scrise intr-un format special sinu pot fi generate cu DEBUG. Daca totusi este necesar sa modificati un fisier .EXE sau .HEX sicunoasteti adresele exacte pe care doriti sa le modificati, putetiutiliza urmatoarea procedura:- redenumiti cu REN fisierul cu alta extensie decit .EXE sau .HEX.- incarcati fisierul in memorie utilizind DEBUG fisier sau comezileN si L.- executati modificarile necesare in memorie, dar fara sa incercatisa executati programul cu comenzile G sau T.- scrieti programul pe disc utilizind comanda W.- redenumiti cu REN fisierul la extensia sa originala.

Tema: - testati comenzile prezentate:- dati comanda MEM /d si vedeti diferitele adrese de incarcare azonelor remarcabile (zona vectorilor de imtrerupere, drivere-le sistemetc)in memorie- intrati in DEBUG si vizualizati cu comanda U de la adreselevazute anterior (veti schimba, cu R, eventual CS: cu 0, iar IP cu offset-ul vazut anterior) cum sint realizate aceste driver-e. Se vaobserva si sintaxa instructiunilor 8086. Nu incercati sa executatiinstructiunile pentru a evita blocarea sistemului.- puteti umple (comanda F) o zona (sau doua) de memorie cu oconstanta sau o lista de octeti, apoi vizualizati cu D, comparati zonelecu C, schimbati diferite valori cu E, cautati o secventa de octeti cu S- incarcati cu L sectorul de BOOT, sau directorul radacina (de ex.)- realizati un mic program cu A (o adunare, o scadere, o scrieredirecta in memorie (memoria vide incepe la B800:0), dati executie pas cupas cu T si observati registrii si indicatorii de conditii- salvati programul realizat cu W (dupa ce ati pozitionat BX si CXa.i sa contina lungimea fisierului !!) intr-un fisier (cu extensia .COM)al carui nume il stabiliti anterior cu N.


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui referat, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza referatul:
In prezent referatul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite referat | Harta site | Adauga in favorite
Colt dreapta