Quelques instructions en Assembleur☘
Attention, le but de ce cours n'est pas d'apprendre à programmer en assembleur. Au travers de quelques exemples d'instructions, ce cours doit vous permettre de comprendre l'essentiel du fonctionnement d'un langage machine.
Ces exemples sont basés sur le langage d'assemblage x86 (32 bits) des microprocesseurs d'Intel. Il en existe de nombreux autres (par exemple MIPS, etc...).
Remarque
Par soucis de simplification, les adresses mémoire seront codées en base 10.
Lecture de la mémoire vive : LDR
☘
LDR R1,78
signifie « Placer la valeur stockée à l'adresse mémoire 78 dans le registre R1 ».
Écriture dans la mémoire vive : STR
☘
STR R3,125
signifie « Placer la valeur stockée dans le registre R3 en mémoire vive à l'adresse 125 ».
Addition : ADD
☘
ADD R0,R1,R2
signifie « Additionner la valeur stockée dans le registre R2 et la valeur stockée dans le registre R1, puis placer le résultat dans le registre R0 ».
Remarque
En Python, on écrirait R0 = R1 + R2
.
Soustraction : SUB
☘
SUB R0,R1,R2
signifie « Soustraire la valeur stockée dans le registre R2 à la valeur stockée dans le registre R1, puis placer le résultat dans le registre R0 ».
Remarque
En Python, on écrirait R0 = R1 - R2
.
Affecter une donnée dans un registre : MOV
☘
MOV R1, #23
signifie « Placer le nombre 23 dans le registre R1 ».
MOV R0, R3
signifie « Placer la valeur stockée dans le registre R3 dans le registre R0 ».
Rupture de séquence : B
☘
B 45
signifie « La prochaine instruction à exécuter se situe en mémoire vive à l'adresse 45 ».
Comparaison de valeurs : CMP
☘
CMP R0, #23
signifie « Comparer la valeur stockée dans le registre R0 et le nombre 23 ».
CMP R0, R1
signifie « Comparer la valeur stockée dans le registre R0 et la valeur stockée dans le registre R1 ».
Remarque importante
Cette instruction CMP
doit précéder une instruction de branchement conditionnel BEQ
, BNE
, BGT
, BLT
présentée dans l'exemple suivant.
Branchements conditionnels BEQ
: deux valeurs sont-elles égales ?☘
Les instructions :
CMP R0, #23
BEQ 78
Branchements conditionnels BNE
: deux valeurs sont-elles différentes ?☘
Les instructions :
CMP R0, #23
BNE 78
Branchements conditionnels BGT
: une valeur est-elle supérieure à une autre ?☘
Les instructions :
CMP R0, #23
BGT 78
Branchements conditionnels BLT
: une valeur est-elle inférieure à une autre ?☘
Les instructions :
CMP R0, #23
BLT 78
Arrêt : HALT
☘
HALT
signifie « Arrêter l'exécution du programme ».