AVANTAJELE PROGRAMARII IN ASM



AVANTAJELE PROGRAMARII IN ASM


Exista, intr-adevar, o tendinta justificata de indepartare de limbajul de asamblare, dar nu de renuntare la el, intrucat multe medii integrate de dezvolare de programe (IDE - Integrated Development Enviroments) si compilatoare de limbaje de nivel inalt (C, Pascal, Basic, Fortran, etc.) prezinta facilitati de inserare de linii scrise direct in limbaj de asamblare.



Prezentarea  posibilitatilor oferite de limbajele de programare:



Cu toate acestea, exista si numeroase componente ale sistemului de operare si ale altor aplicatii, care sunt considerate critice si performante, iar acestea au fost si mai sunt realizate in limbaj de asamblare, deoarece aceste secvente trebuie sa consume cat mai putin timp si, eventual, cat mai putina memorie. Aceasta performanta este realizata prin utilizarea cat mai eficienta a instructiunilor si a structurii procesorului.


In concluzie, la ora actuala programele sunt hibride: ele contin linii scrise in limbaje de nivel inalt, dar pot contine si linii in limbaj de asamblare. Pentru a rezolva astfel de situatii, implementarile limbajelor de nivel inalt accepta introducerea in textul sursa de linii scrise in limbaj de asamblare sau legarea intr-un singur modul a unor module obiect provenite de la compilarea 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 hardware, 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 hardware 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 (). Aceste combinatii se numesc octeti sau bytes (daca n=8), respectiv cuvinte (daca n=16, 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.