III - PROGRAMMATION EN ASSEMBLEUR
3.1 Introduction à la programmation en assembleur
Pour programmer un ordinateur on utilise généralement des langages dits évolués ou de haut
niveau : C, C++, Java, Basic, Fortran, Pascal, Ada, Assembleur, etc. Cependant l'unité
centrale ne peut exploiter que les instructions machine: Les codes binaires qui sont chargés
dans le registre instruction.
Le terme de langage désigne un jeu d'instructions et de règles syntaxiques. A l'aide d'un
langage évolué le programmeur écrit un code source. Celui-ci n'est pas directement
exécutable par l'ordinateur. Il faut le traduire en code machine ou code objet. C'est le rôle des
compilateurs ou assembleurs et des interpréteurs. Un interpréteur ne produit pas de code objet
il traduit les instructions directement au fur et à mesure de l'exécution du programme.
La figure suivante schématise les différents niveaux de programmation. Lorsque l'utilisateur
peut accéder au niveau de la microprogrammation la machine est dite microprogrammable.
Exemple : l’opération simple
réalisée par un microprocesseur (bus données 8 bits et bus adresses 16 bits)
28+56=84
1. CHARGEMENT ACCUMULATEUR,2810
2. ADDITION ACCUMULATEUR, 5610
3. RANGEMENT MÉMOIRE M, ACCUMULATEUR
Charger la valeur 28 dans
l’accumulateur
Additionner la valeur 56 au
contenu de l’accumulateur, le
résultat reste dans l’accumulateur
Ranger la somme, contenue dans
l’accumulateur, dans la cellule
mémoire d’adresse M
TRADUCTION EN LANGAGE
« TÉLÉGRAPHIQUE »
1. LOAD A, 2810
2. ADD A, 5610
3. STO M, A
Si on donne l’adresse en mémoire M=2050
1. LOAD A, 2810
2. ADD A, 5610
3. STO 205010, A
Mnémonique Opération Code binaire Nbre de
micro-
cycles
ANA M Faire une opération logique AND
entre le contenu de l’adresse
mémoire M et le contenu de
l’accumulateur A
10100110 7
Si l’horloge = 2 Mhz cette instruction demande t=0.5x10-6x7=3.5 micro-secondes
Réduction
Mnémonique facile à
retenir
 Incompréhensible par le microprocesseur.
 Donc traduire cela en binaire
 Le fabricant donne la liste des instructions
mnémoniques et le code binaire correspondant.
Supposons les codes des opérations
0011 1110 pour LOAD A
1100 0110 pour ADD A
0111 0111 pour STO M,A
Transformons les données et adresses en binaire :
0001 1100 2810
0011 1000 5610
et l’adresse
0000 1000 0000 0010 205010
Le programme complet devient :
Numéro d’ordre de
l’instruction Instruction
Code opération Opérande ou adresse
1
2
3
0011 1110
1100 0110
0111 0111
0001 1100
0011 1000
0000 1000 0000 0010
En hexadécimal
Numéro d’ordre de
l’instruction Instruction
Code opération Opérande ou adresse
1
2
3
3 E
C 6
7 7
1 C
3 8
0 8 0 2
Le traducteur du code mnémonique au code numérique s’appelle l’assembleur
Le retour du numérique vers le mnémonique s’appelle le désassemblage
3.2 Structures des instructions au niveau machine
Format des instructions
Les ordinateurs sont capables d'effectuer un certain nombre d'opérations élémentaires.
Une instruction au niveau machine doit fournir à l'unité centrale toutes les informations
nécessaires pour déclencher une telle opération élémentaire : type d'action, où trouver le ou
les opérandes, où ranger le résultat, etc. C'est pourquoi une instruction comporte en général
plusieurs champs ou groupes de bits. Le premier champ contient le code opération. Les autres
champs peuvent comporter des données ou l'identification des opérandes. La figure 10 donne
quelques exemples d'instructions à n adresses, pour n = 0, 1 et 2. Sur certaines machines les
instructions sont toutes de même longueur, sur d'autres cette longueur peut varier avec le code
opération ou le mode d'adressage.
On distingue six groupes d'instructions :
transferts de données : de mémoire à registre, de registre à registre, de registre à mémoire;
opérations arithmétiques : addition, soustraction, multiplication et division;
opérations logiques : ET, OU inclusif, NON, OU exclusif, etc.;
contrôle de séquence : branchements conditionnels ou non, appel de procédure, etc.;
entrées/sorties;
manipulations diverses : décalage, conversion de format, permutation circulaire des bits,
échange d'octets, incrémentation, etc.
Le choix de la longueur et du format des instructions est une étape très importante dans la
conception d'une nouvelle architecture. C'est encore une affaire de compromis. La longueur
des instructions se répercute sur la dimension de la mémoire centrale donc sur le coût : il faut
deux fois plus de bits pour stocker un programme de n instructions de 32 bits qu'un
programme de n instructions de 16 bits.
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !