linguaggio assembler
Linguaggio di programmazione le cui istruzioni sono composte da stringhe alfanumeriche corrispondenti in modo biunivoco alle istruzioni elementari dell’unità di elaborazione centrale (CPU, Central processing unit) di un calcolatore elettronico. Tale linguaggio si pone pertanto a un livello intermedio tra un linguaggio di alto livello (scritto con un linguaggio vicino a quello naturale) e il linguaggio macchina (costituito da una sequenza logica di 0 e 1 comprensibili alla CPU). In realtà, il nome corretto di tale linguaggio risulta essere ‘Assembly’, dovendosi invece chiamare assembler (assemblatore) il programma in grado di eseguire la traduzione da linguaggio Assembly a linguaggio macchina. Ciò comporta sia la traduzione di tutte le istruzioni scritte in Assembly sia la decodifica di tutte le locazioni di memoria coinvolte nel programma. Infatti, poiché ogni istruzione simbolica (per es., LOAD, ADD o STORE) scritta in linguaggio assemblatore viene convertita esattamente in un’istruzione binaria, in linguaggio macchina occorre un programma, l’assemblatore, che trasforma l’intero codice sorgente in un codice leggibile dalla macchina detto codice oggetto, prodotto il quale le istruzioni possono essere caricate in memoria ed eseguite dal processore. I primi assemblatori comparvero negli anni Cinquanta del secolo scorso come superamento della programmazione direttamente in linguaggio macchina (detto linguaggio di prima generazione), la quale manifestava problemi legati alla scarsa leggibilità delle sue istruzioni, all’uso di locazioni di memoria esclusivamente numeriche (e quindi non rinominabili), alla difficoltà di modifica (modificare un’istruzione significa modificare tutte le seguenti), alle complicazioni legate alla gestione dei dati. Grazie all’introduzione del linguaggio assemblatore (detto linguaggio di seconda generazione), che sfruttava codici e indirizzi di memoria simbolici anziché numerici e la possibilità di scrivere pseudo-operazioni (per es., per la generazione di dati), si ottenne un ambiente di programmazione più orientato all’utente, che impresse una spinta decisiva per lo sviluppo successivo dei linguaggi di programmazione ad alto livello.