F.A.Q. di #asm


Ok, dopo un po' di tempo mi sono messo a lavorare anche sulle FAQ di #asm. Più che altro, ho letto l'ennesima domanda "Voglio imparare l'assembler, da dove inizio?", e mi sono reso conto che le Frequently Asked Question sono veramente necessarie.
Queste FAQ conterranno (per ora) risposte a domande "base" come quella sopra.


1. Cosa sono asm, assembler, assembly?

Partiamo dal fondo della domanda :) L'assembly è un linguaggio di programmazione "a basso livello": al livello, cioè, dell'hardware della macchina sulla quale si sta lavorando.
La macchina, il computer, ragiona solo con 0 e 1; un'istruzione "capibile" dal computer (un'istruzione in linguaggio macchina) è una sequenza di 0 e 1. Logicamente, programmare scrivendo una sequenza di 0 e 1 è un po' (molto) complicato; per questo è stato creato il linguaggio assembly.

Le istruzioni del linguaggio assembly sono semplici traduzioni delle istruzioni del linguaggio macchina (ad una istruzione assembly, corrisponde una istruzione del linguaggio macchina). Il vantaggio consiste nel fatto che le istruzioni assembly sono facilmente capibili da un programmatore, in quanto hanno dei nomi comprensibili e descrittivi (ad esempio, "add" somma qualcosa, "cmp" confronta (to compare, in inglese) ).

L'assembler è un programma che prende un listato di istruzioni assembly e produce un file che contiene linguaggio macchina (un file oggetto o un eseguibile). Un assembler quindi converte le istruzioni assembly in istruzioni del linguaggio macchina.

Asm è l'estensione (di default) dei file che contengono istruzioni assembly. "Asm" è però anche usato per indicare "assembler" o "assembly".


2. Voglio imparare a programmare in assembly, da dove inizio?

Le informazioni su Internet sono tantissime. Basta andare in un qualunque motore di ricerca e digitare "asm tutorial" o "assembly tutorial" per trovare tanti documenti. Certo, non tutti i tutorial sono ugualmente validi; per iniziare, io consiglio sempre "The Art of Assembly Language", un punto di riferimento per un programmatore asm. Se preferite qualcosa di più corto, ci sono tanti altri tutorials (su Itassembly dovreste trovare tutto quello di cui avete bisogno).

Oltre a documenti, libri e tutorial, vi serve un assemblatore: secondo me l'A86 è perfetto per iniziare a fare programmi Dos, perchè è abbastanza semplice da usare. Per iniziare a programmare in assembly sotto Linux, consiglio il Nasm; se invece volete programmare sotto win32, una buona scelta è il Masm.