Assembleur


Un langage d'assemblage (ou langage assembleur ou simplement assembleur par abus de langage, abrégé ASM) est un langage de bas niveau -proche du langage machine) qui peut être directement interprété par le processeur de l'ordinateur tout en restant lisible par un humain initié.

L'assembleur a été créé pour faciliter le travail des programmeurs. Il consiste à représenter les combinaisons de bits employées en langage binaire par des symboles appelés mnémoniques (du grec mnêmonikos, relatif à la mémoire), c'est à dire faciles à retenir.

 

 

Par exemple, un processeur de la famille x86 reconnaît une instruction du type

10110000 01100001

 

En langage assembleur, cette instruction sera traduite par un équivalent plus facile à comprendre pour le programmeur :

mov %al,$0x61
 

Ce qui signifie "mettre la valeur hexadécimale 61 (97 en décimal) dans le registre 'AL'.)

Contrairement à un langage de haut niveau, il y a (excepté le cas des macros, ou macro-instructions) une correspondance un à un entre le code assembleur et le langage machine, ainsi il est possible de traduire le code dans les deux sens sans perte d'information. La transformation du code assembleur en langage machine est accomplie par un programme nommé assembleur, dans l'autre sens par un programme désassembleur. Les opérations s'appellent respectivement assemblage et désassemblage. Dans un programme réel en assembleur, c'est un peu plus complexe que cela (on peut donner des noms aux routines, aux variables), et on n'a plus cette correspondance. Sur les premiers ordinateurs, la tâche d'assemblage était accomplie manuellement par le programmeur.

Chaque microprocesseur a son propre langage machine, et donc son propre langage d'assemblage (l'exemple ci-dessus est pour le x86). Ces différents microprocesseur ont des tailles de registres différentes et un jeu d'instructions plus ou moins étendu, selon leur conception et leur utilisation.

De plus, plusieurs groupes de mnémoniques ou de syntaxes de langage assembleur peuvent exister pour un seul ensemble d'instructions, créant ainsi des macro-instructions.