...ea unor texte sursa, scrise in diverse limbaje de programare. Modulele care presupun algoritmi complicati sau structuri de date complexe sunt scrise in limbaje de nivel inalt, iar cele care sunt critice din puctul de vedere al timpului de executie si al resurselor ocupate sunt scrise in limbaj de asamblare. In plus, exista anumite resurse ale calculatorului la care accesul nu este realizabil din limbajele de nivel inalt.Un alt motiv pentru care se recomanda si experienta programarii in limbaj de asamblare este acela ca un specialist in informatica trebuie sa cunoasca mecanisele fine ale procesorului pntru a le folosi in diferite aplicatii.De asemenea, uneori, depanarea unui program poate trece de textul sursa si ajunge la depanarea codului obiect, caz in care este necesara cunoasterea libajului de asamblare.Motivul pentru care secventele critice, ca timp de executie si resurse, se scriu in limbaj de asamblare si nu in limbaje de nivel inalt, este urmatorul compilatorul are cunostinte limitate asupra intregului program, dar el trebuie a genereze un set generalizat de instructiuni masina , care vor lucra in toate sitatiile, dar nu vor fi optime in situatii particulare.Programarea in limbaj de asamblare este mult mai dificila decat cea intr-un limbaj de nivel inalt, deoarece programatorul trebuie sa cunoasca, pe langa limbajul de asamblare, si structura interna a calculatorului registre, organizarea si adresarea memoriei, porturi de intrare-iesire, etc.Limbajul de asamblare ASM permite intelegerea la nivel de amanunt a ceea ce se intampla in realitate intr-un calculator. Codul generat in ASM se executa foarte rapid.si permite accesul la hardare, acces care nu este disponibil in limbajele de nivel inalt.Unitatea de baza a informatiei memorate in calculator este bitul. Un bit reprezinta o cifra binara, deci poate avea valorile 0 sau 1. Modelul hardare corespunzator este acela de bistabil. Un bistabil este, deci un circuit electronic cu doua stari stabile, configurate 0 sau 1 , capabil sa memoreze un bit de informatie.Un grup de bistabili formeaza un registru. De exemplu, 8 bistabili formeaza un registru de 8 biti. Iformatia care se poate memora intr-un asemenea registru poate fi codificata binar, de la valoarea 0000.0000, pana la valoarea 1111.1111. Numarul combinatiilor care pot fi memorate este 256 EMBED Equation.3 . Aceste combinatii se numesc octeti sau bytes daca n8, respectiv cuvinte daca n16, 32, etc..Memoria unui calculator este vazuta ca o succesiune de octeti. Fiecare octet are asociata o adresa de memorie. Pentru a adresa memoria, e nevoie de un registru de adrese a carui lungime determina dimensiunea maxima a memoriei. Zonele de memorie vor fi reprezentate grafic pe verticala, ca succesiuni de octeti sau cuvinte, de la adrese mici catre adrese mari.1.2 TIPURI DE DATE UTILIZATE IN LIMBAJ DE ASAMBLARETipurile de date suntByte 1 octet ocupa un octet si poate fi reprezentat atat in memoria interna cat si intr-un registru de 8 biti al procesorului. Interpretarile tipului byte pot fi intreg pe 8 biti caracterASCII.Directiva pentru definirea datelor de acest tip este db define byte.ord 2 octeti ocupa doi octeti si poate fi reprezentat atat in memoria interna cat si intr-un registru de 16 biti al procesorului. Interpretarile tipului ord pot fi intreg pe 16 biti cu sau fara semn secventa de doua caractere ASCII adresa de memorie de 16 biti.Directiva pentru definirea datelor de acest tip este d define ord.Double ord 4 octeti ocupa 4 octeti si poate fi reprezentat atat in memoria interna cat si intr-opereche de registre de 16 biti ale procesorului sau intr-un registru de 32 biti. Interpretarile tipului dord pot fi intreg pe 32 biti cu sau fara semn numar real in simpla precizie adresa de memorie de 32 biti. Directiva pentru definirea datelor de acest tip este dd define double ord.Quand ord 8 octeti - ocupa 8 octeti si poate fi reprezentat atat in memoria interna cat si intr-o pereche de registre de 32 biti. Interpretarile tipului qord pot fi intreg pe 64 biti cu sau fara semn numar real in dubla precizie.Directiva pentru definirea datelor de acest tip estedq define quand ord.Ten Bytes 10 octeti ocupa 10 octeti si poate fi reprezentat atat in memoria interna cat si intr-unul din registrele coprocesoarelor matematice 80x87. Interpretarile tipului tbyte pot fi numar intreg reprezentat ca secventa BCD numar real in precizie extinsa.Directiva pentru definirea datelor de acest tip este dt define ten bytes.2. FORMATUL PROGRAMELOR EXECUTABILESistemul de operare MS-DOS permite doua formate de memorare a programelor, pe suport extern, pentru programele executabile, si anume formatele .EXE si .COM.In cazul formatului .EXE fisierul contine programul intr-un format realocabil, precum si un antet care contine informatii necesare pentru realocare. Formatul .COM, caracterizat prin faptul ca programul inclusiv datele si stiva nu ocupa mai mult de un segment, contine o imagine memorie a programului.2.1 FORMATUL .COMAcest program trebuie sa inceapa cu directiva ORG 100H, deoarece toate registrele sunt pozitionate pe adresa de inceput a prefixului de program PSP adresa de start a programului este la aceasta adresa, si eticheta acesteia este precizata in directiva END. Datele pot fi plasate oriunde in segment, dar, de obicei, se plaseaza la inceput. Stiva este initializata, automat, la sfarsitul segmentului ocupat de program. Programul se poate incheia cu instructiunea INT 20H sau RET.2.2 FORMATUL .EXEFisierul ce contine un astfel de program este cu cel putin 768 octeti mai mare decat programul executabil insa, la incarcarea in memorie pentru executie, el va ocupa acelasi spatiu. Registrele DS si ES sunt initializate cu adresa de segment corespunzatoare inceputului de prefix de program CS este initializat la inceputul programului, deci dupa prefix, si deci va fi cu 10H mai mare decat acestea. Registrele segment DS, ES si SS, precum si registrul SP, trebuiesc initializate de utilizator, conform programului.Incheierea unui program .EXE se face prin executia unei instructiuni RET, in context FAR aceasta va realiza un salt la prima instructiune din prefixul programului, adica se va executa inaintea instructiunii INT 20H.3. INSTRUCTIUNI DE TRANSFER AL CONTROLULUI DE PROGRAM Secventa de executie a instructiunilor dintr-un program este determinata de continutul registrului de segment de cod CS si de pointerul de instructiuni IP. Instructiunile de transfer al controlului programului opereaza asupra lui IP si CS. La aparitia unui astfel de transfer, coada de instructiuni nu mai contine instructiunea urmatoare si EU va transmite noua adresa la BU, care va obtine instructiunea urmatoare direct din memorie, utilizand noile valori pentru CSIP instructiunea va fi transferata catre IU si UE pentru executie si BU, apoi incepe reumplerea cozii de la noua locatie.Exista patru tipuri de instructiuni de transfer al controluluiinstructiuni de transfer neconditionatinstructiuni de transfer conditio...
Download