Sunteți pe pagina 1din 3

Laborator 1: utilizarea utilitarei DEBUG pentru scrierea de programe simple

Sintaxa comenzilor DEBUG


A [ adres ]
Permite editarea unui program n limbaj de asamblare, cu anumite restricii (nu se pot utiliza nume simbolice, deci
toate adresele sunt absolute, iar toate constantele sunt specificate prin valori absolute, n hexazecimal, fr a fi urmate de litera
h corespunztoare acestei convenii din limbajele de asamblare). Editarea se va ncepe de la adresa specificat sau, n caz
contrar, de la adresa 100h n cadrul segmentului disponibil, cel mai de jos; pentru operatorii de conversie de tip: word ptr,
byte ptr se pot utiliza formele prescurtate:
wo i respectiv by.
La nceputul fiecrei linii se afieaz adresa curent din memorie (segment : offset), i se ateapt introducerea de
instruciuni, n limbaj de asamblare, terminate cu Enter (CR), dup care se reia editarea cu o linie nou. Pentru linia
anterioar el genereaz codul main respectiv i indexeaz, n mod corespunztor, adresa urmtoarei instruciuni. Dac
trebuie s se specifice un cmp al unei instruciuni (ca n cazul unei instruciuni de salt la o adres ulterioar), care nu este
cunoscut n momentul introducerii liniei respective, se vor completa octeii corespunztori cu zero (sau alt valoare), iar dup
editarea celorlalte linii, cnd cmpurile respective devin cunoscute, se poate reedita (reasambla), integral, numai instruciunea
respectiv, prin specificarea adresei instruciunii.
Dac se introduce o instruciune greit (eroare sintactic), editorul nu asambleaz linia respectiv i afieaz
aceeai adres pe o linie nou, ateptnd introducerea de noi instruciuni, corecte.
Revenirea n modul comand, din modul de editare, se realizeaz tastnd Enter (CR), cnd se afieaz pe o linie o
nou adres, fr a mai edita nimic pe linia respectiv.
Dac comanda nu este urmat de parametru 'adresa', se va continua asamblarea (editarea) de la adresa la care
rmsese editarea anterioar.
Exemplu :
-A 5A2C:200 (CR)
5A2C:0200 _
C domeniu adres
Compar zona de memorie specificat de 'domeniu' cu o zon, de aceeai dimensiune, ncepnd de la adresa
specificat. Dac cele dou zone de memorie sunt identice nu se afieaz nimic, i se revine n modul comand din Debug.
Dac exist diferene ntre cele dou zone de memorie se afieaz octeii diferii i adresele corespunztoare, din cele dou
zone, n formatul:
adresa_zona_1

octet_zona_1

octet_zona_2

adresa_zona_2

Exemplu :
-C 3AB2:100 200 300
- va compara coninutul zonei de memorie cuprins ntre adresele relative 100h i 200h, n segmentul care ncepe la
adresa 3A2Bh, cu coninutul unei zone de aceeai lungime care ncepe de la adresa 300h, n acelai segment de memorie.
D [ domeniu ]
Afieaz coninutul zonei de memorie specificat prin 'domeniu'. Dac comanda nu este urmat de parametrul
'domeniu', atunci se afieaz 128 de octei, ncepnd de la afiarea anterioar. Afiarea se face n dou cmpuri: hexazecimal
i ASCII. Pentru caracterele netipribile se afieaz '.'. Se afieaz pe fiecare linie adresa, coninutul hexa pentru 16 octei
ncepnd de la adresa respectiv, separai n dou grupe prin -, iar dup aceea caracterele ASCII corespunztoare codurilor
hexa, respective. Exemplu :
-D 100 10f
3AB2:0100 30 41 42 43 44 45 46 47 - 38 39 4a 4b 4c 4d 4e 4f
0ABCDEFG89JKLMNO
E adres [ list ]
Comanda permite introducerea n memorie a unor valori de tip octet, ncepnd de la adresa specificat. Dac 'lista'
nu este specificat se pot introduce valori octet cu octet. Debug afieaz adresa specificat i vechiul coninut i ateapt:
- introducerea unei noi valori, dup care trece la adresa urmtoare, afind din nou vechiul coninut al acesteia;
- dac se tasteaz spaiu (blanc), atunci se trece la urmtoarea locaie de memorie, fr modificarea celei curente;
- dac se tasteaz - se revine la octetul anterior, pe care l tiprete pe o linie nou, precedat de adresa sa;
- dac se tasteaz Enter (CR), se ncheie comanda E.
F domeniu list
1

Comanda permite umplerea unei zone de memorie cu valorile din 'lista'. Dac domeniul este mai mare dect
lungimea listei, aceasta va fi depus repetat n memorie pn se umple domeniul specificat. Dac lista este mai lung, valorile
suplimentare din list sunt ignorate.
G [ = adres [ adres adres ... ] ]
Aceast comand permite execuia unui program; programul ncepe de la adresa specificat dup semnul =, care
face deosebirea ntre adresa de start i celelalte adrese care reprezint puncte de breakpoint (de suspendare a execuiei
programului n momentul n care sunt atinse). n cazul n care se ntlnete o astfel de adres, specificat n comand, se
ntrerupe execuia programului i se afieaz adresa la care s-a ajuns, instruciunea executat, coninutul registrelor i a
indicatorilor. Se pot specifica pn la 10 de astfel de adrese de breakpoint, dar numai la adrese ce conin primul octet al unei
instruciuni. De fapt la adresele de beakpoint se plaseaz codul ntreruperii 3 (INT 3), care trateaz ntreruperea; n stiv
trebuie s fie disponibili cel puin 6 octei, deoarece se salveaz registrul indicatorilor, registrele segment i IP.
Lansarea n continuare a programului se poate face doar cu comanda G, fr nici un parametru. Se evit, de obicei,
acest mod de lansare n execuie deoarece se poate pierde controlul asupra calculatorului, dac programul nu este bine pus la
punct.
H valoare valoare
Comanda furnizeaz suma i diferena, fr transport (mprumut), a celor doi parametri. Exemplu :
-H 1234 ABCD
BE01 6667
I valoare
Citete i afieaz un octet de la portul specificat (valoare).
L [ adresa [ disc nregistrare nregistrare ]]
Comanda fr parametri ncarc n memorie, de la adresa CS:0100, un fiier al crui nume a fost specificat ntr-o
comand N , anterioar; se va depune n BX:CX numrul de octei ncrcai. Dac se specific adresa, fiierul va fi ncrcat,
n memorie, de la adresa specificat.
Dac se utilizeaz comanda cu toi parametrii se vor ncrca, de pe disc, sectoare absolute n locul unui fiier.
Unitatea de disc de la care se face citirea este specificat de cmpul 'disc'. Se va ncrca prima nregistrare specificat i se
continu cu urmtoarele, pn cnd numrul de sectoare este egal cu cel de-al doilea parametru din comand. De exemplu:
-L04BA:100 2 0F 6D
se vor ncrca 109 (6Dh) nregistrri, ncepnd cu nregistrarea logic numrul 15 (0Fh), n memorie ncepnd cu adresa
04BA:0100. Parametrul adres este ignorat pentru fiierele .exe. Dac comanda L conine 'adresa', Debug o va aduna la
adresa gsit n fiierul .exe, pentru a determina adresa de start la care se ncarc fiierul.
M domeniu adres
Comanda permite mutarea unui bloc de memorie, specificat de 'domeniu', ncepnd de la adresa specificat.
Mutarea suprapus este fr pierdere de date, deoarece octetul de la adresa ce ar putea fi pierdut prin scriere peste el, este
salvat primul. Adresele trebuie sa fie n ordine cresctoare.
N nume_fisier
Aceast comand realizeaz dou funcii :
- asigneaz un nume de fiier pentru o comand L sau W, ulterioar. Dac s-a lansat Debug fr a se specifica
numele unui fiier, atunci trebuie utilizat aceast comand nainte de ncrcarea sau scrierea unui fiier;
- asigneaz parametrii nume_fisier la fiierul n depanare.
O valoare octet
Transmite la portul de ieire specificat (valoare), octetul.
Q

Sfrit sesiune de lucru Debug; revenire MS-DOS.

R [ nume_registru ]
Aceast comand, fr nici un parametru, afieaz coninutul tuturor registrelor i starea indicatorilor de condiii.
Dac comanda este urmat de numele unui registru, se afieaz coninutul curent al acestuia i se poate modifica coninutul
su.

Starea indicatorilor de condiii este afiat astfel :


Indicator
OF
DF
IF
SF

Set(1)
OV
DN
EI
NG

Clear(0)
NV
UP
DI
PL

ZF

ZR

NZ

AF
PF
CF

AC
PE
CY

NA
PO
NC

Indicatorii pot fi afiai separat, deci numai ei, prin comanda RF, i se pot modifica prin precizarea mnemonicii
dorite a indicatorului respectiv.
S domeniu list
Se caut n 'domeniul' specificat 'lista' de octei. Lista poate conine unul sau mai muli octei, separai prin spaiu sau
virgul. Comanda returneaz adresele la care este gsit lista de octei.
T [ = adres ] [ valoare ]
Aceast comand execut instruciune cu instruciune ncepnd de la adresa specificat dup semnul =, i afieaz
coninutul tuturor registrelor, indicatorilor i urmtoarea instruciune de executat; dac parametrul 'valoare' lipsete, se va
executa o singur instruciune, altfel se vor executa cte instruciuni specific acest parametru (hexazecimal).
Dac comanda nu are nici un parametru se execut o singur instruciune, de la adresa curent din CS. De
exemplu :
-T=11A 10
va executa 16 instruciuni ncepnd de la adresa CS:011A.
U [ adres ]
Comanda dezasambleaz octei i afieaz declaraiile surs ce le corespund, mpreun cu adresele i valorile
octeilor. Dac comanda nu este urmat de parametru sunt dezasamblai 32 octei, de la prima adres dup cea afiat de
comanda U anterioar.
W [ adres [ disc nregistrare nregistrare ] ]
Scrie fiierul n depanare ntr-un fiier de pe disc, al crui nume a fost precizat ntr-o comand N, anterioar. n rest
comanda este asemntoare, din punct de vedere al parametrilor i al semnificaiei acestora, cu comanda L. n registrele
BX:CX trebuie s se specifice numrul de octei de transferat pe disc.
Mesaje de eroare
bf = s-au tastat caractere greite pentru indicatorii de condiii (bad flag);
bp = s-au specificat prea multe puncte de breakpoint ntr-o comand G (too many breakpoints);
br = nume greit de registru (bad register);
df = s-au specificat dou valori diferite pentru acelai indicator (double flag).

S-ar putea să vă placă și