Assembleur

Page d'aide sur l'homonymie Cet article concerne le langage d'assemblage. Pour le programme produisant un exécutable à partir d'un source écrit dans ce langage, voir Programme assembleur.
Page d'aide sur l'homonymie Pour le métier de fabrication des ordinateurs, voir Assembleur d'ordinateur.

Un langage d'assemblage ou langage assembleur est, en programmation informatique, un langage de bas niveau qui représente le langage machine sous une forme lisible par un humain. Les combinaisons de bits du langage machine sont représentées par des symboles dits «  mnémoniques » (du grec mnêmonikos, relatif à la mémoire), c'est-à-dire faciles à retenir. Le programme assembleur convertit ces mnémoniques en langage machine, ainsi que les valeurs (écrites en décimal) en binaire et les libellés d'emplacements en adresses, en vue de créer par exemple un fichier objet ou un fichier exécutable.

Dans la pratique courante, le même terme assembleur est utilisé à la fois pour désigner le langage d'assemblage et le programme assembleur qui le traduit. On parle ainsi de « programmation en assembleur ».

La traduction une fois pour toutes par beaucoup d'interpréteurs de chaque nom de variable rencontré dans une instruction (évoluée) par la position mémoire associée et de chaque constante (écrite par l'utilisateur en décimal) en binaire est typique d'une opération d'assemblage, bien que le nom d'assembleur ne soit pas couramment utilisé dans ce cas précis.

Histoire

La carte fait apparaître plusieurs zones de colonne pour correctement séparer le numéro de ligne, l'étiquette ou label, l'instruction et les opérandes.
Carte formatée pour être perforée pour l'assembleur de l'IBM 1620.

Les programmes de l' EDSAC (1949) [1], premier calculateur à programmes enregistrés, étaient rédigés en utilisant des mnémoniques alphabétiques d'une lettre pour chaque instruction. La traduction était alors faite à la main par les programmeurs, une opération longue, fastidieuse et entachée d'erreurs.

Le premier programme assembleur a été écrit par Nathaniel Rochester pour l' IBM 701 (le premier ordinateur commercialisé par IBM) en 1954.

Les langages d'assemblages ont éliminé une grande partie des erreurs commises par les programmeurs de la première génération d'ordinateurs, en les dispensant de mémoriser les codes numériques des instructions et de faire des calculs d'adresses. La programmation en assembleur était alors utilisée pour écrire toutes sortes de programmes.

Dans les années 1970-80, l'utilisation de l'assembleur pour écrire des applications a été très largement supplantée par l'emploi de langages de programmation de haut niveau : Fortran, COBOL, PL/I, etc. : la puissance des machines le permettait et consacrer quelques minutes de temps machine à une compilation pour économiser quelques heures de temps de programmeur était une opération rentable, même si les compilateurs de l'époque fournissaient un code moins performant (plus volumineux et souvent plus lent). Par ailleurs, ces langages de haut niveau permettaient de s'affranchir de la dépendance à une architecture matérielle unique.

Les systèmes d'exploitations ont été écrits en langage d'assemblage jusqu'à l'introduction de MCP de Burroughs, en 1961, qui était écrit en ESPOL, dialecte d' Algol.

L'assembleur est revenu quelque peu en faveur sur les premiers micro-ordinateurs, où les caractéristiques techniques (taille mémoire réduite, puissance de calcul faible, architecture spécifique de la mémoire, etc.) imposaient de fortes contraintes, auxquelles s'ajoute un facteur psychologique important, l'attitude « hobbyiste » des premiers utilisateurs de micro-ordinateurs, qui ne se satisfaisaient pas de la lenteur des programmes écrits avec le BASIC interprété généralement fourni avec l'ordinateur.

Des gros programmes ont été écrits entièrement en assembleur pour les micro-ordinateurs, comme le système d'exploitation DOS de l' IBM PC (environ 4000 lignes de code), et le tableur Lotus 1-2-3 (son rival Multiplan, qui existait déjà sous CP/M, était écrit en C). Dans les années 1990, c'était aussi le cas pour la plupart des jeux pour consoles vidéo (par exemple pour la Mega Drive ou la Super Nintendo).

Other Languages
العربية: لغة تجميع
azərbaycanca: Assembler
беларуская (тарашкевіца)‎: Мова асэмблера
български: Асемблерен език
bosanski: Asembler
Esperanto: Asembla lingvo
עברית: שפת סף
magyar: Assembly
Bahasa Indonesia: Bahasa rakitan
íslenska: Smalamál
italiano: Assembly
ქართული: ასემბლი
한국어: 어셈블리어
Kurdî: Assembly
lumbaart: Assembly
lietuvių: Asemblerio kalba
latviešu: Asamblervaloda
Bahasa Melayu: Bahasa himpunan
Nederlands: Assembleertaal
norsk: Assembler
português: Assembly
srpskohrvatski / српскохрватски: Asemblerski jezik
Simple English: Assembly language
slovenščina: Zbirni jezik
shqip: Assembly
српски / srpski: Асемблер
svenska: Assembler
тоҷикӣ: Ассемблер
українська: Мова асемблера
Tiếng Việt: Hợp ngữ
中文: 汇编语言