La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Système dexploitation : Assembleur Semaine 11 La pile.

Présentations similaires


Présentation au sujet: "Système dexploitation : Assembleur Semaine 11 La pile."— Transcription de la présentation:

1 Système dexploitation : Assembleur Semaine 11 La pile

2 La pile (ou Stack) (1/8) Zone de mémoire utilisée comme zone de travail – Sauvegarde temporaire dinformation (par exemple : contenu dun registre, valeur des indicateurs, adresse, …) – Utilisée par CALL (procédures), INT,... Réservation de la pile à laide de la directive.STACK (opérande: taille de la pile, en octets) – Exemple :.STACK 100h(256 octets dans le Stack Segment).STACK(Pas dopérande, réservation de 1 Ko) La pile fonctionne comme une pile dassiettes : – dernier entré, premier sorti. (LIFO = Last In First Out) – Attention : la pile fonctionne de haut en bas. – Les informations sont donc stockées dans la mémoire de la partie haute vers la partie basse ( data, code : de bas en haut).

3 La pile (ou Stack) (2/8) Registre pointeur associé au fonctionnement de la pile : SP – (Stack Pointer = pointeur de pile) – Au chargement du programme, il reçoit la taille de la pile – Exemple : si.STACK 100halors SP = 0100 si.STACK alors SP = 0400 – SP POINTE AU-DESSUS DE LA PILE ! Registre de segment associé au fonctionnement de la pile : SS – (Stack Segment = segment de pile) – Au chargement du programme, il reçoit le n° de paragraphe de chargement de la pile. Quelles opérations peut-on effectuer sur la pile ? – déposer une donnée sur la pile : PUSH – retirer une donnée sur la pile : POP

4 La pile (ou Stack) (3/8) Fonctionnement des instructions PUSH et POP Attention : Les mots déposés sur la pile doivent être retirés en sens inverse ! A B B A

5 La pile (ou Stack) (4/8) Linstruction PUSH – Place une donnée de 2 octets sur le sommet de la pile – Utilisation : PUSH reg (16) PUSH mem (16) – Exemples : PUSH AX PUSH DS PUSH ES:[3] PUSH [3](rappel : DS est le segment de données par défaut !) – Fonctionnement : SP est décrémenté de 2 et ensuite lopérande source est placée dans le stack segment à ladresse effective contenue dans SP. cest-à-diresub SP,2 mov BP,SP mov [BP], source où source est un registre ou une mémoire

6 La pile (ou Stack) (5/8) Linstruction POP – Va chercher dans la pile 2 octets au sommet de la pile – Utilisation : POP reg (16) POP mem (16) – Exemples : POP AX POP DS POP ES:[3] POP [3](rappel : DS est le segment de données par défaut !) – Fonctionnement : Le mot dans SS à ladresse effective SP est transféré dans lopérande destination et ensuite SP est incrémenté de 2. cest-à-diremov BP,SP mov dest, [BP] où dest est un registre ou une mémoire add SP,2

7 La pile (ou Stack) (6/8) Exemple dutilisation 1: inverser le contenu de AX et BX push ax mov ax, bx pop bx Exemple dutilisation 2: calcul de la somme des 300 premiers entiers sans tableau.model small.stack 600.code mov bx,0 ; bx reçoit la somme des 300 nombres mov ax,1 mov cx,300 charge :push ax ; chargement des 300 entiers dans la pile inc ax loop charge mov cx,300 somme :pop ax add bx,ax loop somme mov ah,4ch ; le résultat est dans bx int 21h end

8 La pile (ou Stack) (7/8) Exemple dutilisation 3 : sauvegarde de données quand – pas de registres disponibles – registre particulier utilisé remplissage dun tableau de 5 lignes et 3 colonnes avec les 15 premiers entiers (nb : utilisation de boucles imbriquées).model small.data tabdb 5 dup(3 dup(?)) ;tableau de 5 lignes et 3 colonnes.stack 2.code mov mov ds,ax lea bx,tab ; ou mov bx,offset tab mov al,1 mov cx,5 xor di,di boucle_ext :push cx mov cx,3 boucle_int :mov [bx][di],al inc al inc di loop boucle_int pop cx loop boucle_ext mov ah,4ch int 21h end

9 La pile (ou Stack) (8/8) Linstruction PUSHF – Empile le registre des indicateurs détat. – Les indicateurs détat ne sont pas modifiés par lopération. – Utilisation : PUSHF (pas dopérande) Linstruction POPF – Retire le mot situé au sommet de la pile et le copie dans le registre des indicateurs détat. – Les indicateurs sont tous affectés par cette opération. – Utilisation : POPF (pas dopérande)


Télécharger ppt "Système dexploitation : Assembleur Semaine 11 La pile."

Présentations similaires


Annonces Google