Che cos’è il linguaggio assembly?

Un linguaggio assembly è un modo di basso livello per istruire un computer a svolgere un’attività. I computer non comprendono intrinsecamente le istruzioni delle persone. Al livello più elementare, i computer comprendono le istruzioni in linguaggio binario, ovvero sequenze di zero e uno. Tuttavia, il linguaggio binario o il linguaggio macchina è estremamente complicato da programmare. Il linguaggio assembly è stato inventato come rappresentazione simbolica delle sequenze sottostanti di zero e uno.

Supponiamo di programmare un gioco che, a una certa azione, assegna al giocatore cinque punti. Il computer conserva lo spartito in una determinata posizione; le posizioni sono un luogo di archiviazione all’interno della CPU, chiamato “registro”, o in uno spazio nella memoria. Il computer comprende le posizioni e le azioni di basso livello chiamate operazioni. Quindi se il punteggio è tenuto al registro RA, allora comprende il comando, 0101 1100 0000 0101, dove i primi quattro numeri indicano l’operazione AGGIUNGI, i successivi quattro indicano il registro RA, e gli ultimi otto indicano il numero 5.

Originariamente i computer dovevano essere codificati in questo modo; il linguaggio macchina è lento, soggetto a errori e può essere molto difficile per una persona capire cosa sta cercando di codificare un’altra persona. Così i programmatori di computer hanno creato un linguaggio in cui le operazioni, i luoghi, i numeri, ecc., possono essere compresi meglio. Quindi il comando equivalente per l’esempio precedente sarebbe ADD RA 5. In questo esempio ipotetico, vengono utilizzati mnemonici per l’operazione ADD e il registro RA, e il numero 5 è scritto in cifre.

Un programma chiamato assembler converte il codice in linguaggio assembly nel linguaggio macchina sottostante. In passato, anche questa conversione utilizzava costose risorse di elaborazione, quindi i codici operativi, gli opcode in breve, come Subtract erano abbreviati in SUB, Copy-Move era abbreviato in MOV e in alcuni casi anche ADD era abbreviato in A.

Il linguaggio assembly è per lo più un sottile strato sopra la struttura della macchina. Quindi gli opcode, i registri e l’intero linguaggio dipendono molto dalla famiglia di CPU. Quindi, la famiglia Intel x86 ha codici operativi come MOV, MOVSX e MOVZX, mentre IBM 360 ha codici operativi come MVI, MVC, MVZ. Quando si progetta un computer o una CPU, i progettisti specificano il linguaggio macchina inclusi gli opcode.
I programmatori sono presto passati a linguaggi “di alto livello” come COBOL, Pascal, C++ e SQL. I compilatori convertono il codice scritto in questi linguaggi in linguaggio macchina. Tuttavia, il codice assembly viene ancora utilizzato per CPU specializzate o per garantire la velocità dalle console di gioco ai sistemi per auto.