Pentru a rezolva o problema care nu este rezolvata de programele curente, un dezvoltator de aplicatii care a ajuns la concluzia ca trebuie sa intervina la nivelul masinii de calcul, are nevoie sa scrie o lista de instructiuni de masina (X86, ALPHA, 8051, etc.) pentru implementarea algoritmilor proprii. Acest text lista cu linii de instructiuni se va intocmi intr-o reprezentare standardizata de fisier sursa, conform cu un limbaj de asamblare al microprocesorului dat.
Asamblorul (figura 2.1), este un program din domeniul utilitarelor de sistem destinate dezvoltatorilor de aplicatii, dedicat unui limbaj de asamblare pentru un microprocesor dat. Asamblorul prelucreaza un text sursa pentru a construi un fisier in cod obiect cu instructiuni scrise in codul masinii. Fisierul obiect, cu modificari minime, este adus in memoria principala a microprocesorului si este lansat in executie.
Limbajul de asamblare in care este scris fisierul sursa include un set de reguli de manipulare a unui set stabilit de cuvinte, pentru a manevra mnemonici de instructiuni masina, operatori, adrese si variabile, apeluri de gestiune proprie a programului si a datelor. Asamblarea este o operatie univoca, adica, pornind de la acelasi program sursa, se obtine intotdeauna acelasi fisier obiect. Deoarece se poate obtine un acelasi program obiect corect asamblat pornind de la programe sursa diferite, asamblarea nu este biunivoca.
Operatia inversa asamblarii este dezasamblarea. Uzual, un dezasamblor atribuie mnemonici instructiunilor codului obiect dintr-un fisier obiect si atribuie etichete operanzilor instructiunilor cu referiri la adrese de program, construind un fisier sursa. Sarcina cea mai dificila la operatia de dezasamblare consta in decelarea zonelor de date de cele de cod, care de obicei se face interactiv. Dezasamblarea este utila in depanarea unui program obiect al carui program sursa nu este disponibil.