Introduction aux Systèmes
d’Exploitation II
CHAPITRE II : PRÉSENTATION DU LANGAGE ASSEMBLEUR
# Les Instructions De Pile#
Ecole supérieure en Science et Technologies de l’Informatique et du Numérique (ESTIN)
2
Objectifs
Le but de ce cours est de :
Comprendre le fonctionnement de la pile
Comprendre le fonctionnement des instructions PUSH et POP
Comprendre le fonctionnement des instructions PUSHA et POPA
3
La pile
Programme assembleur séparé en plusieurs parties (segments)
Trois segments en assembleur : .data, .bss et .text
Segment .data : définition des variables initialisées (db, dw, dd, q )
Segment .bss : définition des non-variables initialisées (resb, resw, resd, resq )
Segment .text : contient le code du programme
En plus de ces segments, le programme a accès à une pile mémoire (stack)
4
La pile
La pile permet de stocker temporairement et de retrouver rapidement des informations
Opérations désignées comme : empiler (stoker) et dépiler (retrouver)des informations
La pile permet :
La sauvegarde des registres
Le passage des paramètres lors de l’appel de sous programme
Le stockage de variables locales
Le stockage des adresses de retour
5
La pile
La pile fonctionne en mode LIFO (Last In First Out) mettre ou retirer des
informations se fait toujours à partir du dessus de la pile
L’accès au contenu de la pile s’effectue en utilisant les registres SP (Stack
Pointer) et BP (Base Pointer)
Le registre SP contient l’adresse du sommet de la pile, il désigne la tête de
la pile (le dernier élément ajouté)
Le sommet de la pile représente la dernière information empilée
Le registre BP contient l’adresse du bas de la pile, il désigne l’adresse du
fond de la pile
La pile grandit vers le bas
6
Opérations de la manipulation de la pile
Il existe 04 opérations permettant de manipuler la pile :
Empiler une valeur (placer un élément au sommet de la pile)
Dépiler une valeur (récupérer l’élément du sommet de la pile)
Empiler les registres généraux et d’indices dans l’ordre : AX, CX, DX, BX, SP, BP, SI, DI
Dépiler les registres généraux et d’indices
7
Empiler PUSH
Pour empiler une valeur source :
PUSH source
Revient à copier source au sommet de la pile
Décrémente SP de 2 puis écrit à l’adresse SP la valeur
Source : registre, adresse ou constante
PUSH AX équivalant à Pile AX
Exemple :
PUSH BX ; empiler le contenu de BX
PUSH [VAR] ; empiler la valeur contenue à l’adresse VAR
PUSH 3 ; empiler la constante 3
8
Dépiler POP
9
PUSHA ou POPA
10
Example
11
PUSHA ou POPA
12
Example
13
Example
14
Example
15
Example
Introduction aux Systèmes
d’Exploitation II
CHAPITRE II : PRÉSENTATION DU LANGAGE ASSEMBLEUR
# Les Sous-Programmes#
Ecole supérieure en Science et Technologies de l’Informatique et du Numérique (ESTIN)
17
Objectifs
18
Sous-programmes
19
Déclaration d’un sous-programme
20
Exemple de la bibliothèque [Link]
21
Exemple de la bibliothèque [Link]
22
Appel d’un sous-programme
23
Retour d’un sous-programme
24
Schéma d’exécution
25
Exemple
26
Exemple
27
Eemple
28
Exemple
29
Exemple
30
Exemple
31
Exemple
32
Exemple
33
Passage de paramètres
34
Passage de paramètres par les registres
35
Passage de paramètres par la pile
36
Passage de paramètres par la pile
37
Passage de paramètres par la pile
38
Passage de paramètres par la pile
39
Passage de paramètres par la pile
40
Passage de paramètres par la pile
41
Convention d’appel du C
42
Écriture et appel de sous-programmes