Vous êtes sur la page 1sur 25

24/03/2023

Faculté des Sciences Semlalia


Département de L’informatique

Module : Architecture des Ordinateurs


Partie II: Le Langage Assembleur
Chapitre 6 : Modes d’adressage
Présenté par
Prof. A. NABOU

FSSM
Département
Cours : Architecture des Ordinateurs) de l’Informatique

Introduction

Pourquoi faire de l'assembleur ?

▪ Ecrire un compilateur
▪ Environnements embarqués, micro-contrôlleurs
▪ Systèmes temps-réels durs

Avantages
▪ Meilleure compréhension des langages
▪ Meilleure compréhension des machines

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

1
24/03/2023

Introduction

Pourquoi faire de l'assembleur ?

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Introduction

EXECUTION D'UN PROGRAMME


Pourquoi faire de l'assembleur ?

• Objectif: Comprendre à l ’aide d ’un exemple


simple le déroulement des instructions au niveau
programme

FSSM
Département
de l’Informatique

2
24/03/2023

Introduction

Un exemple complet {
int a=8, b=4, c;
Pourquoi faire de l'assembleur ?
c=a+b;
Compilateur
} LD A,(F800h)
ADD A,(F810h)
st (F820h),A
Hiérarchie
de traduction
Assembleur
08
08 F800 04
04 F810 Chargeur --
-- F820 en Mémoire 3AF800
3AF800 FB00
C6F810 FB01
C6F810
32F820 FB02 32F820 FSSM
Département
de l’Informatique

Introduction

L’architecture Compteur 1
Ordinal
Pourquoi faire de l'assembleur ?
LCO CCO
Registre adresse

Accumulateur
Bus d’adresses

CRA
PSR
Mémoire

Contrôleur
U.A.L.
H CAD LEC ECR
Registre
CEB Registre mot
Instruction
EDA CEA CRI LMM EMM

Bus de données FSSM


Département
de l’Informatique

3
24/03/2023

Introduction

Charger le programme
Compteur
Pourquoi faire de l'assembleur ? FB00 1
Ordinal
Opérandes
LCO CCO

Registre adresse
F800 08
Accumulateur F810 04
Bus d’adresses F820 00
PSR
Instructions
CRA FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR
Registre
CEB Registre mot
Instruction
EDA CEA CRI LMM EMM

FSSM
Département
Bus de données de l’Informatique

Introduction
Extraction de l ’instruction 1
Unité Centrale Compteur
Ordinal FB00 1 Mémoire centrale
Pourquoi faire de l'assembleur ?
LCO CCO Données
F800 08
Accumulateur F810 04
Bus d’adresses F820 00
FB00

PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

3A F8 00 Registre
CEB Registre
3A F8 00 mot
Instruction

EDA CEA CRI LMM EMM

FSSM
Bus de données Département
de l’Informatique

4
24/03/2023

Introduction
Le compteur ordinal est incrémenté
Unité Centrale Compteur
Ordinal FB01 +1 Mémoire centrale
Pourquoi faire de l'assembleur ?
CCO Données
LCO
F800 08
Accumulateur F810 04
Bus d’adresses F820 00

FB00
PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

3A F8 00 Registre
CEB Registre
3A F8 00 mot
Instruction

EDA CEA CRI LMM EMM

FSSM
Bus de données Département
de l’Informatique

Le chargement : les signaux à piloter

Unité Centrale Compteur


Ordinal FB01 1 Mémoire centrale
Pourquoi faire de l'assembleur ?
LCO CCO Données
F800 08
Accumulateur F810 04
08 Bus d’adresses F820 00
FB00

PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

08 Registre
CEB Registre
3A F8 00 mot
Instruction

EDA CEA CRI LMM EMM

Bus de données
FSSM
Département
de l’Informatique

5
24/03/2023

Extraction de l ’instruction 2

Unité Centrale Compteur


Ordinal FB01 1 Mémoire centrale
Pourquoi faire de l'assembleur ? Données
LCO CCO
F800 08
Accumulateur F810 04
08 Bus d’adresses F820 00

FB01
PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

Registre
CEB Registre C6 F8 10 mot
C6 F8 10 Instruction

EDA CEA CRI LMM EMM

Bus de données FSSM


Département
de l’Informatique

Le compteur ordinal est incrémenté

Unité Centrale Compteur


Ordinal FB02 +1 Mémoire centrale
Pourquoi faire de l'assembleur ?
LCO CCO Données
F800 08
Accumulateur F810 04
Bus d’adresses F820 00
FB00

PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

3A F8 00 Registre
CEB Registre
C6 F8 00 mot
Instruction

EDA CEA CRI LMM EMM

FSSM
Bus de données Département
de l’Informatique

6
24/03/2023

Exécution

Unité Centrale Compteur


Ordinal FB02 1 Mémoire centrale
Pourquoi faire de l'assembleur ?
LCO CCO Données
F800 08
Accumulateur F810 04
12 Bus d’adresses F820 00

F810
PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
08 04 H CAD LEC ECR

04 Registre
CEB Registre
C6 F810 mot
Instruction

EDA CEA CRI LMM EMM

FSSM
Bus de données Département
de l’Informatique

Extraction de l ’instruction 3

Unité Centrale Compteur


Ordinal FB02 1 Mémoire centrale
Pourquoi faire de l'assembleur ? Données
LCO CCO
F800 08
Accumulateur F810 04
F820 00
12 Bus d’adresses
FB02

PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

Registre
CEB Registre 32 F8 20
32 F8 20 Instruction
mot

EDA CEA CRI LMM EMM

Bus de données FSSM


Département
de l’Informatique

7
24/03/2023

Le compteur ordinal est incrémenté

Unité Centrale Compteur


Ordinal FB03 1 Mémoire centrale
Pourquoi faire de l'assembleur ? Données
LCO CCO
F800 08
Accumulateur F810 04
F820 00
12 Bus d’adresses

FB02
PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

Registre
CEB Registre 32 F8 20
32 F8 20 Instruction
mot

EDA CEA CRI LMM EMM

Bus de données FSSM


Département
de l’Informatique

Exécution

Unité Centrale Compteur


Ordinal FB03 1 Mémoire centrale

Pourquoi faire de l'assembleur ? Données


LCO CCO
F800 08
Accumulateur F810 04
12 Bus d’adresses F820 12
F820

PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
FB02 32 F8 20

U.A.L.
H CAD LEC ECR

12 Registre
CEB Registre
32 F820 mot
Instruction

EDA CEA CRI LMM EMM

Bus de données FSSM


Département
de l’Informatique

8
24/03/2023

Le programme est terminé


Unité Centrale Compteur
Ordinal FB03 1 Mémoire centrale
Pourquoi faire de l'assembleur ? Données
LCO CCO
F800 08
Accumulateur F810 04
Bus d’adresses F820 12

F800
PSR
Instructions
CRA
FB00 3A F8 00
FB01 C6 F8 10
Contrôleur FB02 32 F8 20

U.A.L.
H CAD LEC ECR

Registre
CEB Registre mot
Instruction

EDA CEA CRI LMM EMM

Bus de données FSSM


Département
de l’Informatique

Syntaxe générale d’une instruction


F O R M AT D ’I N ST RUC T I O N

Syntaxe
❖ La générale d’une
structure instruction
la plus générale d’une instruction est la suivante :

➢ L’opération est réalisée entre les 2 opérandes et le résultat


est toujours récupéré dans l’opérande de gauche.

❖ Il y a aussi des instructions qui agissent sur un seul opérande

I N S T Opérande

❖ Les opérandes peuvent être des registres, des constantes ou le


contenu de cases mémoire. 16
FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

9
24/03/2023

Syntaxe générale d’une instruction

Les instructions de Base :

Logiques Arithmétiques

D’affectation

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Syntaxe générale d’une instruction

Les instructions Arithmétiques:


Syntaxe générale d’une instruction

❖ INC : incrémentation.

❖ DEC : Décrémentation.

❖ ADD : addition.

❖ SUB :Soustraction (substruction).

❖ CMP : Soustraction sans sauvegarde.

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

10
24/03/2023

Syntaxe générale d’une instruction

Les instructions Logiques:


Syntaxe générale d’une instruction
❖ NOT .
❖ XOR.
❖ OR .
❖ AND .
❖ TEST ( and sans sauvegarde).

L’instruction d’affectation :
❖ MOV

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Syntaxe générale d’une instruction

Syntaxe générale d’une instruction

▪ Code Opération : Indique au processeur le type de traitement `a réaliser


▪ Opérandes : La nature des données sur lesquelles le traitement sera effectue
( généralement Opdestination, OpSource )
▪ Exemple : ADD AX, 8
▪ L’accès aux opérandes dépend des modes d’adressage utilisés

Modes d’adressage

▪ Les différentes manières d’accéder aux opérandes

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

11
24/03/2023

Modes d’adressage

❑ Il existe différentes façons de spécifier l’adresse d’une case


Syntaxe générale d’une instruction
mémoire dans une instruction : ce sont les modes d’adressage.

▪ Adressage Immédiat

▪ Adressage registre ou implicite

▪ Adressage direct

▪ Adressage indirect
Modes d’adressage
▪ Adressage basé

▪ Adressage indixé

▪ Adressage basé indixé

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage immédiat

Syntaxe générale d’une instruction


• Est un mode de manipulation des valeurs latéraux avec un
registre interne ou une case mémoire
Exemple
▪ ADD AX, 7
▪ MOV AL, 102h; déclaration d’une erreur, AL registre de 8 bits, mais 102h est une valeur
immédiate sur 16 bits.
▪Modes
MOV AX, 40h; cette instruction est juste Par ce que, on peut écrire 40h → 0040h valeur sur
d’adressage
16 bits.

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

12
24/03/2023

Adressage immédiat

L’opérande
❖Syntaxe est
générale d’une une
instruction constante (valeur) qui fait partie de
l’instruction :
I N S T R , IM

I N S T IM

❖ Exemples :

➢ M OV AX, 243 : charger le registre A X par le nombre


décimal 243 (AX243)

➢ J M P 008 : saut à l’instruction du numéro 008


18 FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage immédiat

Syntaxe générale d’une instruction


❖ L’opérande est une constante (valeur) qui fait partie de
l’instruction :

❖ Exemples :

➢ M O V AL, ‘A‘ : Charger le registre A L par le code AS C I I du


caractère ‘A' (65)
➢ M O V AX , ‘A‘ : Charger le registre A H par 00 et le registre
A L par le code AS C I I du caractère ‘A'

➢ M O V AX,‘AB' : Charger A H par le code AS C I I du caractè1r9e


‘A' et A L par le code AS C I I du caractère ‘B‘ (66)
18 FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

13
24/03/2023

Adressage direct

▪ comme l’indique son nom, c’est la réalisation des opérations


Syntaxe
entre générale d’une instruction
les registres internes de µp et la mémoire.
Exemple

▪MOV [2000h], BL ; transférer le contenu de BL vers la case mémoire de


l’adresse 2000h par rapport au DATA segment.
Modes d’adressage

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage direct

❖ U n des deux opérandes se trouve en mémoire. L’adresse


de la case mémoire est l’instruction.

I N S T R , [adr]

I N S T [adr] , R

❖ L’adresse doit être placée entre [R seg :Roff ]. Si le segment


(Rseg ) n’est pas précisé, D S est pris par défaut.

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

14
24/03/2023

Adressage direct

I N ST R , [adr]

I N ST [adr] , R

❖ Exemples :
➢ MOV AX,[243] : Copier le contenu de la mémoire d'adresse
DS:243 dans A X

➢ MOV [123],AX : Copier le contenu de A X dans la mémoire


d'adresse DS:123
➢ M O V A X, [S S :243] : Copier le contenu de la mémoire S S :243
dans A X
FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage par registre

• Ce générale
Syntaxe mode d’une instruction
utilise les registres internes de µp, dans ce mode il faut
respecté la taille de différents registres.

Exemple
▪MOV Destination, Source ; Destination ← Source.
▪MOV BX, AX; Transfert du contenu de AX vers BX.
▪MOV BX, AL; Déclaration d’erreur par ce que BX est registre 16 bits et AL est registre 8 bits.
▪ MOV BL, BH; Transfert du contenu de BH vers BL
Modes d’adressage

Avantage

▪ Les accès aux registres sont rapides


FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

15
24/03/2023

Adressage par registre

❖ L'opération se fait sur un ou 2 registres

INST R , R

INST R

❖ Exemples :

➢ INC AX : incrémenter le registre A X (AX++)

➢ M OV AX, BX : Copier le contenu de B X dans A X


(AXBX)
17

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage indirect

▪ L’générale
Syntaxe adressed’unede
instruction
l’opérande spécifié est contenue dans un registre
▪ Le registre est un pointeur sur l’opérande
▪ Les registres permis : BP, BX, DI et SI

Exemple

▪ MOV BX, 0104H


▪ MOV AL, [BX] ; Placer dans AL la valeur contenue à l’adresse 0104H
▪ MOV [SI], DL; transfert de contenu de DL vers la case mémoire 8 bits pointer par
ModesSId’adressage
par rapport au DATA segment.

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

16
24/03/2023

Adressage indirect

Adressage Indirect

❖ U n des deux opérandes se trouve en mémoire. L’adresse se


trouve dans l’un de ces 4 registres BX, BP, S I ou DI.
I N S T R , [Rseg : Roff]

I N S T [Rseg : Roff] , R

❖ S i Rseg n'est pas spécifié, le segment par défaut sera


utilisé.

Registre BX BP SI DI
Segment par défaut DS SS DS DS FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage indirect
Adressage Indirect
❖ Exemples :

➢ M O V AX, [BX]; Charger A X par le contenu de la mémoire d'adresse


D S : BX

➢ M O V AX, [BP]; Charger A X par le contenu de la mémoire d'adresse


S S :BP

➢ M O V AX, [SI]; Charger A X par le contenu de la mémoire d'adresse


D S : SI

➢ M O V AX, [DI] ; Charger A X par le contenu de la mémoire d'adresse


DS:DI
23
➢ M O V AX, [ES:BP]; Charger A X par le contenu de la mémoire
d'adresse E S : BP FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

17
24/03/2023

Adressage indirect

Adressage Indirect
❖ L’adressage indirect est divisé en 3 catégories selon le
registre d’offset utilisé: l’adressage Basé, l’adressage
indexé et l’adressage basé indexé.

Mode Adressage Basé Indexé Basé Indexé

Registres utilisés BX DI BX, DI


BP SI BX , S I
BP, DI
BP, S I
FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage indirect

Adressage Indirect
A. Adressage Basé

❖ L’offset se trouve dans l’un des deux registres de base B X


ou BP. On peut préciser un déplacement qui sera ajouté
au contenu de Roff pour déterminer l’offset,

I N S T R , [Rseg : Rb+dep]

I N S T [Rseg : Rb+dep] , R

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

18
24/03/2023

Adressage indirect
Adressage Indirect
A. Adressage Basé

❖ Exemples :
➢ M O V AX, [BX] : Charger A X par le contenu de la mémoire d'adresse
D S : BX

➢ M O V AX, [BX+5] : Charger A X par le contenu de la mémoire d'adresse


DS:BX+5

➢ M O V AX, [BP-200] : Charger A X par le contenu de la mémoire d'adresse


SS:BP-200

➢ M O V AX, [ES:BP] : Charger A X par le contenu de la mémoire d'adresse


26
ES:BP

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage indirect

Adressage Indirect
B. Adressage Indexé

❖ L’offset se trouve dans l’un des deux registres d’index S I


ou DI. On peut préciser un déplacement qui sera ajouté au
contenu de Ri pour déterminer l’offset.

I N S T R , [Rseg : Ri+dep]

I N S T [Rseg : Ri+dep] , R
27

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

19
24/03/2023

Adressage indirect

Adressage Indirect
B. Adressage Indexé

❖ Exemples :
➢ M O V A X, [S I ]; C harger A X par le contenu de la mémoire
d'adresse DS:SI

➢ M O V A X, [S I +500]; C harger A X par la mémoire d'adresse


DS:SI+500

➢ M O V A X, [DI-8]; Charger A X par la mémoire d'adresse DS:DI-8

➢ M O V A X, [ES:SI+4]; Charger A X par la mémoire d'adresse


ES:SI+4 28
FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Adressage indirect

Adressage Indirect
C . Adressage Basé Indexé

❖ L'offset de l’adresse de l'opérande est la somme d'un


registre de base, d'un registre d'index et d'un déplacement
optionnel. Si Rseg n'est pas spécifié, le segment par défaut
du registre de base est utilisé :
I N S T R , [Rseg : Rb+Ri+dep]

I N S T [Rseg : Rb+Ri+dep] , R

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

20
24/03/2023

Adressage indirect
Adressage Indirect
C . Adressage Basé Indexé

❖ Exemples :
➢ M O V A X,[B X +S I ]; A X est chargé par la mémoire d'adresse
DS:BX+SI

➢ M O V A X,[BX +D I+5]; A X est chargé par la mémoire d'adresse


DS:BX+DI+5

➢ M O V AX,[BP+SI-8]; A X est chargé par la mémoire d'adresse


SS:BP+SI-8

➢ M O V AX,[BP+DI]; A X est chargé par la mémoire d'adres3s0e


SS:BP+DI
FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

TAILLE DES ECHANGES AVEC LA MEMOIRE


❖ L a mémoire est organisée en octets.
1.Quand on fait une instruction entre un registre et une
donnée qui se trouve en mémoire, c’est le registre qui
détermine la taille de l’opération:

➢ Si le registre est un registre simple (8 bits), l’opération


se fera avec une seule case mémoire.

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

21
24/03/2023

TAILLE DES ECHANGES AVEC LA MEMOIRE

1. Quand on fait une instruction entre un registre et une


donnée qui se trouve en mémoire, c’est le registre qui
détermine la taille de l’opération:

➢ Si le registre est un registre double (2 octets),


l’opération se fera avec deux cases mémoires

M OV [adresse], A X donne →

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

TAILLE DES ECHANGES AVEC LA MEMOIRE

2. Quand on fait une opération entre une constante et une


case mémoire, il faut utiliser les préfixes BY T E (1 octet) et
WORD (2 octets) pour préciser le nombre d’octets à écrire :

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

22
24/03/2023

Mode d’adressage: Résumé

Syntaxe générale d’une instruction

Modes d’adressage

Source: http://www.ee.hacettepe.edu.tr/~alkar/ELE414/dirz2005/w3-414-[2005].pdf FSSM


Département
Cours : Architecture des Ordinateurs de l’Informatique

Exercices d’application :

Exercice1 :
Ecrire un programme qui initialise les registres ax, bx,cx par les valeurs suivants :
ax par 5, bx par 6, cx par 2.
1 faire la somme des registres ax et bx.
2 incrémente cx puis ajoute cx a la résultats précédents(la somme).

Exercice2 :
Ecrire un programme qui fait la somme du registre ax et bx ,puis soustrait cette
somme par cx (les registres ont les mêmes valeurs données dans l’Ex1).

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

23
24/03/2023

Exercices d’application :

Exercice 1 Exercice 2

;question 1
mov ax,5h
mov bx,6h mov ax,5h
mov cx,2h mov bx,6h
add ax,bx mov cx,2h
;question 2 add ax,bx
inc cx sub ax,cx
add ax,cx

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Conversion Assembleur/ Langage machine

Syntaxe générale d’une instruction

❑ Une instruction peut être codée de 1 à 6 octets


❖ L'octet 1 contient trois types d'informations :
• Le champ Opcode (6 bits) spécifie l'opération telle que l'addition, la soustraction ou le
déplacement
• Bit de direction de registre (bit D) : Indique que l'opérande de registre dans le champ REG de l'octet 2
est l'opérande source ou de destination
• Bit de taille de données (bit W)
❖ L'octet 2 a Trois champs :
• Champ Mode (MOD) – 2 bits
• Champ de registre (REG) - 3 bits
• Champ registre/mémoire (champ R/M) – 2 bits

Source: http://www.ee.hacettepe.edu.tr/~alkar/ELE414/dirz2005/w3-414-[2005].pdf FSSM


Département
Cours : Architecture des Ordinateurs de l’Informatique

24
24/03/2023

Conversion Assembleur/ Langage machine

Syntaxe générale d’une instruction

❖ Le champ REG est utilisé pour identifier le registre du premier opérande

FSSM
Département
Cours : Architecture des Ordinateurs de l’Informatique

Conversion Assembleur/ Langage machine


Exemple :

Syntaxe générale d’une instruction

Modes d’adressage

Source: http://www.ee.hacettepe.edu.tr/~alkar/ELE414/dirz2005/w3-414-[2005].pdf FSSM


Département
Cours : Architecture des Ordinateurs de l’Informatique

25

Vous aimerez peut-être aussi