Sunteți pe pagina 1din 2

L 2.

SIMULAREA EXECUŢIEI UNUI PROGRAM

Compilarea şi execuţia unui program


Programele cu instrucţiuni masină folosesc limbajul de asamblare (corespunzător
procesoarelor Intel din familia 80x86). Fazele de procesare ale unui program folosesc
directivele sistemului de operare DOS, prin intermediul programului Norton (Comander).
Acesta este un mediu de lucru pentru programe de tip DOS, permiţând printre altele, editarea
şi vizualizarea unui fişier sau lansarea în execuţie a unui program. Programul Norton este
pornit din mediul Windows. Se obţin astfel două ferestre care conţin liste de directoare (scrise
cu majuscule) sau de fişiere. Intrarea într-un director, corespunzător barei de selecţie se face
cu <enter>. Revenirea în directorul precedent, din ramificaţia respectivă se face tot cu
<enter>, bara de selecţie fiind poziţionată la începutul listei (reprezentat cu două puncte).
Forma iniţială a programelor de aplicaţie (forma “sursă”) este scrisă în limbaj de asamblare şi
este conţinută într-un fişier cu extensia “.asm”. De exemplu un program cu numele “prog” se
va afla într-un fişier având denumirea: prog.asm.
Pentru ca un program să poată fi procesat (executat) de către calculator, trebuie adus la forma
executabilă. Aceasta este conţinută de un fişier cu extensia “.exe”, care conţine programul sub
formă de cod binar, căruia i-au fost ataşate procedurile necesare funcţionării şi comenzilor de
sistem.
Pentru ca un program să fie adus la forma executabilă este necesar ca forma sursă (conţinând
şiruri de caractere de tip text) să fie transformată în cod binar, specific comenzilor maşină,
numit “cod obiect”. Aceasta se face prin acţiunea unui program compilator (asamblor, în
cazul nostru). Acesta foloseşte ca date de intrare forma sursă a programului aflată într-un
fişier cu extensia .asm, iar ca date de ieşire, forma “obiect” a programului, într-un fişier cu
extensia “.obj”.
Pentru ca forma obiect să fie transformată în forma executabilă este necesară calcularea
corectă a adreselor de memorie şi ataşarea modulelor de sistem. Aceasta se realizează prin
acţiunea programului de “Link-Editare” (sau editare de legături, la nivelul adreselor de
program), având ca date de intrare forma obiect a programului (fişierul cu extensia .obj), iar
ca date de ieşire, forma executabilă într-un fişier cu extensia “.exe”.
Toate aceste operaţii pot fi realizate rapid dacă este editat şi lansat în execuţie un “fişier de
comenzi”, având extensia “.bat”. În cazul unui program cu numele “prog”, acesta are forma:
tasm prog.asm
tlink prog.obj
Fiecare linie conţine numele programului lansat în execuţie şi fisierul de intrare utilizat.
Astfel, “tasm” este numele programului asamblor (după denumirea de firmă, turbo-asembler),
iar “tlink” este numele programului link-editor (după denumirea de firmă, turbo-linkeditor).
Execuţia programului de link-editare are ca rezultat şi generarea unui fişier cu extensia
‘.map’, conţinând informaţii asupra “hărţii” de alocare a memoriei, pentru segmentul de Cod
(programul propriu-zis), segmentul de Date şi segmentul de Stivă, specificând, de asemenea,
şi adresa de pornire a programului. Toate informaţiile de adresă se referă, de fapt, la adrese
virtuale, care vor fi concretizate apoi, la nivelul adreselor fizice de către sistemul de operare.
În cadrul fişierului de comenzi pot fi adăogate şi alte linii, specificând lansarea şi altor
programe. De exemplu, dacă se adaogă linia conţinând comanda “td”, după compilare şi linkj-
editare se va porni programul de depanare interactivă (turbo-debugger).

Construirea şi Analiza unui program


Se porneşte Norton Comander (NC)(clik pe iconiţă);
Se trece în directorul cu programe: <..><enter>, <programe><enter>;
Se editează programul sursă (.asm), Creare fişier: <Shift><F4>, Salvare fişier:<F10>;
Se compilează şi se link-editează programul, folosind un fişier de comenzi cu liniile:
tasm prog.asm
tlink prog.obj
editat ca mai sus şi lansat din lista NC cu <enter>;
Se analizează rezultatele afişte în pagina ecran vizualizată cu <Ctrl><o>;
Se studiază harta memoriei din fişierul cu extensia “.map”;
Se lansează programul de simulare TD.exe;
Se încarcă fişierul executabil: <ALT><F>, Open, <Tab>, selecţie, <enter>;
Se simulează funcţionarea programului: Pas-cu-pas <F7>, Reset <Ctrl><F2>, Vizualizare
ecran utilizator: <Alt><F5>, Ieşirea din programul de simulare <ALT><X>; Schimbarea
ferestrelor <Tab>, etc.

Directivele de compilare
Structura unui program, scris în limbaj de asamblare, trebuie să conţină, alături de
instrucţiunile propriu-zise, anumite “directive” necesare funcţionării programului. Acestea
trebuie specificate la începutul programului şi reprezintă cuvinte “cheie” (care pot fi
recunoscute de asamblor) precedate de caracterul “punct”. Astfel, directiva: “.model small”
specifică modelul de memorie (small), directiva: “.stack 100h” specifică mărimea stivei,
directiva “.data” specifică segmentul de date, directiva “.code” specifică începutul
segmentului de cod (secvenţa de program sau instrucţiuni), iar directiva “end”, ne precedată
de punct, specifică terminarea segmentului de cod.

Programul de simulare a execuţiei (TD.exe)


Segment de cod (program) Registre Flaguri - biţi
Seg. de cod (CS) - adrese pe 4 octeţi (valoare pe 2 indicatori
- cod instrucţiune, operanzi octeţi) (valori binare)
Memorie Stiva
Seg. de date (DS) - adrese pe 2 octeţi, Seg. de stivă (SS)
- date din câte 8 locaţii - contor adrese stivă - date stivă

* Scrieţi şi verificaţi un program care să realizeze următoarele operaţii:


- încărcarea unei constante date pe 8 biţi în registrul AL (AL ← Fh);
- încărcarea unei constante date pe 8 biţi, în registrul AH (AH ← Eh);
- încărcarea registrului BX, la aceeaşi valoare, cu o constantă pe 16 biţi (BX ← EFh).

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