Vous êtes sur la page 1sur 21

 Cours 9 microprocesseur

Présenté par
Pr: M.Kedir-Talha

1
Cours 9 microprocesseur
 LA PILE

2
Cours 9 microprocesseur
 LA PILE

Conserve provisoirement des données.


La zone mémoire de la pile est pointée par le registre
SS(segment de pile) et par le registre SP(indicateur de pile).
L'adresse courante pointée par SS:SP s'appelle le sommet de la
pile. (TOS: Top Of Stack)
: la pile est une zone mémoire
fonctionnant en mode LIFO (Last In First Out : dernier entré,
premier sorti).
Deux opérations sont possibles sur la pile :
• empiler une donnée : placer la donnée au sommet de la pile ;
• dépiler une donnée : lire la donnée se trouvant au sommet de
la pile. 3
Cours 9 microprocesseur
 LA PILE
PUSH-stocke une valeur 16 bits sur la pile.
POP-récupère une valeur 16 bits de la pile
PUSH Op
Empiler l’opérande Op (Op doit être un opérande 16 bits)
-1er: Décrémente SP
-2èm: Copie Op dans la mémoire pointée par SP
-3èm: Décrémente SP
PUSH R16
PUSH word [adr]
PUSH im PUSH R8 SONT INTERDITS 8086
POP Op
Dépiler dans l’opérande Op (Op doit être un opérande 16 bits)
-1er: Copie les deux cases mémoire pointée par SP dans l'opérande Op
-2ém: Incrémente SP de 2
POP R16
POP wordM 4

POP R8 EST INTERDIT 8086


Cours 9 microprocesseur
 LA PILE
Etat initial PUSH AX POP AX
Avec AX=5566h
SS=0050 SS=0050 SS=0050
00500 00500
00500

SP=0010 SP=000E SP=0010

0050E 66
0050F 55
00510 00510
00510

5
Cours 9 microprocesseur
 LA PILE

6
Cours 9 microprocesseur
 LA PILE

7
Cours 9 microprocesseur
 LA PILE
EXERCICE
Tracer le programme ci-dessous et
dites ce qu’il fait :(La valeur initiale de
SP est FFFEh).
MOV AX, 1234h
MOV BX, 5678h
PUSH AX
PUSH BX
POP AX
POP BX
RET

8
Cours 9 microprocesseur
 LA PILE

9
Cours 9 microprocesseur
 LA PILE

10
Cours 9 microprocesseur
 LA PILE

11
Cours 9 microprocesseur
 LA PILE
INSTRUCTIONS CALL ET RET
•La pile est également utilisée par l'instruction CALL pour
mémoriser l'adresse de retour lorsqu'elle appelle une
procédure( sous programme)
•l'instruction RET de retour récupère cette valeur d'offset pour
retourner

12
Cours 9 microprocesseur
 LA PILE

13
Cours 9 microprocesseur
 LA PILE

Org 100h
Mov ax,19h
Call SUBR1
Mov bx,19h
Hlt
SUBR1:
Mov cx,34h
RET

14
Cours 9 microprocesseur
 LA PILE

Empiler la valeur de IP. A ce moment, IP pointe sur


l'instruction qui suit le CALL.
Placer dans IP l'adresse de la première instruction de la
procédure (donnée en argument).

Dépiler une valeur et la ranger dans IP.

15
Cours 9 microprocesseur
 LA PILE

16
Cours 9 microprocesseur
 LA PILE

Exemple :
On veut ajouter la valeur 6 au contenu de la mémoire Adr :

MOV AX, 6
MOV BX, Adr
CALL SOMME
MOV Adr, AX
HLT

SOMME Proc
ADD AX, BX ; AX <- AX + BX
RET 17
SOMME ENDP
Cours 9 microprocesseur
 LA PILE

Cette technique met en œuvre un nouveau registre, BP (Base Pointer),


qui permet de lire des valeurs sur la pile sans les dépiler ni modifier SP.
Le registre BP permet un mode d'adressage indirect spécial, de la forme :

MOV BP, SP ; BP pointe sur le sommet


MOV AX, [BP] ; lit sans dépiler
Mov AX,6 SOMME2 Proc ; AX <- arg1 + arg2
PUSH AX MOV BP, SP ; adresse sommet pile
PUSH Adr MOV AX, [BP+2] ; charge argument 1
CALL SOMME2 ADD AX, [BP+4] ; ajoute argument 2
MOV Adr, AX RET
HLT SOMME2 ENDP
18
Cours 9 microprocesseur
 LA PILE
Mov AX,6
PUSH AX
PUSH Adr
CALL SOMME2
MOV Adr, AX
HLT

SP IP Adresse de retour SOMME2 Proc


MOV BP, SP
SP+2 Adr 1er Paramètre MOV AX, [BP+2]
ADD AX, [BP+4]
SP+4 6 2eme Paramètre RET
SOMME2 ENDP
Le sommet de la pile contient l'adresse de retour (ancienne valeur de IP empilée par
CALL). Chaque élément de la pile occupe deux octets. 19
Cours 9 microprocesseur
 LA PILE

Devoir 5:
Ecrire un programme qui puisse calculer le PGDC (plus
grand diviseur commun) de deux nombres se trouvant
aux adresses [200h] et [201h] ; le résultat sera placé à
l’adresse [202h]. (le PGCD sera votre sous programme)

20
Cours 9 microprocesseur
 LA PILE

21

Vous aimerez peut-être aussi