Sunteți pe pagina 1din 6

Lucrarea de laborator - Utilizarea macroasamblorului TASM si a depanatorului TD

Etapele dezvoltarii unui program in limbajul de asamblare sunt urmatoarele: 1. Editarea 2. Asamblarea 3. Linkeditarea 4. Rularea si eventuala depanare Programul in limbaj de asamblare este scris mai intii cu un editor de text oarecare, constituind asa-numitul program sursa. El trebuie sa respecte doua categorii de reguli: Regulile specifice setului de instructiuni ale procesorului pentru care este scris. Aceste reguli cuprind scrierea corecta a mnemonicilor instructiunilor, a operanzilor, diverse prefixe si notatii suplimentare, toate fiind precizate in documentatia referitoare la procesorul respectiv. Reguli specifice programului asamblor cu care se lucreaza. Aceste reguli se refera la declaratii, etichete, directive de asamblare, pseudoinstructiuni, eventual macroinstructiuni, etc. Ele sunt precizate in documentatia aferenta mediului de asamblare. Dupa scrierea programului sursa, el este incarcat in asamblor care il transforma in final in program obiect. In plus, din procesul de asamblare se pot obtine si alte fisiere, care permit vizualizarea programului, a simbolurilor folosite, etc. Programul obiect este la rindul sau preluat de linkeditor, fiind transformat intr-un fisier executabil - programul final. Programul executabil obtinut este testat in diverse moduri, iar in caz de functionare necorespunzatoare din cauze care nu sunt evidente, se incarca intr-un program depanator (debugger). Acesta permite rularea pas cu pas a zonelor neclare din functionarea programului, cu afisarea continua a continutului registrelor si memoriei, permitind astfel localizarea problemelor. Dupa clarificarea lor, este modificat corespunzator programul sursa, si procesul se reia. 1.1 Utilizarea TASM si TD in forma clasica (linie de comanda, DOS) Implementarea firmei Borland pentru limbajul de asamblare cuprinde in principal trei aplicatii, care vor fi utilizate in ordinea mentionarii lor: TASM.EXE- asamblorul (Turbo Assembler) TLINK.EXE - linkeditorul (Turbo Linker) TD - depanatorul de program (Turbo Debugger) Evident, in prealabil trebuie scris (editat) programul sursa, cu ajutorul unui editor (acesta nefiind inclus in pachetul de la Borland). Intr-o fereastra DOS din sistemul de operare Windows (obtinuta in Windows XP din meniul Start-> Programs->Accessories->Command Prompt), comanda de scriere a programului sursa poate fi de exemplu cea de apelare a aplicatiei Wordpad a sistemului: write

in cazul in care se incepe un program nou, ce urmeaza apoi sa fie salvat sub un nume propriu (obligatoriu cu extensia .asm), sau write cale\Nume_Sursa in cazul in care fisierul sursa exista deja si urmeaza a fi editat. Se poate folosi de asemenea aplicatia NOTEPAD.EXE, avand avantajul ca poate sa afiseze in bara de stare (jos) numarul liniei pe care se afla cursorul, lucru util pentru identificarea liniei la care asamblorul gaseste o eroare. Pentru aceasta va trebui bifata in meniul View optiunea Status Bar. Dupa salvarea fisierului sursa el va fi chemat de asamblor cu comanda: Tasm Nume_sursa, Nume_obiect, Nume_listing unde: Nume_sursa este numele ales pentru fisierul sursa editat anterior Nume_obiect este numele sub care va apare fisierul obiect ce va fi transformat in fisier executabil Nume_listing este numele unui fisier optional care contine o varianta cu informatii rezultate din asamblare a fisierului sursa (listing), util pentru o analiza vizuala Aceasta linie de comanda admite si anumite optiuni, vizibile daca se da comanda Tasm fara parametri intr-o fereastra DOS. De exemplu, comanda: Tasm.exe/zi Nume_sursa, Nume_obiect, Nume_listing/l va genera informatie completa pentru depanare (/zi) si fisier listing normal (/l). In cazul in care nu exista erori de sintaxa (sunt respectate cele doua categorii de reguli mentionate) se obtine un mesaj favorabil (ca in figura 1), iar fisierul obiect poate fi prelucrat mai departe.

Figura 1. Exemplu de asamblare fara erori In cazul in care apar erori, se reia editarea fisierului sursa corectindu-se erorile si se face din nou asamblarea. Daca in caseta de asamblare exista linia Error messages: None, se poate trece la linkeditare, folosindu-se comanda: Tlink Nume_obiect, Nume_exefile unde Nume_obiect este numele folosit in comanda precedenta (de asamblarere) pentru fisierul obiect, iar Nume_exefile este numele ce se alege pentru fisierul executabil. Se

pot folosi si aici optiuni de linkeditare, care pot fi vazute rulind comanda Tlink fara parametri intr-o fereastra DOS. De exemplu, comanda Tlink /v Nume_obiect, Nume_exefile va genera informatii simbolice complete pentru depanare. In continuare se poate rula programul executabil obtinut pentru a fi testat (intro fereastra DOS) sau se poate incarca in depanator (de exemplu Turbo Debugger) pentru a fi rulat pas cu pas. In acest caz, comanda va fi: TD Nume_exefile Deoarece aceasta suita de comenzi se va repeta de fiecare data, este comod sa se creeze un fisier batch de exemplu Asamblare.bat cu urmatoarea structura: write.exe %1 pause \tasm\bin\tasm.exe /zi %1,object,listing/l pause \tasm\bin\tlink /v object,exefile pause \tasm\bin\TD exefile Acest fisier automatizeaza comenzile de asamblare, si va fi folosit pentru punerea la punct a unui program sursa care a fost creat initial cu comanda Write si salvat cu un nume avind obligatoriu extensia .asm . Prin dublu click pe acest fisier, se va selecta cu optiunea Browse calea catre fisierul Asamblare.bat si se va bifa caseta Always use this program to open these file. In continuare, un dublu click pe un astfel de fisier va lansa automat secventa de comenzi necesara asamblarii. La finalul fiecarui ciclu de asamblare, se va deschide fereastra depanatorului Turbo Debugger care in general arata ca in figura 1.2

Figura 1.2 Fereastra principala din TurboDebugger 3

Se observa existenta mai multor zone in aceasta fereastra. 1. Zona principala, care cuprinde partea stinga superioara afiseaza codul programului si are urmatoarele cimpuri (de la stinga la dreapta): Adresa efectiva in hexazecimal Codul instructiunii in hexazecimal Mnemonicul instructiunii Operanzii, cu eventualele constante numerice reprezentate in hexazecimal 2. Zona de memorie de date, din partea stinga jos, care cuprinde citeva linii avind structura: Adresa efectiva a segmentului de date - AE Continutul exprimat in hexazecimal al memoriei la AE Continutul hexa al memoriei la AE+1, s.a.m.d pina la AE+7 Echivalentul ASCII al celor 8 octeti aflati la adresele respective 3. Zona de registre, aflata in dreapta ferestrei principale, care afiseaza in hexazecimal pe 16 biti continutul tuturor registrelor 4. 5. Zona de flaguri, in extrema dreapta, in care sunt afisate valorile indicatorilor de conditii dupa fiecare instructiune executata. In coltul din stinga jos este afisat continutul segmentului curent din stiva.

In fereastra principala se observa un cursor, reprezentat prin colorarea diferita a unei linii (in figura chiar prima linie) care poate fi folosit pentru a marca un punct de oprire la o comanda de rulare a progranului. Cu optiunea Run to cursor ( tasta F4) din meniul Run se poate rula automat programul pina la acest punct. Pozitionarea cursorului este obligatorie daca programul nu are un punct de oprire sau iesire (in caz contrar, se continua automat cu interpretarea codurilor gasite in memorie dupa ultima instructiune, iar sistemul se poate bloca). Terminarea se poate face cu o instructiune de salt neconditionat la ea insasi, sau folosirea functiei 4Ch a intreruperii 21, cum se va arata ulterior. Ca alternativa, programul poate fi rulat instructiune cu instructiune, cu tasta F7, urmarindu-se evolutia registrelor, a memoriei si a indicatorilor de conditii dupa fiecare pas. Daca asamblarea a decurs fara erori, in functie de setarile TD, in fereastra acestuia poate sa apara chiar programul obiect care poate fi rulat de asemenea instructiune cu instructiune (figura 1.3).

Figura 1.3. Fisierul obiect in fereastra TD Daca se doreste vizualizarea registrelor si a memoriei, se poate selecta in meniul View comanda CPU, sau alte ferestre. Eventual se poate bifa in meniul Option ->Display options caseta 43/50 Lines si in Option ->Save options caseta Layout. 1.1 Utilizarea TASM si TD in forma integrata (fereastra Windows) Se poate lucra mai comod folosind programul MIAD - Mediu Integrat de Asamblare si Depanare ( Universitatea Hyperion), care integreaza editorul, asamblorul, linkeditorul si depanatorul de la Borland intr-o forma grafica.

Figura 1.4 -Mediul de asamblare

La lansare apare fereastra de editare, in care se va scrie textul programului sursa, ca in figura 1.4. Exista posibilitatea de a deschide un fisier cu extensia .asm din directoarea C:\TASM\BIN, sau de a deschide un sablon care contine elementele mininale care trebuie sa apara intr-un program scris in assembler. Dupa editare, fisierul se va salva peste sel original, sau cu un nume nou, dar in care se va specifica obligatoriu extensia .asm (alfel nu este recunoscut de asamblor). Urmeaza comanda de Asamblare lansata din meniul Executie sau cu butonul din bara de sub meniu, fiind generat un mesaj care arata conditiile de finalizare ale asamblarii. Daca au aparut erori, este afisata o fereastra cu fisierul Listing, indicand tipul erorilor si pozitia acestora, ca in figura 1.5. In caz ca nu sunt erori, listingul nu va fi afisat decat daca este bifata optiunea "Cu afisare listing" din submeniul Executie.

Figura 1.5. Fiserul Listing cu specificarea erori lor Daca exista erori, se revine in fereastra initiala, de editare si se corecteaza acestea. Se trece in continuare la linkeditarea si rularea programului (etapa permisa numai daca asamblarea s-a facut fara erori). Linkeditarea poate conduce direct la rulare, cu comanda Link+Run din submeniul Executie sau cu butonul . Nu se recomanda insa aceasta comanda decat atunci cand programul nou creat este suficient de bine pus la punct pentru a nu bloca sistemul. In fazele initiale ale dezvoltarii programului se recomanda testarea si depanarea cu comanda Link+Debug din submeniul Executie sau cu butonul . Aceasta produce linkeditarea si incarcarea programului in Turbo Debugger, aparand fereastra acestuia, ca in figura 1.2 Daca ordinea operatiilor nu este respectata, programul da mesaje care indica etapele omise. Pe bara de jos a ferestrei principale este afisat numele fisierului curent si stadiul asamblarii acestuia.

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