Académique Documents
Professionnel Documents
Culture Documents
INTERNE d’un
MICROPROCESSEUR
1
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
I ) Introduction :
Le microprocesseur Intel 8086 est un microprocesseur 16 bits, apparu en
1978. C’est le premier microprocesseur de la famille Intel 80x86 (8086,
80186, 80286, 80386, 80486, Pentium, ...). Il se présente sous la forme
d’un boîtier DIP (Dual In-line Package) à 40 broches :
II) Architecture externe du 8086
2
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
Schéma fonctionnel du 8086
3
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
III ) Architecture interne du 8086
Le 8086 est constitué de deux unités fonctionnant en parallèle :
• l’unité d’exécution (EU : Exécution Unit) ;
• l’unité d’interface de bus (BIU : Bus Interface Unit).
4
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
III ) Architecture interne du 8086
Le s d e u x u n i t é s f o n c t i o n n e n t s i m u l t a n é m e n t , d ’ o ù u n e
a c c é l é r a t i o n d u p ro c e s s u s d ’ exé c u t i o n d ’ u n p ro g r a m m e
(fonctionnement selon le principe du pipe-line).
5
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
III ) Architecture interne du 8086
Le microprocesseur 8086 contient 14 registres répartis en 4
groupes :
• Registres généraux : 4 registres sur 16 bits.
AX = (AH,AL) ; BX = (BH,BL) ; CX = (CH,CL) ; DX = (DH,DL).
Ils peuvent être également considérés comme 8 registres sur 8 bits. Ils
servent à la fois d’accumulateurs et de registres opérandes 16 bits.
Pointeurs :
SP : Stack Pointer, pointeur de pile (la pile est une zone de sauvegarde
de données en cours d’exécution d’un programme) ;
Index :
SI : Source Index ;
DI : Destination Index.
Ils sont utilisés pour les transferts de chaînes d’octets entre deux zones
mémoire.
Flags :
8
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
III ) Architecture interne du 8086
Registres de segments : 4 registres sur 16 bits.
CS : Code Segment, registre de segment de code
DS : Data Segment, registre de segment de données ;
SS : Stack Segment, registre de segment de pile ;
ES : Extra Segment, registre de segment supplémentaire pour les données
9
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
IV -1) Gestion de la mémoire :
• L'espace mémoire adressable (1 méga = 220 bits du bus
d'adresse ) du 8086 est divisé en quatre segments logiques allant
jusqu'à 64 KOctets chacun
• Le compteur de programme est de 16 bits
11
cours architecture des ordinateurs - Naoufel GUEDDAH
Le microprocesseur Intel 8086
IV-2) Segmentation de la mémoire:
A1 01 10 03 06 01 12 A3 01 14
16
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Jeu d’instructions
Type d’instructions
19
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
20
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
21
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
Mode d'adressage direct
Dans ce mode on spécifie directement l'adresse de l'opérande dans
l'instruction exemple :
MOV AX, adr
La valeur adr est une constante (un déplacement) qui doit être ajouté au
contenu du registre DS pour former l'adresse physique de 20 bits.
22
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
Mode d'adressage direct
mov bl, [1200H] : transfère le contenu de la case mémoire d’adresse
effective (offset) 1200H vers le registre BL.
23
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
Mode d'adressage direct
24
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
Mode d'adressage registre indirect
Dans ce mode d'adressage l'adresse de l'opérande est stockée dans un
registre qu'il faut bien évidemment le charger au préalable par la
bonne adresse. L'adresse de l'opérande sera stockée dans un registre
de base (BX ou BP) ou un indexe (SI ou DI).
• adressage basé : l’offset est contenu dans un registre de base BX
ou BP.
Exemples :
26
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
Mode d'adressage registre indirect
Exemples :
mov al,[si] : charge le registre AL avec le contenu de la case
mémoire dont l’offset est contenu dans SI.
27
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
MOV AX,[BX]+2
Cela signifie que dans le registre AX on va mettre le contenu de la
case mémoire pointe par BX+2
28
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
2]
29
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les modes d'adressage du 8086:
mov ah,[bx+si+100H]
mov bx,10
mov si,15
Mov matrice[bx][si],12H
Type d’instructions
• Les indicateurs susceptibles d'être touchés sont : AF, CF, OF, PF, SF,
ZF
• Cette instruction va nous permettre de comparer deux nombres
comme le montre le tableau suivant :
35
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Exemples :
• Si l'opérande est un octet : alors on récupère le quotient dans le
registre AL et le reste dans le registre AH.
• Si l'opérande est un mot : alors on récupère le quotient dans le
registre AX et le reste dans le registre DX
Exemples :
• mov ax,35
mov bl,10
div bl
→ AL = 3 (quotient) et AH = 5 (reste)
• mov dx,0
mov ax,1234
mov bx,10
div bx
→ AX = 123 (quotient) et DX = 4 (reste) 37
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
• Les instructions logiques ( de bits ) :
Ils sont divisés en trois sous-groupes comme le montre le tableau
suivant :
38
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
• Les instructions logiques ( de bits ) :
• NOT : (Négation): Elle réalise la complémentation à 1 d'un
nombre
Syntaxe : NOT Destination
Exemple :
MOV AX, 500 ; AX = 0000 0101 0000 0000
NOT AX ; AX = 1111 1010 1111 1111
• AND : ( Et logique )
Syntaxe : AND Destination, source
Elle permet de faire un ET logique entre la destination et la source (octet
ou un mot) le résultat est mis dans la destination
39
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
• Les instructions logiques ( de bits ) :
Exemple :
mov al,10010110B
mov bl,11001101B
and al, bl
40
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
• Les instructions logiques ( de bits ) :
• OR : (OU logique )
Syntaxe : OR Destination, source
Elle permet de faire un OU logique entre la destination et la source (octet
ou un mot) le résultat est mis dans la destination
Destination <---------- Destination ou source
Application : mise à 1 d’un ou plusieurs bits dans un mot.
Exemples :
43
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
•Les instructions de décalages et de rotations
Dans les décalages, les bits qui sont déplacés sont remplacés par des
zéros.
Il y a les décalages logiques (opérations non signées) et les décalages
arithmétiques (opérations signées).
Dans les rotations, les bits déplacés dans un sens sont réinjectés de
l’autre côté du mot.
• Décalage logique vers la droite (Shift Right) :
44
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Exemple :
mov al,11001011B
shr al,1
45
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Exemple :
mov al,11001011B
shl al,1
46
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
mov al,11001011B
→ AL = 00001100B
mov cl,4
shr al,cl
Exemple :
mov al,48 → AL = 48/23 = 6
mov cl,3
shr al,cl
Exemple :
mov
al,11001011B
ror al,1
→ réinjection du bit sortant qui est copié dans l’indicateur de retenue
CF.
• Rotation à gauche (Rotate Left)
49
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Exemple :
mov al,11001011B
rol al,1
50
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
• saut inconditionnel ;
• sauts conditionnels ;
• appel de sous-programmes.
51
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Exemple :
boucle : inc ax → boucle infinie
dec bx
jmp boucle
52
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Instructions de sauts
conditionnels : Syntax: Jcondition label
Un saut conditionnel n’est exécuté que si une certaine condition est
satisfaite, sinon l’exécution se poursuit séquentiellement à l’instruction
suivante.
La condition du saut porte sur l’état de l’un (ou plusieurs) des
indicateurs d’état (flags) du microprocesseur :
IP = IP + déplacement
53
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Remarque : les indicateurs sont positionnés en fonction du résultat de la
dernière
opération.
superieur : . . .
...
inferieur : . . .
54
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Exemple d’application des instructions de sauts conditionnels :
o n v e u t a d d i t i o n n e r d e u x n o m b re s s i g n é s N 1 e t N 2 s e t ro u v a n t
respectivement aux offsets 1100H et 1101H. Le résultat est rangé à l’offset
1102H s’il est positif, à l’offset 1103H s’il est négatif et à l’offset 1104H s’il
est nul :
55
cours architecture des ordinateurs - Naoufel GUEDDAH
La programmation en assembleur du
microprocesseur 8086
Les instructions de boucle
Exemple :
MOV AX, 05
MOV CX, 05
Debut: INC AX
CX<>0
LOOP debut
CX==0 MOV BX, AX
56
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
Le programme que l'on désire traduire en langage machine (on dit
assembler) doit être placé dans un fichier texte (avec
l'extension .ASM sous DOS).
58
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
Le fichier source (code source)
Comme tout programme, un programme écrit en assembleur
(programme source) comprend des définitions, des données et des
instructions, qui s'écrivent chacune sur une ligne de texte.
Les données sont déclarées par des directives, mots clefs spéciaux
que comprend l'assembleur (donc ils sont destinés à l'assembleur. Les
instructions (sont destinées au microprocesseur)
1 ) Les instructions :
La syntaxe des instruction est comme suit :
{Label :} Mnémonique {opérande} { ; commentaire}
Donc les directives sont des déclarations qui vont guider l'assembleur.
• DB/DW/DD/DF/DP/DQ/DT:
Ces directives sont utilisées pour déclarer les variables : L'assembleur
attribue à chaque variable une adresse.
64
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
Exemple de directives
Les directives de données
c° ) DD : (Define Double) : réserve un espace mémoire de 32 bits ( 4
cases mémoire ou 4 octets ) :
Syntaxe : nom DD expression
Exemple :
ff DD 15500000H
d) Directive dup
65
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
Exemple de directives
Les directives de segment
66
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
TITLE nom ; donner un nom au programme
PILE SEGMENT STACK ; déclaration d’un segment de pile
; dont le nom est pile
..........
..........
PILE ENDS ; fin de la déclaration de la pile
68
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
69
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
• WHILE Assembleur
• bx = 5 MOV BX,5
• while (bx >0) while: CMP BX,0
bx = bx -1; JLE Endwhile
DEC BX
JMP while
Endwhile:
70
cours architecture des ordinateurs - Naoufel GUEDDAH
Applications de quelques
instructions sur des
exemples
71
cours architecture des ordinateurs - Naoufel GUEDDAH
TITLE prog1.asm: Exemple sur CMP, Trouver l’octet le plus grand parmi 5 notes d’élèves
73
cours architecture des ordinateurs - Naoufel GUEDDAH
Conversion Minuscule en
Majuscule
L Hex Binaire L Hex Binaire
A 41 01000001 a 61 01100001
B 42 01000010 b 62 01100010
. ………… . …………
. ………… . …………
Y 59 01011001 y 79 01111001
Z 5A 01011010 z 7A 01111010
74
cours architecture des ordinateurs - Naoufel GUEDDAH
TITLE prog8.asm ; Conversion MINUSCULE MAJUSCULE d’un texte
PILE SEGMENT STACK
DW 100 DUP (?)
PILE ENDS
DATA SEGMENT
TEXTE1 DB ‘mOn Nom eST REBainE’, 13,10, ‘$’
TEXTE2 DB 21 DUP(?)
;-----------------------------------------------------------------------------------------------------------------------------------------------
-------------
CODE SEGMENT
ASSUME CS:SCODE, DS:DATA
; Initialiser le registre DS
MAIN : MOV AX, DATA MOV DS, AX
MOV SI, OFFSET TEXTE1 ; SI pointe sur le texte original
MOV BX, OFFSET TEXTE2 ; BX pointe sur le texte en MAJUSCULE
MOV CX, 21 ; compteur de boucle
ARRIERE: MOV AL, byte ptr [SI] ; prochain caractère
CMP AL, 61H ; Si < ‘a’ (61H est le code ASCII de ‘a’)
JB PASSE ; donc pas besoin de convertir
CMP AL, 7AH ; Si > ‘z’ (7AH est le code ASCII de ‘z’)
JA PASSE ; donc pas besoin de convertir
AND AL, 11011111B ; masque le bit 5 pour convertir en MAJUSCULE
PASSE: MOV [BX], AL ; sauvegarde le caractère MAJUSCULE
INC SI ; incrémente le “pointeur vers le texte original”
INC BX ; incrémente le “pointeur vers le texte en MAJUSCULE”
LOOP ARRIERE ; Continuer à boucler tant que CX > 0
;------------------------------------------------------------------------------------------------------------------------------------------------
------------
MOV AX, 4C00h
INT 21h
CODE ENDS
END MAIN
75
cours architecture des ordinateurs - Naoufel GUEDDAH
Exemple 8 : parcours d'un tableau
;Ce programme passe une chaîne de caractères en majuscules. La fin de la chaîne est repérée par un
caractère $. On utilise un ET logique pour masquer le bit 5 du caractère et le passer en majuscule
(voir le code ASCII).
Title parcours
pile segment stack
dw 100 dup (?)
pile ends
data SEGMENT
tab DB "Un boeuf Bourguignon"
data ENDS
code SEGMENT
ASSUME DS:data, CS:code
debut: MOV AX, data
MOV DS, AX
mov cx, 21
MOV BX, offset tab ; adresse debut tableau
repet: MOV AL, [BX] ; lit 1 caractère
INC BX
loop repet ; passe au suivant
; sinon recommencer
fin : MOV AH, 4CH
INT 21H ; Retour au DOS
code ENDS
END debut
76
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
Appels système
Les fonctions du DOS s'utilisent comme celles du BIOS, via des vecteurs
d'interruptions
78
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
Fonctions du DOS
79
cours architecture des ordinateurs - Naoufel GUEDDAH
Structure d’un programme assembleur 8086
Fonctions du DOS
Numéro Fonction
CALL adresse_debut_procedure
83
cours architecture des ordinateurs - Naoufel GUEDDAH