Académique Documents
Professionnel Documents
Culture Documents
I - Langage machine
Les langages de haut niveau comme python doivent être « traduits » en instructions directement
compréhensible par l’électronique du CPU, c’est-à-dire en binaire. Ainsi, les programmes stockés
dans la mémoire centrale d’un ordinateur sont des suites de mots constituées de 0 et de 1 que l’on
appelle langage machine.
Il est parfois nécessaire d'écrire directement des programmes en langage machine, par exemple
quand un calcul précis doit être réalisé le plus vite possible par la machine. Pour cela, il n'est pas
raisonnable (voir possible) d’écrire directement les mots binaires du langage machine. On utilisera
alors un langage assembleur, qui est le langage le plus bas niveau d'un ordinateur lisible par un
humain. Ce langage fournit un certain nombre de facilités pour programmer, comme des étiquettes
symboliques pour identifier des points de programme.
Le langage machine exprime les instructions des programmes par des combinaisons de bits
10110000 01100001
En langage d'assemblage, ces instructions sont représentées par des symboles mnémoniques bien
plus lisibles
mov $0x61, %al
(qui signifie de mettre la valeur hexadécimale 61 (97 en décimal) dans le registre 'AL'.)
1
Cours Assembleur NSI
2.2 instructions de calcul
L’assembleur x86 permet d’écrire les opérations arithmétiques (additions, soustractions…) et les
opérations logiques (et, ou …). Voici l’addition :
add eax, 10 ; ajoute 10 à eax
add eax, ebx ; ajoute le contenu de ebx à eax
add [x], eax ; ajoute eax à x
add ebx, [x] ; ajoute x à ebx
Enfin, il existe une instruction jmp de saut non conditionnel (saut systématique)
jmp etiq ; saute à la ligne qui suit l’étiquette « etiq »
2.4 exemple
Exercice :
1/ Quel est le rôle du registre ebx ?
2/ Que calcule la variable eax ?