Système d’exploitation : Assembleur

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Les procédures et interruptions en Assembleur (Tasm)
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Structures de données et complexité
Structures de données et complexité LIFO – FILO – FIFO – etc…
GEF 243B Programmation informatique appliquée
Plan du cours : 2ème Partie
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
Interface Matériel/logiciel
merci Laurent JEANPIERRE
Assembleur
La pile un élément essentiel
Ref :
Interface Matériel/logiciel
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Les structures de données
Architecture de machines Le microprocesseur
PILE voir l'animation: Diaporama / Visualiser ...
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
ARCHITECTURE GLOBALE CAPTAGE Traitement DES des données GRANDEURS
Points importants de la semaine Les types arithmétiques. Les opérateurs.
Système d’exploitation : Assembleur
Assembleur.
Structures de données linéaires
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Architecture et technologie des ordinateurs II
Les piles Djamal Rebaïne.
II. Chaînage, SDD séquentielles
La récursivité Une procédure est dite récursive si, et seulement si, elle fait appel à elle-même, soit directement soit indirectement Djamal Rebaïne Djamal.
Système d’exploitation : Assembleur
LE MICROPROCESSEUR 8086/8088 Architecture externe du 8086
INTRODUCTION AU Février 2008
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Système d’exploitation : Assembleur
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Architecture et technologie des ordinateurs II
Les fichiers 1Djamal Rebaine. Inclusion de fichiers Il est possible daccéder à des procédures, des macros ou des définitions EQU qui se trouvent dans.
Assembleur.
Méthode et Outils pour la Programmation
Structures de données IFT-10541
Plan cours La notion de pointeur et d’adresse mémoire.
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Processeur modèle 8086 David Saint-Mellion.
Les bases de l’assembleur
Traitement des tableaux et chaînes de caractères
Ch. PAUL - Piles et Files à l'aide de listes chainées
Cours Architecture des Systèmes Informatiques
LES PILES ET FILES.
Architecture Des Ordinateurs Microprocesseur Et Mémoire
Architecture interne du microprocesseur 8086.
Architectures des ordinateurs
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Système d’exploitation : Assembleur Semaine 01 Introduction.
UE MAREP Cours 8 : La pile d’exécution (Fonctions imbriquées et fonctions récursives) Patricia Renault UPMC 2005/2006.
UE MAREP Cours 9 : Tableaux
Patricia Renault UPMC 2005/2006
Patricia Renault UPMC 2005/2006
Patricia Renault UPMC 2005/2006
Les instructions de contrôle
Chapitre 3 L’accès aux données.

CHAPITRE 10 Les sous-programmes 1. Sous-programme Suite d’instructions appelée de manière répétitive Par un programme Par plusieurs programmes distincts.
Transcription de la présentation:

Système d’exploitation : Assembleur Semaine 11 La pile

La pile (ou Stack) (1/8) Zone de mémoire utilisée comme zone de travail Sauvegarde temporaire d’information (par exemple : contenu d’un registre, valeur des indicateurs, adresse, …) Utilisée par CALL (procédures), INT, ... Réservation de la pile à l’aide de la directive .STACK (opérande: taille de la pile, en octets) Exemple : .STACK 100h (256 octets dans le Stack Segment) .STACK (Pas d’opérande, réservation de 1 Ko) La pile fonctionne comme une pile d’assiettes : 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).

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 100h alors 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

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

La pile (ou Stack) (4/8) L’instruction 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 l’opérande source est placée dans le stack segment à l’adresse effective contenue dans SP. c’est-à-dire sub SP,2 mov BP,SP mov [BP], source où source est un registre ou une mémoire

La pile (ou Stack) (5/8) L’instruction 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 à l’adresse effective SP est transféré dans l’opérande destination et ensuite SP est incrémenté de 2 . c’est-à-dire mov BP,SP mov dest, [BP] où dest est un registre ou une mémoire add SP,2

La pile (ou Stack) (6/8) Exemple d’utilisation 1: inverser le contenu de AX et BX push ax mov ax, bx pop bx Exemple d’utilisation 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 somme : pop ax add bx,ax loop somme mov ah,4ch ; le résultat est dans bx int 21h end

La pile (ou Stack) (7/8) Exemple d’utilisation 3 : sauvegarde de données quand pas de registres disponibles registre particulier utilisé remplissage d’un tableau de 5 lignes et 3 colonnes avec les 15 premiers entiers (nb : utilisation de boucles imbriquées) .model small .data tab db 5 dup(3 dup(?)) ;tableau de 5 lignes et 3 colonnes .stack 2 .code mov ax,@data 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

La pile (ou Stack) (8/8) L’instruction PUSHF L’instruction POPF Empile le registre des indicateurs d’état. Les indicateurs d’état ne sont pas modifiés par l’opération. Utilisation : PUSHF (pas d’opérande) L’instruction 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 d’opérande)