Limbajele de programare sunt rezultatul unei evolutii, determinata in principal de evolutia structurii si arhitecturii calculatoarelor si a domeniilor de aplicatii. Fiecare calculator dispune de un limbaj propriu, numit limbaj masina. Limbajul masina utilizeaza un alfabet binar ({0,1}) pentru reprezentarea instructiunilor masina. Fiecare instructiune masina este reprezentata de o secventa de 0 si 1 conform unor reguli specifice de formare a instructiunilor in limbajul respectiv. Un program intr un asemenea limbaj masina poate fi reprezentat ca o secventa de 0 si 1.
Instructiunile masina ale limbajului descriu operatii aritmetice si logice, operatii de transfer date intre diversele resurse ale masinii de baza, operatii de transfer control, etc. Limbajul masina al calculatorului didactic va fi definit acum, dupa faza de elaborare a unitatii de comanda a acestuia. De altfel, instructiunile masina sunt citite, interpretate si executate de catre unitatea de comanda a calculatorului didactic asa cum s-a vazut in capitolul precedent.
Programul in limbaj masina poarta numele de "PROGRAM OBIECT" si reprezinta forma executabila a acestuia. Elaborarea unui program in limbaj masina este o operatie extrem de dificila, iar in cazul unor arhitecturi de calculatoare de tip CISC (Complex Instruction Set Computer) practic imposibila. Pentru a permite elaborarea de programe care sa utilizeze resursele calculatorului, foarte aproape de posibilitatile oferite de limbajele masina si, in acelasi timp, sa elimine o buna parte din neajunsurile acestuia, s a creat limbajul de asamblare.
Fiecarei instructiuni masina i se asociaza o instructiune in limbaj de asamblare (dar nu intotdeauna corespondenta este de 1 la 1), numai ca, in loc de codificarea binara a informatiilor cuprinse intr o instructiune masina, se foloseste o codificare simbolica.
Limbajul de asamblare se caracterizeaza prin aceea ca:
- principalele sale operatii sunt operatiile de baza ale calculatorului;
- codurile operatiilor se specifica prin mnemonice asociate;
- localizarea instructiunilor si a operanzilor se face simbolic.
Limbajul de asamblare are o serie de avantaje, dar si dezavantaje.
Dintre avantaje amintim:
- posibilitatea de control foarte intim a resurselor calculatorului;
- eficienta maxima in implementarea unor functii;
Dintre dezavantaje amintim:
- instructiunile specifica operatii elementare, ceea ce conduce la un efort mare in elaborarea programelor complexe;
- nu este adecvat pentru implementarea prelucrarilor matematice;
- fiind specific unui tip de calculator, programele nu sunt portabile;
- elaborarea programelor in limbaj de asamblare necesita cunostinte despre structura si arhitectura calculatorului;
- productivitatea unui programator exprimata in numar de linii de program sursa este practic aceeasi indiferent de limbajul de programare utilizat. in mod corespunzator, efortul de scriere pentru o aceasi aplicatie este mult mai mare in cazul in care se utilizeaza limbajul de asamblare.