Вы находитесь на странице: 1из 14

Support de Cours Tel Section A

Chapitre II : Microprocesseurs et programmation en langage assembleur

INTRODUCTION
L'apparition des microprocesseurs date du dbut des annes 1970. A cette poque, deux vnements
favorables sont apparus :
 le concept de "LSI (Large Scale Integration)" permettant d'intgrer plusieurs milliers de portes sur un
mme substrat.
 l'arrive maturit de la technologie MOS caractrise par sa faible consommation.
La conjugaison de ces vnements a permis de regrouper une unit centrale d'ordinateur dans un seul circuit
intgr appel "microprocesseur".
Depuis, une multitude de composants de ce type sont apparus au sein de familles provenant essentiellement
de grands constructeurs amricains: Intel, Motorola, Advanced Micro Devices (AMD),
Texas Instruments,...et japonais : NEC, Mitsubishi,...

I. INTRODUCTION SUR LES SYSTEMES A BASE DE MICROPROCESSEUR

I.1 / Architecture dun systme base de microprocesseur


Un systme base de microprocesseur est form des trois lments :
- Une unit CPU (Central Processing Unit )
- Une mmoire (ROM et RAM)
- Des ports dentres/sorties.
Les trois modules sont interconnects autour de trois bus : bus de donnes, bus dadresses et bus de
contrles et commandes.
Bus : Il sagit de plusieurs pistes lectroniques qui sont relies au microprocesseur. Ces bus assurent la
communication interne et externe du microprocesseur.

- Le bus de donnes : cest un ensemble de fils bidirectionnels qui va permettre le transfert de donnes entre
les diffrents lments du systme.
- Le bus dadresses : il permet dadresser un lment par le microprocesseur. Il est unidirectionnel. Il
dtermine la capacit maximale d'adressage du systme, c'est dire le nombre maximum de mots de la
mmoire associe (ex : 16 bits "adressent" 64 Kmots).
- Le bus de commandes et de contrle : cest un bus qui permet de vhiculer les signaux de contrles et de
commandes tels que lhorloge les signaux Rd/Wr etc

1
Support de Cours Tel Section A
I.2 / Architecture dune CPU
Une CPU est forme par les trois lments fonctionnels interconnects suivants :
Registres.
UAL : Unit arithmtique et logique.
Circuit de contrle.

II. LE MICROPROCESSEUR 8086 / 8088

II.1 / Introduction
Le processeur 8086 d'Intel est la base des processeurs Pentium. Les processeurs successifs (de PC) se sont
en effet construits petit petit en ajoutant chaque processeur des instructions et des fonctionnalits
supplmentaires, mais en conservant chaque fois les spcificits du processeur prcdent.

II.2 / Architecture externe du 8086 :


Le 8086 est un circuit intgr de forme DIL de 40 pattes.

Le 8086 (dvelopp en 1978) est le premier microprocesseur de type x86. Il est quip d'un bus de donnes
de 16 bits et un bus dadresses de 20 bits et fonctionne des frquences diverses selon plusieurs variantes: 5,
8 ou 10 MHz.
II.3 / Architecture interne du 8086 :
Il existe deux units internes distinctes: l'UE (Unit d'Excution) et l'UIB (Unit d'Interfaage avec le Bus).
Le rle de l'UIB est de rcuprer et stocker les informations traiter, et d'tablir les transmissions avec les
bus du systme. L'UE excute les instructions qui lui sont transmises par l'UIB.
2
Support de Cours Tel Section A

Avec le microprocesseur 8085, le traitement des instructions se passait comme suit:


- Extraction des instructions par l'UIB
- Excution des instructions
- Extraction des nouvelles instructions
Lorsque l'excution d'une instruction est termine, l'UE reste inactif un court instant, pendant que l'UIB
extrait l'instruction suivante. Pour remdier ce temps d'attente, le prtraitement ou traitement pipeline
t introduit dans le 8086/8088. Pendant que l'UE excute les informations qui lui sont
transmises, l'instruction suivante est charge dans l'UIB. Les instructions qui suivront sont places dans une
file d'attente.

Donc en conclusion on peut dire que le 8086/8088 se compose essentiellement de deux units : l'UIB qui
fournit linterface physique entre le microprocesseur et le monde extrieur et lUE qui comporte
essentiellement lUAL de 16 bits qui manipule les registres gnraux de 16 bits aussi.

II.4 / Les registres du 8086/8088 :


II.4.1 / Introduction :
Le jeu de registres contient l'ensemble des registres du microprocesseur. Un registre est une petite partie de
mmoire intgre au microprocesseur. Il existe plusieurs types de registres. Les registres gnraux sont
affects des oprations d'ordre gnral et sont accessibles au programmeur tout moment. D'autres
registres ont des rles bien plus spcifiques.
II.4.2 / Les registres gnraux :
Les registres gnraux peuvent tre utiliss dans toutes les oprations arithmtiques et logiques que
le programmeur insre dans le code assembleur. Un registre complet prsente une grandeur de 16 bits.
Chaque registre est en ralit divis en deux registres distincts de 8 bits.
3
Support de Cours Tel Section A

Le programmeur dispose de 8 registres internes de 16 bits quon peut diviser en deux groupes :
- groupe de donnes : form par 4 registres de 16 bits (AX, BX, CX, et DX) chaque registre peut tre
divis en deux registres de 8 bits (AH, AL, BH, BL, CH, CL, DH et DL).

- groupe de pointeur et indexe : form de 4 registres de 16 bits (SI, DI, SP, BP) et font gnralement rfrence un
emplacement en mmoire.

A / Groupe de donnes :
Registre AX : (Accumulateur)
Toutes les oprations de transferts de donnes avec les entres sorties ainsi que le traitement des chanes de
caractres se font dans ce registre, de mme les oprations arithmtiques et logiques.
Registre BX : (registre de base)
Il est utilis pour ladressage de donnes dans une zone mmoire diffrente de la zone code. De plus il peut servir pour
la conversion dun code un autre.
Registre CX : (Le compteur)
Lors de lexcution dune boucle on a souvent recours un compteur de boucles pour compter le nombre ditrations,
le registre CX a t fait pour servir comme compteur lors des instructions de boucle.
Registre DX :
On utilise le registre DX pour les oprations de multiplication et de division mais surtout pour adresser les interfaces
dE/S.
b / Groupe de pointeur et indexe :
Ces registres sont plus spcialement adapts au traitement des lments dans la mmoire. Ils sont en gnral munis de
proprits d'incrmentation et de dcrmentation.
Lindexe SI : (source indexe) :
Il permet de pointer la mmoire il forme en gnral un dcalage (un offset) par rapport une base fixe (le registre DS).
Lindexe DI : (Destination indexe) :
Il permet aussi de pointer la mmoire il presente un dcalage par rapport une base fixe (DS ou ES).
Les pointeurs SP et BP : ( Stack pointer et base pointer )
4
Support de Cours Tel Section A
I
ls pointent sur la zone pile (une zone mmoire qui stocke linformation avec le principe filo), ils presentent un
dcalage par rapport la base (le registre SS).
c / Les registres segment:

Le 8086 a quatre registres segments de 16 bits chacun : CS (Code Segment, DS (Data Segment), ES (Extra Segment)
et SS (Stack Segment), ces registres sont chargs de slectionner les diffrents segments de la mmoire en pointant sur
le dbut de chacun dentre eux.
Le registre CS (Code Segment) :
Il pointe sur le segment qui contient les codes des instructions du programme en cours.
Le registre DS (Data Segment) :
Le registre segment de donnes pointe sur le segment des variables globales du programme.
Le registre ES (Extra Segment) :
Le registre ES pointe sur le segment de donnes supplementaires, ce segment est utilis aussi pour le stockage de
chaines de caracteres.
Le segment SS (Stack Segment) :
Le registre SS pointe sur la pile : la pile est une zone mmoire ou on peut sauvegarder les registres ou les adresses ou
les donnes pour les rcuprer aprs lexcution dun sous programme ou lexcution dun programme dinterruption.
d / Le registre IP (Le compteur de programme) :

Instruction Pointer ou Compteur de Programme, contient ladresse de lemplacement mmoire o se situe la


prochaine instruction excuter. Le registre IP est constamment modifi aprs l'excution de chaque instruction afin
qu'il pointe sur l'instruction suivante.
e/ Le registre dtat (Flag) :

Le registre d'tat FLAG sert contenir l'tat de certaines oprations effectues par le processeur. Par exemple, quand
le rsultat d'une opration est trop grand pour tre contenu dans le registre cible (celui qui doit contenir le rsultat de
lopration), un bit spcifique du registre d'tat (le bit OF) est mis 1 pour indiquer le dbordement.

5
Support de Cours Tel Section A

Remarque :
X : bit non utilis.
CF (Carry Flag) :
Retenue : cet indicateur est mis 1 lorsqu il y a une retenue du rsultat 8 ou 16 bits.
Exemples (sur 8 bits) :

ZF (Zero Flag) :
Zro : Cet indicateur est mis 1 quand le rsultat dune opration est gal zro. Sinon, ZF est positionn 0.
SF (Sign Flag) :
SF est positionn 1 si le bit de poids fort du rsultat dune addition ou soustraction est 1 ; sinon SF=0. SF est utile
lorsque lon manipule des entiers signs, car le bit de poids fort donne alors le signe du rsultat. Exemples (sur 8 bits) :

OF (Overflow Flag) :
Dbordement : si on a un dbordement arithmtique ce bit est mis 1. cad le rsultat dune opration excde la
capacit de loprande (registre ou case mmoire), sinon il est 0.

III. PROGRAMMATION EN ASSEMBLEUR

III.1 / Les modes d'adressage du 8086:


Une instruction est compose de deux champs :
le code opration, qui indique au processeur quelle instruction raliser.
le champ oprande qui contient la donne, ou la rfrence une donne en mmoire (son adresse).

Le microprocesseur 8086 possde plusieurs modes d'adressage :


- Mode d'adressage registre.
- Mode d'adressage immdiat.
- Mode d'adressage direct.
- Mode d'adressage indirect.
- Inhrent.

6
Support de Cours Tel Section A

a / Mode dadressage registre :


Ce mode dadressage concerne tout transfert ou toute opration, entre deux registres de mme taille.
Exemple :
Mov AX, BX

b / Mode dadressage immdiat :


Dans ce mode dadressage loprande apparat dans linstruction elle- mme, exemple :
MOV AX, 500H ; cela signifie que la valeur 500H sera stocke immdiatement dans le registre AX

c / Mode dadressage direct :


Dans ce mode on spcifie directement ladresse de loprande dans linstruction.
exemple :
MOV AX,[1000h]

d / Mode dadressage indirect : cas par registre :


Dans ce mode dadressage ladresse de loprande est stocke dans un registre quil faut bien videmment le charger
au pralable par la bonne adresse.
Exemple 1 :
MOV AX, [BX]

Exemple 2 :
MOV AX, [BX+SI]
Cela signifie que dans le registre AX on va charger le contenu de la case mmoire pointee par BX+SI

Exemple 3 :
MOV AX, [BX+SI+5]
Cela signifie que dans le registre AX on va mettre le contenu de la case mmoire pointee par BX+SI+5
MOV SI, 20
MOV BX, 1100
MOV AX, [BX+SI+5]

d / Mode d'adressage inhrent :


Ne fait intervenir ni rgistre ni mmoire
Exemple : NOP

IV. LE JEU DINSTRUCTIONS DU 8086/8088

1 / MOV :
Elle permet de transfrer les donnes (un octet ou un mot) dun registre un autre registre ou dun registre
une case mmoire, sa syntaxe est comme suit :
Exemples :
MOV destination, source
MOV AX, BX ;

7
Support de Cours Tel Section A
MOV AH, CL ;
MOV AX, [100]; Transfert du contenu dune case mmoire 16 bits vers AX
MOV [300], AL ; Transfert du contenu du AL vers une case mmoire 8 bits.

2 / ADD: (Addition)
Syntaxe : ADD Destination, source
Elle permet dadditionner le contenu de la source (octet ou un mot) avec celui de la destination le rsultat est mis dans
la destination
Destination <---------- Destination + source
Exemples :
ADD AX, BX ; AX = AX + BX (addition sur 16 bits)
ADD AL,BH ; AL = AL + BH (addition sur 8 bits )
ADD AL,[SI] ; AL = AL + le contenu de la case mmoire pointe par SI
ADD [DI], AL ; le contenu de la case mmoire pointe par DI est additionn avec
;AL, le rsultat est mis dans la case mmoire pointe par DI.

3 / SUB : (Soustraction)
Syntaxe : SUB Destination, source
Elle permet de soustraire la destination de la source (octet ou un mot) le rsultat est mis dans la destination
Destination <--------- Destination - source
Exemples :
SUB AX,BX ; AX = AX - BX (Soustraction sur 16 bits )
SUB AL,BH ; AL = AL - BH ( Soustraction sur 8 bits )
SUB AL,[SI] ; AL = AL - le contenu de la case mmoire pointe par SI
SUB [DI],AL ; le contenu de la case mmoire pointe par DI est soustraite de
; AL , le rsultat est mis dans la case mmoire pointe par DI.

4 / INC : (Incrmentation)
Syntaxe : INC Destination
Elle permet dincrmenter le contenu de la destination
Destination <---------- Destination + 1
Exemples :
INC AX ; AX = AX + 1 (incrmentation sur 16 bits).
INC AL ; AL = AL +1 (incrmentation sur 8 bits).
INC [SI] ; [SI] = [SI] + 1 le contenu de la case mmoire pointe par SI sera
;incrment.

5 / DEC : (Dcrmentation)
Syntaxe : DEC Destination
Elle permet de dcrmenter le contenu de la destination
Destination <----------- Destination - 1
Exemples :
DEC AX ; AX = AX - 1 (dcrmentation sur 16 bits).
DEC AL ; AL = AL -1 (dcrmentation sur 8 bits).

8
Support de Cours Tel Section A

DEC [SI] ; [SI] = [SI] - 1 le contenu de la case mmoire pointe par SI sera
dcrment.

6 / NEG : (Ngatif)
Syntaxe : NEG Destination
Elle soustrait loprande destination (octet ou mot) de 0 le rsultat est stocker dans la destination, donc avec cette
opration on ralise le complment deux dun nombre
Destination <----------- 0 - Destination
Exemples :
NEG AX ; AX = 0 - AX
NEG AL ; AL = 0 - AL
NEG [SI] ;[SI] = 0 - [SI]

7 / CMP : (Comparaison)
Syntaxe : CMP Destination , Source
Exemple :
CMP AX, BX

8 / MUL :
MUL effectue une multiplication de l oprande source avec laccumulateur :
Syntaxe : MUL Source
 Si la source est un octet alors elle sera multiplie par laccumulateur AL le rsultat sur 16 bits sera stock dans
le registre AX.
 Si la source est un mot alors elle sera multiplie avec laccumulateur AX le rsultat de 32 bits sera
stock dans la paire des registres AX et DX

(AX) <------------- (AL) X Source (octet)


(AX)(DX) <------------ (AX) X Source (mots)
Exemples:
MUL BX ; AX et DX <------------ AX X BX (mots)
MUL BL ; AX <------------ AL X BL (octets)

9 / DIV :
DIV Elle effectue une division de laccumulateur par loprande source :

Syntaxe : DIV Source


 Si loprande est un octet : alors on rcupre le quotient dans le registre AL et le reste dans le registre AH.
 Si loprande est un mot : alors on rcupre le quotient dans le registre AX et le reste dans le registre DX

Exemples
DIV BX ; Cela implique que le quotient soit mis dans AX et le reste dans DX
DIV BL ; Cela implique que le quotient soit mis dans AL et le reste dans AH

9
Support de Cours Tel Section A

10 / NOT : (Ngation)
Elle ralise la complmentation 1 dun nombre
Syntaxe : NOT Destination
Exemple :
MOV AX, 500 ; AX = 0000 0101 0000 0000
NOT AX ; AX = 1111 1010 1111 1111

11 / 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 rsultat est mis dans la
destination
Destination <---------- Destination . source
Exemples :
MOV AX , 503H ; AX = 0000 0101 0000 0011
AND AX , 0201H ; 0000 0101 0000 0011
; AND 0000 0010 0000 0001
; = 0000 0000 0000 0001
AND AX,BX ; AX = AX . BX (Et logique entre AX et BX)
AND AL,BH ; AL = AL . BH (ET logique sur 8 bits)
AND AL,[SI] ; AL = AL AND le contenu de la case mmoire
; pointe par SI
AND [DI],AL ; ET logique entre la case mmoire pointe par
; DI et AL, le rsultat est mis dans la case
; mmoire pointe par DI

12 / 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 rsultat est mis dans la
destination
Destination <----------- Destination + source
Exemples :
MOV AX , 503H ; AX = 0000 0101 0000 0011
OR AX , 0201H ; 0000 0101 0000 0011
; OR 0000 0010 0000 0001
; = 0000 0111 0000 0011
OR AX,BX ; AX = AX + BX ( OU logique entre AX et BX )
OR AL,BH ; AL = AL + BH ( OU logique sur 8 bits )
OR AL,[SI] ; AL = AL OU le contenu de la case mmoire
; pointe par SI
OR [DI],AL ; OR logique entre la case mmoire pointe par
; DI et AL, le rsultat est mis dans la case
; mmoire pointe par DI

10
Support de Cours Tel Section A

13 / XOR : ( OU exclusif )
Syntaxe : XOR Destination, source
Elle permet de faire un OU exclusif logique entre la destination et la source (octet ou un mot) le rsultat est mis dans
la destination
Destination <------------ Destination + source
Exemples :
MOV AX , 503H ; AX = 0000 0101 0000 0011
XOR AX , 0201H ; 0000 0101 0000 0011
; XOR 0000 0010 0000 0001
; = 0000 0111 0000 0010
XOR AX,BX ; AX = AX + BX (OU exclusif entre AX et BX )
XOR AL,BH ; AL = AL + BH ( OU exclusif sur 8 bits )
XOR AL,[SI] ; AL = AL OU exclusif le contenu de la case
; Mmoire pointe par SI
XOR [DI],AL ; XOR logique entre la case mmoire pointe par
; DI et AL, le rsultat est mis dans la case
; mmoire pointe par DI

Les instructions de rotations :


14 / ROL : (Rotation gauche)

15 / ROR : (Rotation droite)

Syntaxe des instructions de rotation et de dcalage :


ROR destination, compteur
Exemple :
ROR AX,1
ROL AL,1
Si on veut faire quatre rotations de suite on a deux solutions :
ROR AL,1
ROR AL,1
ROR AL,1
ROR AL,1
Ou encore :

11
Support de Cours Tel Section A
MOV CL,4
ROR AL,CL

16 / PUSH :
Elle permet dempiler les registres du CPU sur le haut de la pile
Syntaxe : PUSH SOURCE
Exemple :

17 / POP :
Elle permet de dpiler les registres du CPU sur le haut de la pile
Syntaxe : POP destination
Exemple :

12
Support de Cours Tel Section A

18 / XCHG :
Elle permet de commuter la source avec la destination comme suit :

19 / IN / OUT:
Elle permet de rcuprer des donnes dun port (donc de la priphrie) ou restituer des donnes un port, dans les
deux cas sil sagit denvoyer ou de recevoir un octet on utilise laccumulateur AL, sil sagit denvoyer ou de recevoir
un mot on utilise laccumulateur AX.
Syntaxe :
IN ACCUMULATEUR, DX
OUT DX, ACCUMULATEUR

Remarque :
DX : contient ladresse du port.
ACCUMULATEUR : contient la donne ( recevoir ou mettre).
20 / LEA (Load Effective Address):
Elle transfert ladresse offset (dcalage) dune oprande mmoire dans un registre de 16 bits (pointeur ou index).

Exemple : LEA BX, TAB_VAL (cest quivalent MOV BX, offset TAB_VAL)

Instructions de sauts de programme :


Elles permettent de faire des sauts dans lexcution dun programme (rupture de squence)

21 / CALL : notion de procdure :

13
Support de Cours Tel Section A

La procdure est nomme calcul. Aprs linstruction B, le processeur passe linstruction C de la procdure,
puis continue jusqu rencontrer RET et revient linstruction D.
Linstruction CALL effectue donc les oprations :
 Empiler la valeur de IP. A ce moment, IP pointe sur linstruction qui suit le CALL.
 Placer dans IP ladresse de la premire instruction de la procdure (donne en argument).

22 / RET :
RET ne prend pas dargument ; le processeur passe linstruction place immdiatement aprs le CALL.
Ladresse de retour, utilise par RET, est en fait sauvegarde sur la pile par linstruction CALL. Lorsque le
processeur excute linstruction RET, il dpile ladresse sur la pile (comme POP), et la range dans IP.

23 / JMP : (Saut inconditionnel)


JMP cible

Saut conditionnel :

24 / JE/JZ :(Si gal/Si zro)


Si ZF=1 alors IP = IP + dplacement

25 / JNE/JNZ :(Si non gal / Non zro)


Si ZF=0 alors IP = IP + dplacement
26 / NOP (No operation) :
Le CPU ne fait rien on peut sen servir pour crer des temporisations.

14

Вам также может понравиться