Système d’exploitation : Assembleur

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

La boucle for : init7.c et init71.c
Chapitre annexe. Récursivité
Les fonctions A quoi ça sert ?
Les procédures et interruptions en Assembleur (Tasm)
Introduction. Les pointeurs Bête noir des programmeurs Pas daide de Visual Studio Sauf en utilisant les « break point » Pas toujours intuitif Facile de.
SSTIC 2004: Détections Heuristiques en environnement Win32 Nicolas Brulez – Silicon Realms.
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
merci Laurent JEANPIERRE
Assembleur
La pile un élément essentiel
C.
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Les structures de données
Paramètres et pointeurs
Architecture de machines Le microprocesseur
Système d’exploitation : Assembleur
PILE voir l'animation: Diaporama / Visualiser ...
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Principes de programmation (suite)
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Système d’exploitation : Assembleur
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les fichiers. Inclusion de fichiers Il est possible daccéder à des procédures, des macros ou des définitions EQU qui se trouvent dans dautres fichiers.
Les piles Djamal Rebaïne.
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.
CSI3525: Concepts des Langages de Programmation Notes # 12: Implementation des Sous-Programmes ( Lire Chapitre 9 )
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Les pointeurs 1. Notion de pointeurs cest Travailler avec les pointeurs cest Se rapprocher du matériel Nécessite de bien connaitre le fonctionnement de.
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
LE MICROPROCESSEUR 8086/8088 Architecture externe du 8086
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
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
Environnements d'exécution
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.
Chapitre 9 Les sous-programmes.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Système d’exploitation : Assembleur
Système d’exploitation : Assembleur
Processeur modèle 8086 David Saint-Mellion.
Traitement des tableaux et chaînes de caractères
Cours Architecture des Systèmes Informatiques
Architecture Des Ordinateurs Microprocesseur Et Mémoire
Architecture interne du microprocesseur 8086.
Architectures des ordinateurs
Introduction au langage C Fonctions et Procédures
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.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
ISBN Chapitre 10 L'implémentation des sous- programmes.
Système d’exploitation : Assembleur Semaine 01 Introduction.
Patricia Renault UPMC 2005/2006
Patricia Renault UPMC 2005/2006
Patricia Renault UPMC 2005/2006
Scripts et fonctions Instructions de contrôle
Les instructions de contrôle
Tour rapide d’un premier programme SPARC v9

Chapitre 9 Les caractères.
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.
Organisation de la mémoire pour le langage minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Introduction à l’Informatique Licence SPI Mme Delmotte.
Automne 2002 Martin Dubois Programmation système IFT Semaine 02 Retour sur la semaine 01 Les outils de développement logiciel Les outils que nous.
Transcription de la présentation:

Système d’exploitation : Assembleur Semaine 12 Les procédures

Les procédures (1/9) Blocs d’instructions permettant de réaliser un traitement spécifique. Les procédures permettent de découper un programme en modules distincts qui pourront être appelés depuis n’importe quel point du programme. 2 étapes dans l’écriture d’une procédure : la DECLARATION et l’APPEL DECLARATION d’une procédure : Forme générale : nom PROC …… RET nom ENDP ; end of procedure où nom est le label (c’est le nom de la procédure) PROC est l’instruction qui indique le début de la procédure nom ENDP est l’instruction qui indique la fin de la procédure nom RET est l’instruction qui rend la main au programme appelant

Les procédures (2/9) APPEL d’une procédure FONCTIONNEMENT Forme générale : CALL nom où CALL est l’instruction qui permet d’exécuter une procédure nom est le nom de la procédure CALL va réaliser : 1) un PUSH 2) une modification de IP FONCTIONNEMENT L’instruction CALL provoque le dépôt automatique sur la pile (c.à.d. un PUSH) de l’adresse de retour, c.à.d. l’adresse de l’instruction qui suit CALL en mémoire. Appel intra-segment : seul IP est empilé : Appel inter-segment : CS et IP sont empilés : avant après A B IP SP avant après A B IP CS SP

Les procédures (3/9) FONCTIONNEMENT (suite) TYPE D’UNE PROCEDURE L’instruction RET met fin à l’exécution de la procédure et provoque l’exécution de l’instruction dont l’adresse se trouve sur la pile (c.à.d. l’adresse de retour qui fut empilée par le CALL). RET effectue donc un POP qui vient charger IP (cas d’un appel intra-segment) ou CS et IP (cas d‘un appel inter-segment). Rem importante : Etant donné que l’utilisation des procédures nécessite le passage par la pile, ne pas oublier d’utiliser la directive .STACK !! TYPE D’UNE PROCEDURE Le type de la procédure (NEAR ou FAR) est donné en argument de PROC Exemple : nom PROC NEAR Si le type n’est pas indiqué, le type est en accord avec le .model NEAR pour “small” et “compact” ; FAR pour “medium”, ”large” et “huge”. Avec NEAR, seul IP est empilé. Avec FAR, CS et IP sont empilés. Si le type par défaut ne convient pas, utiliser NEAR ou FAR

Les procédures (4/9) PASSAGE DE PARAMETRES A UNE PROCEDURE Il existe plusieurs manières de passer des paramètres à une procédure : par les registres Le plus rapide, mais nombre limité de registres. par la pile : il suffit d’empiler avant le CALL. le paramètre peut être une valeur ou une adresse (= un pointeur). La procédure peut alors faire varier la valeur de la variable en utilisant le pointeur. Le registre BP (Base Pointer - lié à SS) sera utilisé pour accéder aux paramètres situés dans la pile. PASSAGE DES PARAMETRES EN LANGAGE C Lors de l’appel à une fonction, le programme appelant empile lui-même les paramètres à passer à la fonction et dépile les paramètres de retour.

Les procédures (5/9) REGLE DE BONNE PRATIQUE La procédure commencera par une zone de commentaires : nom PROC ;==================================================; ; Indiquer brièvement ici ce que fait la procédure ; ; ; ; Paramètres d’entrée : ; ; Paramètres de sortie : ; EXEMPLE 1 : procédure qui met à FFFF les registres ax,bx,cx,dx .model small .stack .code call proc1 mov ah,4ch int 21h proc1 proc ; mise à FFFF de 4 registres ; paramètres d’entrée : aucun ; paramètres de sortie : aucun mov ax,0FFFFh mov bx,0FFFFh mov cx,0FFFFh mov dx,0FFFFh ret proc1 endp end

Les procédures (6/9) EXEMPLE 2 : calcul de la somme de 2 nombres passés comme paramètres en utilisant les registres AX et BX (passage par valeur). .model small .stack .data a dw 1234h b dw 5678h .code mov ax,@data mov ds,ax mov ax, a mov bx, b call somme mov ah,4ch int 21h somme proc ; calcul de la somme de 2 nombres ; paramètres d’entrée : les opérandes en AX et BX ; paramètres de sortie : le résultat dans AX add ax,bx ret somme endp end

Les procédures (7/9) EXEMPLE 3 : Somme de 2 nombres passés comme paramètres en utilisant les registres SI, DI et BX (passage par adresse). .model small .stack .data a dw 1234h b dw 5678h result dw ? .code mov ax,@data mov ds,ax mov si,offset a mov di,offset b mov bx,offset result call somme mov ah,4ch int 21h somme proc ; calcul de la somme de 2 nombres ; paramètres d’entrée : adresse des opérandes en SI et DI ; paramètres de sortie : Résultat à l’adresse pointée par BX ; (c.à.d. dans result) mov ax,[si] add ax,[di] mov [bx],ax ret somme endp end Remarque: : Etant donné que AX est utilisé dans la procédure, si la valeur de AX avait été importante pour la suite du programme, AX aurait été sauvé sur la pile avant le CALL (en utilisant PUSH AX)

Les procédures (8/9) EXEMPLE 4 : calcul de la somme de 2 nombres (16 bits) passés comme paramètres en utilisant la pile. .model small .stack .data a dw 1234h b dw 5678h result dw ? .code mov ax,@data mov ds,ax push result push b ; passage des push a ; paramètres call somme pop a pop b pop result mov ah,4ch int 21h somme proc ; calcul de la somme de 2 nombres ; paramètres d’entrée : les opérandes a et b dans la pile ; paramètres de sortie : le résultat dans la pile push bp ; sauve bp mov bp,sp mov ax,[bp+4] add ax, [bp+6] mov [bp+8],ax pop bp ; récupère bp ret somme endp end

Les procédures (9/9) EXEMPLE 4 (suite): Que se passe-t-il dans la pile ? RESULT SP : 0A SP : 02 SP : 04 SP : 06 SP : 08 B A IP Début .CODE Après PUSH RESULT Après PUSH B Après PUSH A Après CALL SP : 00 RESULT B A IP SP : 02 SP : 04 SP : 06 BP ... Après PUSH BP Après POP BP Après RET Après POP A