microprocesor) are propriul său limbaj maşină, care este
exprimat în alfabetul binar{0,1}. Acest limbaj se defineşte în etapa de proiectare a unităţii de comandă a procesorului(calculatorului). Unitatea de comandă este cea care citeşte instrucţiunile din memorie(fetch), le decodifică şi le execută. Aceste instrucţiuni reprezintă operaţii elementare: transfer de date între memorie şi unitatea de prelucrare, operaţii aritmetice, logice sau de modificare a fluxului de comandă etc. Un program în cod (limbaj) maşină mai este denumit şi cod obiect. Limbajul de asamblare reprezintă o codificare simbolică a codului maşină. Aceste coduri simbolice sunt denumite mnemonici. Limbajul, care este foarte aproape de structura maşinii, are următoarele avantaje: oferă posibilitatea utilizării tuturor resurselor şi facilităţilor calculatorului permite implementarea mai eficientă(cu mai puţine resurse şi mai rapid) a anumitor funcţii Dar are şi unele dezavantaje: programele nu sunt portabile, deoarece fiecare procesor are propriul său limbaj de asamblare, programele nu pot fi executate pe alt tip de procesor, din altă familie solicită un efort mult mai mare din partea programatorului pentru elaborarea unor aplicaţii complexe. De ex., un fişier sursă care conţine un program sursă în limbaj de asamblare este mult mai mare decât un fişier conţinând un program echivalent într-un limbaj de nivel înalt(Pascal sau C). În schimb, programul obiect obţinut pentru varianta în limbaj de asamblare este mult mai mic şi în consecinţă mai rapid. Programarea în limbaj de asamblare necesită: cunoaşterea structurii şi arhitecturii calculatorului cunoaşterea sistemului de operare şi a asamblorului.
Asambloarele sunt programe care translatează
programele sursă, scrise în limbaj de asamblare, în cod maşină. Operaţia de asamblare se realizează în doi paşi: La primul pas se generează o tabelă de simboluri, ce va conţine toate numele simbolice din program, exceptând numele simbolice externe(definite în alte module), instrucţiuni şi directive de asamblare. În această etapă asamblorul contorizează instrucţiunile şi datele şi asociază numelor simbolice o poziţie relativă(deplasament) faţă de începutul programului, ca şi cum programul ar începe de la adresa 0. În realitate, programul nu se încarcă în memoria RAM de la adresa 0, care este o zonă folosită de sistemul de operare, ci adresa de la care se încarcă este furnizată de sistemul de operare, în funcţie de spaţiul de memorie disponibil. La pasul al doilea se obţine programul obiect, translatând instrucţiune cu instrucţiune programul şi înlocuind în instrucţiunile respective numele simbolice cu valorile numerice asociate în tabela de simboluri. Programul executabil se obţine în urma etapei editării de legături, care permite legarea mai multor module . Elementele cu care lucrează un asamblor sunt: Etichete – nume scrise de utilizator, cu ajutorul cărora acesta se poate referi la anumite date sau zone de memorie. Instrucţiuni – scrise sub forma unor mnemonice care sugerează acţiunea, fiecare instrucţiune a limbajului de asamblare corespunzând unei instrucţiuni maşină. Asamblorul generează octeţii care codifică instrucţiunea respectivă. Directive – reprezintă nişte indicaţii date asamblorului în diverse scopuri cum ar fi: definirea unor segmente, machete de macrogenerare, de rezervare a unei zone de memorie în vederea folosirii ulterioare. Contor de locaţii –este un număr întreg gestionat de asamblor. În fiecare moment, valoarea contorului coincide cu numărul de octeţi generaţi corespunzător instrucţiunilor şi directivelor deja întâlnite.(Utilizatorul poate utiliza această valoare prin simbolul ’$’). Principalele servicii oferite de un asamblor: traducerea din scrierea cu mnemonice în cod binar; generarea de octeţi folosind pseudoinstrucţiuni; calculul unor adrese de salt(deplasamente) folosind operaţiii cu etichete; evaluarea în timpul translatării a unor expresii aritmetice simple posibilitatea definirii li utilizării macroinstrucţiunilor detectarea erorilor de sintaxă. Etapele care trebuie parcurse pentru realizarea şi execuţia unui program în limbaj de asamblare sunt: Editarea programului sursă ce are extensia .asm şi care poate fi realizată cu orice editor(DN, NC, WC, Tpascal sau TC etc.) Asamblarea, furnizează programul obiect, cu extensia .obj, dacă apar erori în faza de asamblare, se reia editarea programului, corectând erorile respective. Asamblarea se face cu asambloarul tasm.exe pr1.asm → pr.obj Editarea de legături.
tlink.exe pr1.obj → pr.exe sau pr.com
Testarea. Fişierul executabil obţinut poate fi testat şi depanat utilizând unul din utilitarele TurboDebugger(TD) sau Dedug(ger) td.exe pr.exe Pentru a nu relua de fiecare dată secvenţa de comenzi, se poate edita un fişier de comenzi asm.bat pentru asamblarea, editarea de legături tasm.exe pr1.asm tlink.exe pr1.obj pr1.exe Pentru obţinerea unui fişier listing se utilizează comanda tasm pr1,,pr1