Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

Utilizarea macroasamblorului TASM si a depanatorului TD

calculatoare



+ Font mai mare | - Font mai mic



Utilizarea macroasamblorului TASM si a depanatorului TD

Etapele dezvoltarii unui program in limbajul de asamblare sunt urmatoarele:



Editarea

Asamblarea

Linkeditarea

Rularea si eventuala depanare

Programul in limbaj de asamblare este scris mai intai cu un editor de text oarecare, constituind asa-numitul program sursa. El trebuie sa respecte doua categorii de reguli:

Reguli specifice setului de instructiuni ale procesorului pentru care este scris. Aceste reguli cuprind scrierea corecta a mnemonicelor 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 randul 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, permitand 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 caleNume_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.1 - Exemplu de asamblare fara erori

In cazul in care apar erori, se reia editarea fisierului sursa, corectandu-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 ruland 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 (intr-o 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

tasmbintasm.exe /zi %1,object,listing/l

pause

tasmbintlink /v object,exefile

pause

tasmbinTD 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 avand 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 this 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 exemplul din figura 1.2

Figura 1.2 - Fereastra principala din TurboDebugger

Se observa existenta mai multor zone in aceasta fereastra.

Zona principala, care cuprinde partea stanga superioara afiseaza codul programului si are urmatoarele campuri (de la stanga la dreapta):

  • Adresa efectiva in hexazecimal
  • Codul instructiunii in hexazecimal
  • Mnemonicul instructiunii
  • Operanzii, cu eventualele constante numerice reprezentate in hexazecimal

Zona de memorie de date, din partea stanga jos, care cuprinde cateva linii avand 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 pana la AE+7
  • Echivalentul ASCII al celor 8 octeti aflati la adresele respective

Se poate afisa o fereastra suplimentara pentru vizualizarea unei zone mai mari de memorie cu comanda 'Dump' din submeniul View. Aceasta va apare, in general, asa cum se vede in figura, in partea de jos a ecranului.

Zona de registre, aflata in dreapta ferestrei principale, care afiseaza in hexazecimal pe 16 biti continutul tuturor registrelor

Zona de flaguri, in extrema dreapta, in care sunt afisate valorile indicatorilor de conditii dupa fiecare instructiune executata.

In coltul din stanga 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 pana 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 21h, 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.2 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.

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:TASMBIN, 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 cel original, sau cu un nume nou, dar in care se va specifica obligatoriu extensia .asm (alfel nu este recunoscut de asamblor).

Figura 1.4 -Mediul de asamblare

Urmeaza comanda de Asamblare +Link 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.

Daca exista erori, se revine in fereastra initiala, de editare, si se corecteaza acestea.

Se trece in continuare la rularea programului (etapa permisa numai daca asamblarea s-a facut fara erori). Se poate face rularea directa, cu comanda 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 Debug din submeniul Executie sau cu butonul . Aceasta produce incarcarea programului in Turbo Debugger, aparand fereastra acestuia, ca in figura 1.2

Figura 1.5 - Fiserul Listing cu specificarea erorilor

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.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1835
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved