Vous êtes sur la page 1sur 14

LANGAGE MACHINE

Chapitre 05

Introduction
Lexcution dun programme consiste donner la machine une squence dinstructions
directement interprtable. Les premiers programmes t cris en binaire (ils sont difficiles et risque
derreurs). Pour comprendre une squence de bits, il convenait de crer une table dcrivant toutes les
oprations possibles et leurs reprsentations binaires, cest lpoque du langage machine. Par la suite,
les programmes ont t crits en donnant directement les noms abrgs des oprations, on les appelait
les codes mnmoniques (ADD, DIV, SUB, INC ). Chaque commande ou code opration (binaire) est
reprsent par un mnmonique. Par exemple, la commande daddition scrit ADD en abrg et
correspond au code opration 0001 0101 par exemple. Les adresses des instructions et des variables
pouvaient aussi tre donn sous la forme symbolique. Le langage qui utilise des instructions crites en
mnmonique est appel langage dassemblage ou langage assembleur.
Le langage assembleur est class dans la catgorie des langages de bas niveau ; cest un
langage troitement li au processeur ou microprocesseur et aux circuits dun ordinateur, cela
loppos des langages de haut niveau, qui sont indpendants du processeur. Un programme dvelopp
en assembleur est excut bien plus rapidement que sil avait t dvelopp en langage volu. Il
occupe aussi beaucoup moins de place en mmoire car il est plus compact.
Un programme est dcompos en actions lmentaires, en instructions de base du processeur,
lassembleur mne toutefois des programmes bien plus longs crire quen langages volus ; plus
longs aussi vrifier et corriger. En outre un programme crit pour un processeur donn ne
fonctionnera pas avec un autre processeur diffrent ou dune famille diffrente : il nest pas portable.
Pour pouvoir excuter un programme rdigeait laide de mnmoniques en langage
assembleur par lordinateur, ce programme doit tre converti en langage machine (binaire); ce ft
ralis par lassembleur, cest le traducteur qui convertit les programmes crits en langage
dassemblage en langage machine. Le langage dassemblage permet dexploiter au maximum les
ressources de la machine. En langage dassemblage, le programmeur peut avoir accs toutes les
caractristiques de la machine cible (non possible dans les langages volus).
Exemple:
- lire les tats des interrupteurs de la console.
- accs aux diffrents registres.
- diagnostique derreur (soft et hard).

Programme source
Ou code source
en langage assembleur

Assemblage
Traduction en binaire

Programme excutable

Fig.01. Principe de prparation dun programme en assembleur.


1

1. Instruction machine
Le langage machine se compose dinstructions binaires telles quon les trouve dans la
mmoire au moment de lexcution du programme. Le langage dassemblage nest quune variable
symbolique du langage machine, il a le mme jeu dinstructions. Il est propre chaque type machine.
On a un langage dassemblage pur lorsque chaque instruction de ce langage produit exactement une
instruction en langage machine.
1.1. Format dune instruction: Bien que la structure des instructions dun langage dassembleur
reflte larchitecture de la machine, on peut dgager quelques grandes caractristiques des instructions
machine.

Exemple: pour calculer N :=I+J+K


a) IBM 370
champ tiquette

champ opration

formule

L
A
A
ST

1, I
1, J
1, K
1, N

I
J
K
N

DC
DC
DC
DC

5
8
10
0

Instructions

Pseudo instructions
(directives)

champ oprande

commentaires

charger I dans le registre 1


additionner J au registre 1
additionner K au registre 1
stocker le contenue du registre 1
dans ladresse N

b) PDP 11
champ tiquette

form :
Instructions

Pseudo instructions
(directives)

I:
J:
K:
N:

champ opration

champ oprande

MOV
ADD
ADD
MOV

I, R1
J, R1
K, R1
R1 , N

5
8
10
0

commentaires

charger I dans le registre 1


additionner J au registre 1
additionner K au registre 1
stocker le continue du registre 1
dans ladresse N

Une instruction en langage assembleur est devise en plusieurs champs:


tiquette

Code opration (mnmonique)

Oprandes

Fig.02. Format dune instruction machine

Les diffrents champs sont spars par un ou plusieurs espaces, le nombre des oprandes du
3me champ varie dune machine lautre de 0 a 3. Aprs ce champ, on peut ajouter des commentaires.

1.1.1. Champ tiquette: On utilise les tiquettes pour donner des noms symboliques certaines
adresses mmoires, elles sont indispensables lorsque l'on dsire effectuer des branchements aux
instructions quelles prfixent. Elles permettent aussi, dans les directives (pseudo instructions)
dallocation mmoire, daccder en suite aux donnes par un nom symbolique.
1.1.2 Champ opration: Il contient soit un mnmonique dans le cas de la reprsentation dune
instruction machine, soit une directive si linstruction est un ordre donn lassembleur, le choix des
mnmoniques pour la mme instruction varie dun constructeur un autre.
L
IBM 370
MOV PDP 11

Exemple:

Chaque instruction correspond pour lunit centrale (UC) lexcution dun travail. Le champ
le plus important est le champ opration car il indique lopration lUC lopration entreprendre.
Les autre champs contiennent ou spcifient les donnes ou les oprandes ncessaires lexcution de
linstruction.

Exemple: Une instruction de comparaison.


- le code opration indique le type de comparaison raliser (<, >, = etc).
- les autres champs prcisent les oprandes comparer.
La faon dobtenir les oprandes dune instruction sappelle ladressage. Sur certaines
machines, toutes les instructions sont de la mme longueur, sur dautres machines on distingue deux ou
trois tailles dinstructions selon le type dadressage et le type dinstruction.

a)

Code opration

b)

Code opration

adresse

c)

Code opration

Adresse 1

Adresse 2

Fig.03. Format typique des instructions


3

1.2. Critres dvaluation du format des instructions


Lors de la conception de la couche machine traditionnelle, la spcification des formats des
instructions a une trs grande importance :
1. Les instructions les plus courtes sont les plus efficaces au niveau des performances dexcution et de
loccupation mmoire des programmes. La mmoire est caractrise par sa capacit de stockage et par
sa vitesse (dbit) de transfert des informations (bits/s). Une mmoire de dbit t bits/s et de longueur
dinstructions de nb bits dbit max = t/nb instructions/seconde.
2. La vitesse de traitement des instructions est un paramtre propre a lUC, elle dpend plus au moins
fortement de la taille des instructions. Si le temps de traitement est suprieur au temps de recherche
pas dinfluence sur le temps global, sinon si le processeur est trs rapide la mmoire ralentit le
processus dexcution des instructions.
3. Lvaluation de la largeur des instructions (code opration en bits) afin dexprimer toute les
oprations envisages.
4. Lvaluation de la taille du mot machine est importante car il est strictement li la taille des
instructions. Pour tre optimal, la taille du mot machine doit tre un multiple du nombre de bits de
caractres manipuls. Si la longueur dun caractre est de k bits le mot mmoire une longueur k,
2k, 3k. Pour viter le gaspillage de la mmoire centrale, les instructions doivent tre formes dun
nombre entier de caractres ou mots mmoire.
5. La largeur des champs adresse et oprandes.

1.2. Code opration expansif


Considrons un mot de (k+n) bits de longueur, dont k bits pour le code opration (2k oprations
possibles) et n bits pour le champ adresse (2n mots mmoires adressables). Dune autre manire, cette
instruction de (k+n) bits pourrait se dcomposer en (k-1) bits de code opration et de (n+1) bits
dadresse, ce qui se traduit par moiti moins doprations et deux fois plus despace mmoire
adressable et le contraire est juste. On voit quil est possible, partant dune configuration donne en
nombre de bits, on peut dterminer diffrents formats dinstructions et cela pour la mme machine:
cest la notion du code opration expansif mis en uvre sur certaines machines et notamment sur le
PDP 11.
Code opration
k bits
Code opration
k-1 bits
Code opration
k-2 bits

Adresse

2k oprations et 2n adresses possibles.

n bits
Adresse

2k-1 oprations et 2n+1 adresses possibles.

n+1 bits
Adresse

2k-2 oprations et 2n+2 adresses possibles.

n+2 bits
Fig.O4. Code operation expansif

Exemple : Soit une instruction code sur 16 bits definit comme suit :
15

12

Code opration

11

adresse 1re oprande

adresse 2me oprande

adresse 3me oprande

Cette instruction, compose dun code opration sur 4 bits et trois champs adresse, permet de
dfinir 16 instructions trois oprandes. Avec ce format dinstruction, on peut avoir le jeu
dinstructions en utilisant la notion de code opration expansif:
15 instructions trois oprandes dont le code opration (bits 12 15) varie de 0000 1110 (de
0 14). La configuration 1111 dfinit un nouveau code opration form par expansion avec les bits 8
11, les bits de 0 3 et de 4 7 dfinissent deux champs adresse. On obtient de nouvelles instructions
dont le code opration est constitu des bits 8 15 (dont les bits 12 15 valent tous 1) et les bits 8 11
voluent de 0 13 (soit 14 instructions deux oprandes). Les configurations 1110 et 1111 des bits 8
11 sont interprtes diffremment. Ces deux configurations dfinissent un autre code opration form
par expansion avec les bits 4 7, les bits de 0 3 dfinissent le champ adresse, on obtient ainsi un
nouveau groupe dinstructions dont le code opration est form des bits 3 15 (soit 32 oprations
possibles) , on prend 31 instructions une seule oprande et la configuration 111111111111 est
interprte diffremment. Cette dernire configuration dfinit par expansion avec les bits 0 3 un
nouveau code opration sur 16 bits, on obtient ainsi 16 instructions sans oprandes (sans champs
adresse)

Code opration sur 4 bits :


0000 xxxx yyyy zzzz
0001 xxxx yyyy zzzz
:
:
:
1101 xxxx yyyy zzzz
1110 xxxx yyyy zzzz

15 instructions 3 oprandes

Code opration sur 8 bits :


1111 0000 xxxx yyyy
1111 0001 xxxx yyyy
:
:
:
1111 1101 xxxx yyyy

14 instructions 2 oprandes

Code opration sur 12 bits :


1111 1110 0000 xxxx
1111 1110 0001 xxxx
:
:
:
1111 1110 1111 xxxx
1111 1111 0000 xxxx
1111 1111 0001 xxxx
:
:
:
1111 1111 1110 xxxx
Code opration sur 16 bits :
1111 1111 1111 0000
1111 1111 1111 0000
:
:
:
1111 1111 1111 1111

31 instructions 1 oprande

16 instructions sans oprandes

Fig.05. Exemple de code opration expansif

2. Modes dadressage
On peut classer les instructions dune machine selon le nombre de champs adresse quelles
contiennent. Les champs adresses peuvent reprsenter (rfrencier) des mots mmoires ainsi que des
registres (mmoire accs rapide). On distingue gnralement des instructions une, deux voire trois
champs adresse. Sur un nombre de machines, les oprations sont ralises avec des instructions une
seule adresse doprande, dans ce cas un registre particulier (ACC) contient le second oprande. Sur
ces machines le champ adresse correspond le plus souvent ladresse dun mot mmoire qui contient
loprande. Ainsi, une instruction daddition une seule adresse du mot mmoire m est note :
ACC := ACC + M[m]
Une instruction deux adresses dispose dune adresse source et dune adresse destination, la
source est additionne la destination.
Destination := destination + source
Les instructions trois adresses dterminent deux sources et une destination, les sources sont
additionnes puis le rsultat est rang la destination.
Destination := source1 + source2
Pour permettre lUC daccder a loprande, on peut spcifier ladresse effective directement
dans le champ adresse ou utiliser dautres possibilits appeles modes dadressage des instructions.
6

2.1. Ladressage immdiat


La faon la plus simple consiste inscrire loprande dans la champ adresse de linstruction
plutt quune adresse ou une information prcisant sa localisation. On appel cette oprande oprande
immdiat ou valeur immdiate car elle est automatiquement charge de la mmoire dans lUC lors
du cycle de recherche de linstruction, cest le mode dadressage immdiat.
Ce mode offre lavantage dliminer laccs supplmentaire la mmoire pour obtenir
loprande concern. Il a par contre les inconvnients suivants:
a. la valeur de loprande est limite par le nombre de bits du champ adresse de loprande.
b. La valeur de loprande est fixe une fois pour toute lors du codage de linstruction et ne peut
plus volue.
Le PDP 11 dispose
complment 2.

de ce mode

dadressage o loprande immdiat est cod sur 16 bits en

Code opration

Oprande immdiat

Champ adresse 2

MOV

100

Champ adresse 2

Fig.06. Mode dadressage immdiat

2.2. Ladressage direct


Dans ce mode dadressage, ladresse effective de loprande est inscrite directement dans le
champ adresse de linstruction.
Code opration
MOV

Adresse de loprande

Champ adresse 2

200

100
Mmoire principale

Adresse 100

50

Adresse 200

50

Fig.07. Mode dadressage Direct

2.3. Ladressage par registre


Il est conceptuellement le mme que le direct. Cependant, dans ce mode le champ adresse de
linstruction fait rfrence un registre interne de lUC qui contient loprande concern. Il faut
diffrencier entre les espaces dadressage (registres et mmoire), pour cela on peut envisager que
ladresse est dcompose en deux parties: une partie indiquant la nature de lespace adresse et le reste
du champ pour prciser ladresse de llment dans lespace choisi. Comme le nombre de registres est
largement infrieur au nombre de mots mmoire, ladresse spcifiant un registre est plus courte que
celle dun mot mmoire. Cela suppose des formats dinstructions diffrents pour adresser les registres
ou la mmoire. On peut envisager que la diffrentiation des formats se fasse directement dans le code
opration de linstruction.

Code opration
MOV

Mode d@

L@ du registre

Mode @ registre

R1

Champ adresse 2

Mode @ direct

100

Mmoire principale

100

50

Le registre R1
50

Fig.08. Mode dadressage par registre

2.4. Ladressage indirect


Ce mode consiste inscrire dans le champ adresse de linstruction non pas ladresse de
loprande mais ladresse dun mot mmoire ou dun registre qui contient ladresse effective de
loprande.
En premier lieu, le contenu du mot mmoire dadresse 100 est charg dans un registre interne de
lUC. Cette valeur 200 nest pas charge dans le registre R1, sinon on raliserait un chargement en
mode dadressage direct. Au lieu de cela, le contenu du mot mmoire situ ladresse 200 qui est
charg en R1. La valeur 200 qui se trouve ladresse 100 nest pas une oprande mais une adresse qui
pointe vers un oprande ; on lappelle souvent pointeur.

MOV

Mode @ indirect

100

Mode @ registre R1
Mmoire principale

Le registre R1
76

100

200

200

76

Fig.09. Mode dadressage par registre


2.5. Ladressage index
De nombreux algorithmes ncessitent la ralisation successive doprations portant sur un
ensemble de donnes qui se trouvent en mmoire des adresses conscutives.
Exemple: Considrons un bloc de n mots situs aux adresses A, A+1, , A+n-1 que lon veut dplacer
aux adresses B, B+1, , B+n-1.

A
A+1

A+n-1

B
B+1

B+n-1

Fig.10. Transfert du bloc mmoire dadresse A ladresse B


9

La machine dispose de linstruction MOV A,B qui transfert le mot dadresse A dans celui
dadresse B, une fois cette opration est ralise on modifie linstruction pour effectuer le transfert
suivant MOV A+1,B+1.
On rpte lexcution de cette instruction aprs modification de ladresse jusqu' ce que les n
mots soient copis de la zone A vers la zone B. cette suite dinstructions identiques constitue une
lourdeur du programme.
Ce problme de copie peut tre rsolut en utilisant le mode dadressage indirect. En effet, un
registre ou un mot est charg avec la valeur A et un autre avec la valeur B. linstruction MOV en mode
dadressage indirect utilise les deux pointeurs qui sont incrments aprs chaque utilisation de un
jusqu' ce que les n mots soient copis de la zone A vers la zone B.

Programme de transfert
R1
A

Et :

A+1

N:

CLR R0
MOV *R1,*R2
INC R1
INC R2
CMP R0, N
BLE Et
100

A+n-1

(*) spcifie le mode


dadressage indirect
R2
B

B
B+1

B+n-1

Fig.11. Utilisation du mode dadressage indirect pour le transfert


du bloc mmoire dadresse A ladresse B
Une autre mthode consiste utiliser un registre particulier appel registre index. Dans ce cas,
la partie adresse comprend le nom du registre index et une constante dindexation. Ladresse de
loprande est obtenue par addition du registre index avec la constante ; cest le mode dadressage
index.
10

Exemple: Supposons que les deux adresses A et B sont indexs avec un mme registre dindex qui
contient la valeur k. Linstruction MOV A,B ralise le transfert du mot dadresse A+k vers ladresse
B+k. Pour raliser le transfert de A vers B, il suffit dinitialiser le contenue du registre dindex 0 et
lincrmenter aprs chaque excution de linstruction MOV.
Remarque: L incrmentation dun registre est plus rapide que celle dun mot mmoire, do la
prfrence de ladressage indexe dans ce cas. Lindexation est galement utilise pour adresser une
zone ou un champ situ une certaine distance du dbut dune structure de donnes.

Programme de transfert
R0
0

Et :

A+1

N:

CLR R0
MOV A(R0),B(R0)
INC R0
CMP R0, N
BLE Et
100

A+n-1

A(R0) spcifie le mode


dadressage index

B
B+1

B+n-1

Fig.12. Utilisation du mode dadressage index pour le transfert


du bloc mmoire dadresse A ladresse B

11

Toutes les instructions du PDP11 qui se rfrent la mmoire centrale peuvent tre utilises en
mode dadressage index. Le registre index pouvant tre lun des huit registres gnraux de cette
machine. De plus les instructions disposant de deux champs adresse mmoire peuvent associer (ou non)
des index diffrents chaque adresse. Lopration dincrmentation ou dcrmentation du registre
index peut seffectuer automatiquement. Le PDP11 permet lauto-indexation de nimporte lequel de ces
registres gnraux.

2.6. Ladressage par registre de base


Le plus souvent, les donnes comme les programmes sont rangs en mmoire dans des rgions
ou zones trs localises. Certaines machines exploitent cette caractristique en rduisant le nombre de
bits des adresses mmoires. La longueur en bits des adresses mmoires peut tre rduite par lutilisation
dun certain nombre de registres de base, dont chacun contient un pointeur vers une zone
dinformations en mmoire centrale. Une adresse est compose dans ce cas de deux parties : le nom du
registre de base et la valeur entire appele dplacement.
Ladresse effective de loprande est obtenue par addition du dplacement au contenu du
registre de base. Un registre de base doit comprendre un nombre de bits suffisant pour pointer sur
nimporte quelle adresse mmoire.
Exemple 01: une machine disposant de n registres et dun dplacement cod sur k bits on peut
obtenir n zones mmoire de 2k adresse (mots mmoire) chacune.
Exemple 02: une machine qui dispose de quatre registres de base de 32 bits et dun dplacement cod
sur 12 bits quatre zones mmoire chacune de 212 adresses (4096 mots mmoires) voir figure fig.09.,
ainsi un champ adresse est constitu de 14 bits : 2 bits pour le nom du registre de base, 12 bits pour le
dplacement.
Dans les deux techniques dadressages index et par registre de base; on ralise laddition du
contenu du registre avec une constante situe dans le corps de linstruction pour obtenir ladresse
effective de loprande. Conceptuellement, il ny a aucune diffrence entre les deux, cependant lorsque
le nombre de bits du dplacement est suffisant pour adresser la mmoire entire, on parle alors
dadressage index, dans le cas contraire; Il sagit dadressage par registre de base.

12

Registres de base
12000

212 @ (mots mmoires

28240

212 @ (mots mmoires

36854

212 @ (mots mmoires

58200

212 @ (mots mmoires

Fig.13. Utilisation du mode dadressage par registre de base.

2.7. Ladressage par pile


Il est important que les instructions soient les plus courtes possibles afin dconomiser
lespace mmoire et le temps de traitement par lUC. Lide est de rduire le nombre de bits du champs
adresse 0. Par consquence, on obtient des instruction sans oprandes (adresse ou champ adresse),
cette situation consiste organiser la machine autour dun structure de pile. Une pile est constitue
dun ensemble dinformations (mots, caractresetc) stockes squentiellement en mmoire. Le
premier lment enregistr dans la pile est plac la base de la pile, le dernier lment entr dans la
pile se trouve son sommet. En association avec une pile, une machine dispose dun pointeur de pile
(un registre particulier ou un registre gnral) qui contient ladresse du sommet pile a tout moment.
Linstruction PUSH charge automatiquement une donne (contenue dans un mot mmoire ou
un registre) et incrmente le pointeur de pile. Linstruction POP extrait la donne du sommet pile,
lenregistre en mmoire ou dans un registre et dcrmente le pointeur de pile.
Les instructions sans adresses sont utilises par la machine conjointement avec une structure
de pile. Cette forme particulire dadressage spcifie que les deux oprandes de linstruction se
trouvent dans la pile et quils seront extraits (2 POP) lun aprs lautre au fur et a mesure de lexcution
de linstruction, par exemple la multiplication, un et logique etc. Le rsultat du traitement est lui
aussi rang dans la pile (PUSH).
13

1001

1002

1001

1000

40

Base de pile

1000

40

1000

40

1001

60

Sommet de
pile

1001

60

1001

60

1002

1002

32

1002

1003

1003

1003

1004

1004

1004

1005

1005

1005

Empiler 32 avec
L'opration PUSH

Dpiler 32 avec
L'opration POP

Fig.14. Exemple du mode dadressage par Pile.

1004

1003

1002

1000

40

1000

40

1000

40

1001

60

1001

60

1001

60

1002

1002

1002

23

1003

1003

15

1003

1004

1004

1004

1005

1005

1005

Etat initial de la pile

Aprs une opration


de multiplication

Aprs une opration


d'addition

Fig.15. Exemple de l'utilisation d'une pour le calcul numrique.

14