Flux rss
Collection CommentÇaMarche.net
Bookmark Ajouter aux favoris / Partager

Utilité d'une pile

Une pile est une zone de mémoire dans laquelle on peut stocker temporairement des registres. Il s'agit d'un moyen d'accéder à des données en les empilant, telle une pile de livres, puis en les dépilant pour les utiliser. Ainsi il est nécessaire de dépiler les valeurs stockées au sommet (les dernières à avoir été stockées) pour pouvoir accéder aux valeurs situées à la base de la pile.

En réalité il s'agit d'une zone de mémoire et d'un pointeur qui permettent de repérer le sommet de la pile.
La pile est de type LIFO (Last In First Out), c'est-à-dire que la première valeur empilée sera la dernière sortie. (Si vous empilez des livres, il vous faudra les dépiler en commençant par enlever les livres du dessus. Le premier livre empilé sera donc le dernier sorti !)

Les instructions PUSH et POP

Les instructions PUSH et POP sont les instructions qui servent à empiler et dépiler les données.

PUSH registre met le contenu du registre dans la pile (empilement).

POP registre récupère le contenu de la pile et le stocke dans le registre (dépilage).

Ainsi, l'instruction PUSH BX empile le contenu du registre BX, et l'instruction POP AX récupère le contenu du sommet de la pile et le transfère dans AX.

Utilisation de la pile sur un exemple

Dans l'exemple suivant, que l'on imaginera au milieu d'un programme, on stocke les valeurs contenues dans AX et BX pour pouvoir utiliser ces deux registres, puis une fois l'opération accomplie on remet les valeurs qu'ils contenaient précédemment...

PUSH AX
PUSH BX
MOV AX, [0140]
ADD BX, AX
MOV [0140], BX
POP BX
POP AX

Les registres SS et SP

Les registres SS et SP sont deux registres servant à gérer la pile :

  • SS (Stack Segment, dont la traduction est segment de pile) est un registre 16 bits contenant l'adresse du segment de pile courant. Il doit être initialisé au début du programme.
  • SP (Stack Pointer, littéralement pointeur de pile) est le déplacement pour atteindre le sommet de la pile (16 bits de poids faible).

SP pointe vers le sommet, c'est-à-dire sur le dernier bloc occupé de la pile. Lorsque l'on ajoute un élément à la pile, l'adresse contenue dans SP est décrémentée de 2 octets (car un emplacement de la pile fait 16 bits de longueur). En effet, lorsque l'on parcourt la pile de la base vers le sommet, les adresses décroissent.
Par contre l'instruction POP incrémente de 2 octets (16 bits) la valeur de SP.

  • PUSH : SP <- SP - 2
  • POP : SP <- SP + 2

Ainsi, lorsque la pile est vide SP pointe sous la pile (la case mémoire en dessous de la base de la pile) car il n'y a pas de case occupée. Un POP provoquera alors une erreur...

Déclarer une pile

Pour pouvoir utiliser une pile, il faut la déclarer, c'est-à-dire réserver un espace mémoire pour son utilisation, puis initialiser les registres avec les valeurs correspondant à la base de la pile, ainsi que son sommet (rappel : situé sous la pile lorsque celle-ci est vide).

Ainsi pour définir une pile il s'agit tout d'abord de la déclarer grâce à la directive SEGMENT stack.

Suite aux déclarations, il faut écrire une séquence d'initialisation :

ASSUME SS:segment_pile

MOV  AX, segment_pile
MOV  SS, AX		; initialise le segment de pile
MOV  SP, base_pile ; copie l'adresse de la base de la pile dans SP

Il n'est pas possible de faire directement MOV SS, segment_pile car cette instruction n'existe pas !

Dernière modification le mardi 14 octobre 2008 à 17:40:29.Ce document intitulé « Pile en assembleur » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

COMMENT REMETTRE MES PILOTES APRES FORMATAGE? (Résolu) Bonjour, Je dois formater mon ordi et je voudrai savoir comment récupérer tous mes drivers et pilotes. Et comme je redoute avoir internet après le formatage... Je ne sais pas comment faire !!! Merci d'avance pour vos réponses éventuelles ! www.commentcamarche.net/forum/affich-4964760-comment-remettre-mes-pilotes-apres-formatage
Pilote modem PCI bonjour, je posséde un PC que j'ai assemblé moi même, en ce qui concerne le modem je l'ai pri d'un PC DELL 4700 mais lorseque j'ai installé le pilote de ce dernier mon pc ne cesse de redemarrer tout seul du coup je peux acceder a rien et je suis... www.commentcamarche.net/forum/affich-2175488-pilote-modem-pci
Pilotes ATI erreur MOM.Implementation Bonjour à tous. Depuis que j'ai effectué une mise à jour de mes pilotes ATI (Radeon HD 3600 Series), j'ai un message d'erreur qui s'affiche au démarrage de mon ordinateur : "Impossible de charger le fichier ou l'assembly 'MOM.Implementation,... www.commentcamarche.net/forum/affich-9681551-pilotes-ati-erreur-mom-implementation
Mise à jour des pilotes de la carte graphiqueMise à jour des pilotes graphiques Quelle carte Graphique je possède ? Sous Windows Xp Sous Windows Vista Mise à jour Mise à jour des pilotes graphiques Pour mettre à jour les pilotes de la carte graphique, il vous faut connaître la... www.commentcamarche.net/faq/sujet-8034-mise-a-jour-des-pilotes-de-la-carte-graphique
[Windows] Pilote endommagé ou absent (Code 39)Lors de l'installation ou de la réinstallation des pilotes (drivers) d'un périphérique, il se peut que Windows affiche le message d'erreur suivant :Windows ne peut pas charger le pilote de périphérique de ce matériel. Ce pilote est peut-être endommagé... www.commentcamarche.net/faq/sujet-3825-windows-pilote-endommage-ou-absent-code-39
[Carte-mère] Changer la pile de la carte mèreSommaire Symptômes Fréquence de changement: 1 . Noter les données du Bios 2. Localiser la pile du BIOS 3. Oter la pile usagée 4 - Installer la nouvelle pile 5. Vérifier les données du Bios et régler l'horloge Pour en savoir... www.commentcamarche.net/faq/sujet-387-carte-mere-changer-la-pile-de-la-carte-mere
REcherche de pilote pour clé Wifi sagem wlan (Résolu)Bonjour a tous , j'aimerai avor les pilote de la clé Wifi sagem wlan vendu avec la livebox ... car je suis chez un pot et j'arrive pas a la connecter il me faut les pilotes Merci a tous bonne fin de soirée www.commentcamarche.net/forum/affich-2180155-recherche-de-pilote-pour-cle-wifi-sagem-wlan
Pilote de bus HD audio introuvable (Résolu)Bonjour, je cherche toute personne qui serait susceptible de m éclairer car je ne peut plu utiliser ma carte son 5.1! a chaque tentative d installation instalshield me dit "le pilote de bus HD audio est requi, or il est introuvable" .windows indique... www.commentcamarche.net/forum/affich-4453299-pilote-de-bus-hd-audio-introuvable
Recherche pilote usb pour samsung sgh U600 (Résolu)recherche pilote usb pour samsung sgh U600,je viens d'acheter le dernier samsung et en installant le logiciel studio pc3 ainsi que les pilotes fournis Au moment ou je connecte mon telephone avec mon ordi par usb mon ordi m'indique que l' USB est non... www.commentcamarche.net/forum/affich-2950326-recherche-pilote-usb-pour-samsung-sgh-u600
Télécharger Pilote SoundMAX Integrated Digital Audio DriverLe pilote SoundMAX Integrated Digital Audio Driver ( ADI ) est un driver conçu pour les cartes mères ayant une carte son à base de puce audio SoundMax. Le driver est entièrement gratuit. Le site officiel ne fournit plus le driver en question... www.commentcamarche.net/telecharger/telecharger-34056541-pilote-soundmax-integrated-digital-audio-driver
Télécharger Pilotes pour imprimantes Tout-en-un HP OfficejetLes pilotes "professionnels" sont réservés aux utilisateurs de Windows 2000 et de Windows XP. Ils s'adressent aux professionnels qui recherchent un pilote de numérisation et d'impression de base pour leur tout-en-un HP. Les produits suivants sont pris... www.commentcamarche.net/telecharger/telecharger-34056585-pilotes-pour-imprimantes-tout-en-un-hp-officejet
Télécharger Pilote Nvidia GeForce pour Windows XP 32 bitsPilote GeForce certifié WHQL pour les GPU des séries GeForce 6, 7, 8 et 9, à savoir notamment : GeForce 9800 GX2 GeForce 9800 GTX GeForce 9600 GT GeForce 9600 GSO GeForce 9400 GT GeForce 9300 GS GeForce 9300 GE GeForce 8800 Ultra ... www.commentcamarche.net/telecharger/telecharger-34056575-pilote-nvidia-geforce-pour-windows-xp-32-bits
Pilote (Driver)Qu'est-ce qu'un driver? Un ordinateur est constitué d'un assemblage de périphériques. Pour pouvoir contrôler chacun de ses périphériques, le système d'exploitation a besoin d'une interface logicielle entre lui et le matériel, on appelle driver... www.commentcamarche.net/contents/drivers/drivers.php3
Assembler un PCDe l'assemblage d'un ordinateur Un ordinateur de type PC est modulaire, c'est-à-dire qu'il peut être monté en assemblant des éléments matériels de différents constructeurs, afin d'obtenir un ordinateur conforme à ses besoins. Les éléments... www.commentcamarche.net/contents/assemblage/monter.php3
Introduction à l'assembleurLes prérequis nécessaires Le langage assembleur est très proche du langage machine (c'est-à-dire le langage qu'utilise l'ordinateur : des informations en binaire, soit des 0 et des 1). Il dépend donc fortement du type de processeur. Ainsi il... www.commentcamarche.net/contents/asm/assembleur.php3