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 12 Les procédures.

Présentations similaires


Présentation au sujet: "Système dexploitation : Assembleur Semaine 12 Les procédures."— Transcription de la présentation:

1 Système dexploitation : Assembleur Semaine 12 Les procédures

2 Les procédures (1/9) Blocs dinstructions 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 nimporte quel point du programme. 2 étapes dans lécriture dune procédure : la DECLARATION et lAPPEL DECLARATION dune procédure : Forme générale:nomPROC …… RET nomENDP; end of procedure où nom est le label (cest le nom de la procédure) PROC est linstruction qui indique le début de la procédure nom ENDP est linstruction qui indique la fin de la procédure nom RET est linstruction qui rend la main au programme appelant

3 Les procédures (2/9) APPEL dune procédure – Forme générale :CALL nom où CALL est linstruction qui permet dexé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 – Linstruction CALL provoque le dépôt automatique sur la pile (c.à.d. un PUSH) de ladresse de retour, c.à.d. ladresse de linstruction qui suit CALL en mémoire. – Appel intra-segment : seul IP est empilé : – Appel inter-segment : CS et IP sont empilés : avantaprès AA BB IP SP avantaprès AA B IP B CS SP

4 Les procédures (3/9) FONCTIONNEMENT (suite) – Linstruction RET met fin à lexécution de la procédure et provoque lexécution de linstruction dont ladresse se trouve sur la pile (c.à.d. ladresse de retour qui fut empilée par le CALL). – RET effectue donc un POP qui vient charger IP (cas dun appel intra-segment) ou CS et IP (cas dun appel inter-segment). – Rem importante : Etant donné que lutilisation des procédures nécessite le passage par la pile, ne pas oublier dutiliser la directive.STACK !! TYPE DUNE PROCEDURE – Le type de la procédure (NEAR ou FAR) est donné en argument de PROC Exemple : nom PROC NEAR – Si le type nest 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

5 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 dempiler 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 lappel à une fonction, le programme appelant empile lui-même les paramètres à passer à la fonction et dépile les paramètres de retour.

6 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 dentré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 proc1proc ; mise à FFFF de 4 registres ; paramètres dentrée : aucun ; paramètres de sortie : aucun mov ax,0FFFFh mov bx,0FFFFh mov cx,0FFFFh mov dx,0FFFFh ret proc1 endp end

7 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 adw 1234h bdw 5678h.code mov 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 dentrée : les opérandes en AX et BX ; paramètres de sortie : le résultat dans AX add ax,bx ret sommeendp end

8 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 adw 1234h bdw 5678h resultdw ?.code mov mov ds,ax mov si,offset a mov di,offset b mov bx,offset result call somme mov ah,4ch int 21h sommeproc ; calcul de la somme de 2 nombres ; paramètres dentrée : adresse des opérandes en SI et DI ; paramètres de sortie : Résultat à ladresse pointée par BX ;(c.à.d. dans result) mov ax,[si] add ax,[di] mov [bx],ax ret sommeendp 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)

9 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 adw 1234h bdw 5678h resultdw ?.code mov 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 sommeproc ; calcul de la somme de 2 nombres ; paramètres dentré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 sommeendp end

10 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 RESULT B B B A A IP Début.CODEAprès PUSH RESULT Après PUSH B Après PUSH A Après CALL SP : 00 RESULT B A IP SP : 02 RESULT B A IP SP : 04 RESULT B A SP : 06 RESULT B BP... Après PUSH BPAprès POP BP Après RET Après POP A


Télécharger ppt "Système dexploitation : Assembleur Semaine 12 Les procédures."

Présentations similaires


Annonces Google