L2 ISIL SECTION A
Chapitre 1
ARCHITECTURES DES ORDINATEURS II
Introduction et Rappels
1. Introduction et Rappels (2 séances)
• La pile ( Concept et utilisations)
•Instructions de manipulation de la pile (PUSH et POP)
•Intérêt de la pile dans la programmation modulaire
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 1 Mr M.S AYACHE
RAPPEL : Schéma synoptique d’un micro-ordinateur
ARCHI I
Mémoire cache
Horloge SRAM
µP $ MC
DRAM
ARCHI II
Circuits d’interface
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 2 Mr M.S AYACHE
LA PILE (STACK):
La pile est une partie de la mémoire RAM dont l’organisation est LIFO. La pile est
caractérisée par un sommet de pile et ses adresses évoluent contrairement aux
adresses de la mémoire traditionnelle . Pour le microprocesseur 8086, tous les accès à
la pile se font sur 16 bits et l’adresse physique du sommet de la pile est SS x 16 + SP.
Mémoire Centrale
15 0
Sens de dépilement
Sens d’empilement
SS x 16 + SP Somment de la pile
Dernier élément empilé
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 3 Mr M.S AYACHE
MODES D’UTILISATION DE LA PILE: 2 modes d’utilisation
a) La pile en tant que Pile
b) La pile en tant que mémoire
a) La pile en tant que pile
Dans ce mode d’utilisation, les accès à la pile sont tous séquentiels. Deux types d’utilisation sont possibles:
Utilisation explicite et Utilisation implicite.
a.1 Utilisation explicite:
sert à empiler ou dépiler explicitement des données de la pile. Les instructions qui permettent une telle
utilisation sont:
PUSH SRC : empiler POP DST : dépiler
PUSHF : empiler flags POPF : dépiler flags
ACTIONS:
PUSH SRC SP SP – 2
[SS : SP] SRC ; l’argument SRC doit être sur 16 bits
PUSHF SP SP – 2
[SS : SP] PSW
POP DST DST [SS : SP] ; l’argument DST doit être sur 16 bits
SP SP + 2
POPF PSW [SS : SP]
SP SP + 2
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 4 Mr M.S AYACHE
EXEMPLE:
adresse 15 0
mov ax, 0400h
mov ss , ax
mov sp , 0100h
mov bx , 1234h 0400:00FC 0400 Sommet de la pile
push bx
0400: 00FE 1234
push ax
. 0400:0100
.
pop ax a) après push
pop bx
adresse 15 0
ax = 0400H
0400:00FC 0400
bx= 1234H
0400: 00FE 1234
0400:0100 Sommet de la pile
b) après pop
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 5 Mr M.S AYACHE
a.2 Utilisation implicite:
Ce type d’utilisation est rencontré dans les appels et retours des procédures NEAR et FAR et dans les appels et
retours des interruptions logicielles et matérielles.
Appels et Retour des procédures (on ne traite que le cas des appels directs)
Type d’appel Syntaxe Action automatique dans la pile
Intrasegment CALL NEAR PTR nom_proc SP SP – 2
[SS : SP] IPretour
Intersegment CALL FAR PTR nom_proc SP SP – 2
[SS : SP] CSretour
SP SP – 2
[SS : SP] Ipretour
Type de Retour Syntaxe Action automatique dans la pile
intrasegment RET IP [SS : SP]
SP SP + 2
RET E.C même chose que ci-dessus
SP SP + E.C
intersegment RET IP [SS : SP]
SP SP + 2
CS [SS : SP]
SP SP + 2
RET E.C même chose que ci-dessus
SP SP + E.C
*** E.C : Expression Constante
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 6 Mr M.S AYACHE
SYNTAXE DE DECLARATION DES PROCEDURES
nom_Procédure PROC attribut
-
-
- corps de la procédure
-
-
RET
nom_Procédure ENDP
Attribut : NEAR ou FAR (par défaut Near)
REMARQUES:
SI l’attribut est NEAR , la procédure est intrasegment , ceci signifie que l’appel et la procédure doivent être dans le même code
segment et donc il n’y a que IP qui change.
SI l’attribut est FAR , la procédure est intersegment , ceci signifie que l’appel et la procédure sont dans des code segments
différents et donc IP et CS changent.
L’action de l’instruction RET dépend de l’attribut de la procédure.
Même si n-1 appels à une procédure sont intrasegment et un appel à cette même procédure est intersegment, l’attribut de
cette procédure doit être déclaré FAR.
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 7 Mr M.S AYACHE
EXEMPLE:
adresse 15 0
Programme Principal
.
.
mov ax, 0400h
mov ss , ax 0400:00FC 0025 Sommet de la pile
mov sp , 0100h
. 0400: 00FE 3500
IPproc 0600H
. 0400:0100 Csproc 8000H
3500:0020 CALL FAR PTR usthb
.
. a) effet du CALL
adresse 15 0
Procédure intersegment
IPretour = 0025H
usthb PROC FAR
8000:0600 .
. 0400:00FC 0025 CSretour = 3500H
.
RET 0400: 00FE 3500
usthb ENDP 0400:0100 Sommet de la pile
b) effet du RET
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 8 Mr M.S AYACHE
b) La pile en tant que mémoire
Ce type d’utilisation permet de voir la pile comme étant une partie de la mémoire DRAM, et en
conséquence, de pouvoir effectuer des accès directs dans cette structure de données qui est la pile.
Pour ce faire, on utilise le registre BP . Ce dernier permet d’accéder directement à n’importe quel
espace dans le stack segment y compris l’espace de la pile.
Ce type d’utilisation trouve son intérêt dans les traitements récursifs ainsi que dans le passage des
paramètres aux procédures.
EXEMPLE
Programme principal Procédure intrasegment adresse 15 0
.
.
. archi PROC NEAR
mov ax , 0800H mov bp , sp
mov ss , ax mov cx , [bp+4] 0800:01FA IPretour Sommet de la pile
mov sp , 0200H mov bx , [bp+2]
mov si, 1234H . 0800:01FC 6789
.
mov di , 6789H . 0800: 01FE 1234
push si ret
push di archi ENDP 0800:0200
call near ptr archi
.
.
. BP 01FAH
cx 1234H
bx 6789H
ARCHI 2 2021/2022 L2 ISIL section A Slide N° 9 Mr M.S AYACHE