ECOLE MAROCAINE DES
IENCES DE LINGENIEUR
Modes d’Adressage du 8086
+ llexiste différentes fagons de spécifier l'adresse d'une case mémoire dans une instruction : ce sont
les modes d'adressage. Il y a plusieurs modes d'adressage dans le 8086
+ Adressage registre
+ Adressage immédiat
+ Adressage direct
+ Adressage indirect
* Adressage basé
* Adressage indexé
* Adressage basé-indexé .ECOLE MAROCAINE DES
IENCES DE LINGENIEUR
Modes d’Adressage du 8086
ADRESSAGE REGISTRE
Ce mode d'adressage concee tout transfert ou toute opération, entre deux registres de méme taille.
Dans ce mode, le uP effectue toutes les opérations d'une fagon interne et opérande sera stockée dans un
registre interne (sauf IP).
+ Llopération se fait sur un ou deux registres: > INSTR, Rp
> INSTR
EXEMPLES :
INC AX: _ Incrémenter le registre AX
MOV AX, BX: Copier le contenu de BX dans AX (AX«-BX); opérandes 16 bit
ADD CH, DL: Ajouter le contenu de DL au CH (CH
INSTR, VN
EXEMPLES :
MOV AX, 243: Charger AX par le nombre décimal 243 (AX<-00F3)
MOV AL, ‘A’: Charger AL par le code ASCII du caractére ‘A’ (41)
MOV AX/AB': Charger AH par le ASCII du caractere ‘A’ (41) et AL par le ASCII du ‘B’ (42)
MOV AX, A1EBH: Charger le registre AX par la valeur hexadécimal A1EB
MOV AL, 102H: Déclaration d'une erreur, AL est de 8 bits et la valeur 102h est de taille de 12 bits.
MOV AX, 40H: Cette instruction est juste, car on peut écrire 40h > 0040h valeur sur 16 bits.
87ECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
DRESSAGE DIRECT
Dans ce mode d'adressage on spécifie directement 'adresse de opérande dans instruction qui est
adresse effective (offset) qui doit étre ajouté au contenu du registre segment pour former ‘adresse
physique de 20 bits.
+ Undes deux opérandes se trouve en mémoire. L’adresse de la case mémoire est précisé
irectement dans instruction. ere fay
> INSTI@],R
> INST taille (@], VN
+ Ladresse doit étre placée dans [Reeg : Rorsel-
+ Sie segment (Reeg) n'est pas précisé, le registre DS est pris par défaut comme RegECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
ADRESSAGE DIRECT
+ Un des deux opérandes se trouve en mémoire. Lladresse de la case mémoire est précisé
directement dans l'instruction. > INSTR, [@]
> INST [@],R
> INST taille [@], VN
EXEMPLES :
MOV AX, [1234H]; Copier le contenu de la mémoire d'adresse DS:1234H dans AX
MOV [0200h] , AX ; Copier le contenu de AX dans la mémoire d'adresse DS:0200H
MOV AX,
MOV BYTE [1213H],4Ah; Copier la valeur 44 dans la case mémoire DS:1213H
MOV WORD [1213H], 44h ; 4A— adresse DS:1213H, et 00 — adresse+1 (c-d-d DS:1214H)
:243H ; Copier le contenu de la mémoire SS:243H dans AXECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
DRESSAGE INDIRECT
Ladressage indirect transfére un octet ou un mot entre un registre et un déplacement mémoire adressés
par un intermédiaire (c'est a dire un des 4 registres d'offset suivants: BX, BP, Sl ou Dl)
+ Un des deux opérandes se trouve en mémoire. L'adresse se trouve dans l'un de ces 4 registres BX,
BP, SI ou DL
> INSTR, [Reeg Rowell
> INST [Ryeg! Rotel »R
> INST taille [Reog : Rotsetl » VN
+ Sile Reeg n'est pas spécifié, le segment par défaut sera utilisé comme suit:
Ftssst BX | BP | SI | DI
Ryo pardéfaut_ | DS | SS | DS | DSECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
ADRESSAGE INDIRECT
+ Undes deux opérandes se trouve en mémoire. Lladresse se trouve dans l'un de ces 4 registres BX,
BP.S1OUDI. stn, factual
> INST [Ryeg? Rotrset! ,R
> INST taille [Ryeg : Rossel, VN
EXEMPLES :
MOV AX, [BX]; Transfert de contenu de la case mémoire 16 bits pointer par BX, par
rapport au DATA segment vers AX.
ADD [SI],DL; — Ajouter le contenu de DL au contenu de la case mémoire 8 bits pointer
par DS:SI et stocker le résultats dans Op DéstinationECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
ADRESSAGE INDIRECT
Adressage Basé
Adressage Indexé
+ Adressage Basé-Indexé
+ Ladressage indirect est divisé en 3 catégories selon le registre dofiset utilisé:
Mode Adressage | Basé | _Indexé | Basé indexé
BX, DI
Registres utilisés as ei Poor
BP, SIECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
ADRESSAGE INDIRECT BASE
+ Loffset se trouve dans l'un des deux registres de base BX ou BP. On peut préciser un déplacement
(Dep) optionne! qui sera ajouté au contenu de Rpase pour déterminer l'offset:
> INSTR, [RoasetDep]
> INST [Ruse*Depl, R
> INST taille [Ryase+Dep] , VN
EXEMPLES :
MOV [BX+12], AL; Transfert de contenu de AL vers la case mémoire pointer par (BX+12) par
rapport au DATA segment (DS:BX+12).
MOV SI, [BP+400] ; Charger SI par le contenu de la mémoire d'adresse SS:BP+400
MOV AX, [ES:BP]; Charger AX par le contenu de la mémoire d'adresse ES:BPECOLE MAROCAINE DES
IENCES DE LINGENIEUR
Modes d’Adressage du 8086
ADRESSAGE INDIRECT INDEXE
+ Loffset se trouve dans l'un des deux registres d’index SI ou DI. On peut préciser un déplacement
(Dep) optionnel qui sera ajouté au contenu de Ringex pour déterminer loffset:
> INSTR, [Rindex+Dep]
> INST [RinaextDep] ,R
> INST taille [Ringex+Dep] , VN
EXEMPLES :
MOV AX, [SI]; Charger AX par le contenu de la mémoire d'adresse DS:S1
MOV AX, [SI+200] ; Charger AX par le contenu de la mémoire d'adresse DS:S1+200
MOV AX, [DI-10] ; Charger AX par le contenu de la mémoire d'adresse DS:DI-10
MOV AX, [ES:SI+4] ; Charger AX par le contenu de la mémoire d'adresse ES:SI+4ECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
ADRESSAGE INDIRECT BASE-INDEXE
+ Lloffset de 'adresse de 'opérande est la somme d'un registre de base (Rhase), d'un registre diindex
(Ringex) €t d'un déplacement (Dep) optionnel. Si Rsog n'est pas spécifié, le segment par défaut du
registre de base est utilisé :
> INSTR, [Rase+Rindex +Dep]
> INST [Risse*Ringex Dep], R
> INST taille [Ryssc*Rindex+Dep] , VN
EXEMPLES :
MOV AX, [BX+DI+5] ; AX est chargé par la mémoire d'adresse DS:BX+DI+5
MOV AX, [BX#SI]; AX est chargé par la mémoire d'adresse DS:BX+SI
MOV AX,[SS:BP+SI+2] ; AX est chargé par la mémoire d'adresse SS:BP+SI+2
MOV AX, [SS:BP+DI] ; AX est chargé par la mémoire d'adresse SS:BP+DIECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
EXERCICE : Identifier le mode d'adressage pour chacune des lignes suivantes:
Ne de ligne
1. MOV AL, [000BH] ; 1. Adressage direct
2. ADDAL, C4H ; 2. Adressage immédiat
3. MOV [BX], OOH ; 3. Adressage indirect basé
4, SUBAL, [BX+SI] ; 4, Adressage indirect basé-indexé
5. MOV AX, [BX+DI#5] ; 5. Adressage indirect basé-indexé
6. MOV AX, ‘AB’; 6. Adressage immédiat
7. ADD CH, DL; 7. Adressage registre
8. MOVAX, [SI]; 8. Adressage indirect indexé
9. MOV AX, 5; 9. Adressage immédiatECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
EXERCICE : Identifier le mode d'adressage pour chacune des lignes suivantes:
Ne de ligne
10.MOV AX, BX;
11. MOV AX, [BX];
12. MOV AX, [BX+5];
13.MOV AX, [SI+5];
14. MOV AX, [BX+SI];
15.MOV AX, [BX+DI];
16.MOV AX, [BXI[DII5;
17. MOV AX, [BX#SI+5];
10. Adressage registre
11. Adressage indirect basé
12. Adressage indirect basé + déplacement
13, Adressage indirect indexé + déplacement
14. Adressage indirect basé-indexé
15, Adressage indirect basé-indexé
16, Adressage indirect basé-indexé
17. Adressage indirect basé-indexéECOLE MAROCAINE DES
ENIEUR
Modes d’Adressage du 8086
TAILLE DES ECHANGES AVEC LA MEMOIRE
+ Lamémoire est organisée en octets.
+ Lorsqu‘une instruction est effectuée entre un registre et des données en mémoire,
le registre determine la taille de opération
= Sile registre est sur un octet, opération sera effectuée avec une cellule de
mémoire.
~ Sile registre est sur un mot, 'opération sera effectuée avec deux cellules de
mémaire.
~ Lorsqu'on effectue une opération entre une constante et une cellule de
mémoire, il faut utiliser les préfixes BY
ier le nombre d'octets a écrire.
TE (octet) et WORD (mot) pour
MOV BYTE ptr[@], 44h —> @
44 | — MOVWORD ptr[@}, 44h ——> @
MOV [@],AL— a
MOV [@], AX=— G
AL
AL
aHMOV [SI+1000HI, 142BH
24ABH, DI = C140H et DS = AIBAH
0
* Liadresse effective :
‘adresse physique :
* Lladresse physique :
3
z
8
3
8
é
5
2
2
6
8
* Lladresse effective
eu
ECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Dans la demiére instruction ot 'adressage indirect indexé est employé :
Modes d’Adressage du 8086
ACTIVITES :
ftECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Modes d’Adressage du 8086
ACTIVITES:
+ Soit: SS =1240H, BP = 42A8H et SI = 4010H
Autre écriture :
Lladresse effective :
Lladresse physique :
octet d'adresse
MOV [BP+SI], 12H
sera chargé par la valeur
+ Indiquer le mode d'adressage pour chacune des instructions suivantes
Mov
Mov
Mov
Mov
Mov
AX, BX
CX, 1234H
£1000H3, cx
AL, CBX]
AH, CBX+SI]
100ECOLE MAROCAINE DES
IENCES DE LINGENIEUR
Jeu d’Instructions
INTRODUCTION
+ Chaque microprocesseur reconnait un ensemble d’instructions appelé jeu d'instructions fixé
par le constructeur.
+ Une instruction est définie par son code opératoire (opcode). On utilise donc une notation
symbolique pour représenter les instructions (mnémoniques). Un programme constitué de
mnémoniques est appelé programme en assembleur.
+ Les instructions peuvent étre classées en groupes :
2 Instructions de transfert de données (MOV, XCHG,
Instructions arithmétiques (ADD, SUB, MUL, DIV,
Instructions logiques (NOT, AND, OR, XOR, ...); a.
Instructions de décalage et de rotation (SHR, SHL, ROL, ROR, ...); :
Instructions de branchement (JMP, Jxx, LOOP, ...)..
a
a
a
aECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Jeu d’Instructions
LES INSTRUCTIONS DE TRANSFERT
+ Elles permettent de déplacer des données d'une source vers une destination.
MOV
MOV O4, Os : Copie 'opérande Source (Os) dans opérande Destination (Od) [Od — Os]
MOV R1,R2 R1-R2
MOV R,I@) Re [adr]
MOV [@],R [adr] R
MOV _R,VN Re im
Copier une constante dans une case mémoire
MOV taille [adr], VN
taille = BYTE ou WORD
>< MOV fads fade
MOV Reey ReegECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Jeu d’Instructions
LES INSTRUCTIONS DE TRANSFERT
+ Elles permettent de déplacer des données d'une source vers une destination.
XCHG
XCHG Od, Os : Echange de lopérande Source (Os) avec l'opérande Destination (Od) [Od > Os]
XCHG R1,R2 RIOR
XCHG R,[@]
Re [adr]
XCHG [@],R
DX XCHG [adr], [ade] 103ECOLE MAROCAINE DES
IENCES DE LINGENIEUR
Jeu d’Instructions
ACTIVITES:
1. Ecrire un code permettant de:
= Mettre dans AX la valeur 10FAH
— Mettre dans BX la valeur 2234H
~ Permuter le contenu des registres AX et BX
2. Ecrire un code permettant de
~ Mettre dans SI la valeur 10AAH.
= Mettre dans DI la valeur 10ABH
= Mettre dans [SI] la valeur FFH
= Mettre dans [DI] la valeur 33H.
= Permuter le contenu des [SI] et [DI]
ors
ret
org
ret
10h
mov ax, 10FAh
mov bx, 2234h
xchg ax, bx
100h
mov 51, 10AAh
mov di, 10ABh
mov [si], OFFh
mov (dil, 33h
xchg [i],b1
xehg bl, (dil
xchg (siJ,blECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Jeu d’Instructions
ACTIVITES:
1. Ecrire un programme en assembleur 8086 qui permet de :
= Charger la valeur 100H dans le registre AX.
~ Charger la valeur 20SH dans le registre BX.
~ Permuter les valeurs des registres AX et BX,
2. Refaire la méme chose sans utiliser l'instruction XCHG
org
ret
org
ret
108h
mov ax, 10h
mov bx, 25h
xchg ax,bx
100h
mov ax, 100h
mov bx, 2@5h
mov cx, ax
mov ax, bx
mov bx, cx
105ft
ECOLE MAROCAINE DES
IENCES DE LINGENIEUR
Jeu d’Instructions
LES INSTRUCTIONS ARITHMETIQUES
Le 8086 permet dreffectuer les quatre opérations
arithmétiques de base: Iaddition, la soustraction, la
multiplication et la division.
Les opérations peuvent s'effectuer sur des nombres de 8
bits ou de 16 bits signés ou non signés.
Les nombres signés sont représentés en complément a 2.ECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Jeu d’Instructions
LES INSTRUCTIONS ARITHMETIQUES
+ Elles permettent d'effectuer les opérations arithmetiques
ADD
ADD O4, Os : Additionne l'opérande source (Os) et 'opérande destination (Od) et met le résuitat
dans lopérande destination (Od). [Od — Od + Os]
ADD R1,R2 RIC RLR2
ADD R,I@] Re Reladr]
ADD [@],R [adr] CR+fade]
ADD R,VN ReRtim
ADD _ taille ptr{@], VN [ade] < [adr
DX App fad, fade]ECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Jeu d’Instructions
EXERCICE:
+ Liinstruction ADD permet de positionner les flags a ‘1’ ou a ‘0’ selon le résultat de l'opération.
Aprés avoir exécuté les deux programmes suivants, quelles sont les valeurs que prennent les flags? Faire un
calcul manuel pour justifier la réponse.
org 100h a
mov al, @D8h *
mov ah, @CAh 5
add ah,al ud
ret ret
org 100h
mov bl, 75 ; decimal 7
mov bh, 67; decimal
add bh, bl
celal
cSECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Jeu d’Instructions
LES INSTRUCTIONS ARITHMETIQUES
+ Elles permettent d'effectuer les opérations arithmetiques
‘SUB
SUB Od, Os : Soustrait fopérande source (Os) de l'opérande destination (Od) et met le résultat
dans opérande destination (Od). [Od < Od - Os]
SUB R1,R2 R1e-R1-R2
SUB R,[@] Re Rade]
SUB [adr], [adr]
SUB [@],R lade] < [ade PX Su ete Lae
SUB R,VN ReR-im
SUB taille ptr [@1, VN [adr] <[adr]-im
39hECOLE MAROCAINE DES
SCIENCES DE LINGENIEUR
Jeu d’Instructions
EXERCICE:
+ instruction SUB permet de positionner les flags a ‘1’ ou a ‘0’ selon le résultat de 'opération.
Apres avoir exécuté les deux programmes suivants, quelles sont les valeurs que prennent les flags? Faire un
calcul manuel pour justifier la réponse.
org 10h org 100h
mov bl, 75; decimal mov bl, 75; decimal
mov bh, 67; decimal mov bh, 67; decimal
sub bl, bh sub bh, bl
ret ret
m1Jeu d’Instructions
EXERCICE:ECOLE MAROCAINE DES
IENCES DE LINGENIEUR
Jeu d’Instructions
LES INSTRUCTIONS ARITHMETIQUES
+ Elles permettent d'effectuer les opérations arithmetiques
MUL
‘MUL Os: Effectue une multiplication non signée entre 'accumulateur (AL ou AX) et lopérande (Os). Le
résultat de taille double est stocké dans 'accumulateur et son extension (AH ou DX).
IMUL Os: Identique 4 MUL excepté qu'une multiplication signée est effectuée.
(I) MUL Regs, AX