les procedures et fonctions en assembleur du 80386

Pages: 6 (1398 mots) Publié le: 17 juin 2014
°°°°°°)))))))))))

puisse DIEU nous aider a réussir










Filière: SYSTEME ELECTRONIQUE ET INFORMATIQUE
CLASSE: 1ère ANNÉE


sommaire
Introduction..................................2
I-Programmation d'une procédure......3
II-Programmation d'une fonction........6
conclusion....................................8















Introduction (auxProcédures et fonctions en assembleur)

Ce tutoriel vous apprendra les bases sur la programmation de procédures et fonctions en assembleur. Toujours en partant du principe que vous connaissiez déjà le langage C, nous allons rappeler ce à quoi correspondent les fonctions et procédures en programmation :

Procédure : c'est un morceau de code isolé qui est - dans la plus part des cas -destiné à êtreappelé par la routine principale de notre programme ou bien par d'autres procédures/fonctions. Elle peut attendre des arguments afin de fonctionner ;
Fonction : Même principe que la procédure, sauf qu'une fonction renvoie une valeur à la routine principale/procédure/fonction appelante. On peut stocker cette valeur retournée dans une variable, l'utiliser directement, etc...


Exemple de procédure (enC) :
Code : C
void afficher_menu() {
   ("1: addition\n"
    "2: soustraction\n"
    "3: multiplication\n"
    "4: division\n"
    "5: quitter\n");
}


Cette procédure se contente bêtement d'afficher un menu pour programme qui fait office de calculatrice, par exemple.

Voici une bête fonction qui se contente de retourner le carré d'un nombre :
Code : C
void carre(int n) {    return n*n;
}


Le but de notre exposé est de faire la même chose en assembleur. Pour cela, on implémentera plusieurs morceaux de codes pour valider l'aspect théorique du tutoriel.
Pour mener à bien ce projet, nous verrons comment programmer une procédure/fonction, comment l'appeler, puis nous nous intéresserons à un bête exemple de programme (valide) pour résumer tout ça.


I-Programmation d'uneprocédure

Une procédure est amenée à être appelée, donc, tout d'abord, elle doit être identifiée. Nous l'identifierons par un "label".
Code : asm
MaProcedure:    ; le label
                ; ... du code
                ; ...


Supposons que cette procédure n'attende aucun argument. Ce qu'elle doit tout de même faire, c'est sauvegarder l'état de la pile après son appel pour ne pas lamodifier. Pour cela, elle se sert des instructions suivantes :
Code : asm
push ebp
mov ebp, esp

Ce jeu d'instructions sert à sauvegarder la base de la pile au sommet, puis de faire une pile "vide" au-dessus de nos sauvegardes : ebp = esp, la pile fait 0 octets.

Des schémas pour mieux comprendre :


Etat de la pile après un push ebp

J'ai surligné "sauvegarde ebp" en cyan. Pour ce qui estde "adresse retour", ne vous en souciez pas pour le moment, je vous expliquerai plus tard pourquoi j'ai eu besoin de l'imager sur le schéma.




Et voici l'état de la pile après mov ebp, esp :


Etat de la pile après un mov ebp, esp

J'ai barré le "PILE", pour vous monter que notre nouvelle pile - temporaire, bien entendu - est au-dessus de tout ce qui a été empilé. Ainsi, la procédurepeut se servir de cette nouvelle pile vide.

Après avoir fait tout son travail, la procédure utilisera l'instruction "leave", qui aura pour but de mettre la valeur d'esp dans l'ebp de la fonction. On aura temporairement ebp "au-dessus" d'esp. Soit une pile à l'envers. Cependant, il y aura, au sommet de la pile sens dessus dessous, notre sauvegarde d'ebp. On n'a plus qu'à la dépiler dans ebplui-même pour que notre pile soit restaurée.

Enfin, on fait un ret pour revenir au programme principal. Résumons le code d'une procédure :
Code : asm
MaProcedure:
    push ebp
    mov ebp, esp
    ; ... du code
    ; ...
    leave
    ret


Voyons maintenant comment un programme principal appellera cette procédure :
Code : asm
start: ; point d'entrée du programme
; ......
Lire le document complet

Veuillez vous inscrire pour avoir accès au document.

Vous pouvez également trouver ces documents utiles

  • Fonctions et procédures standards en langage pascal
  • Procédure de recrutement dans la fonction publique sénégalaise
  • Assembleur
  • assembleur
  • Assembleurs
  • assembleur 6809
  • initiation Assembleur
  • projet en assembleur

Devenez membre d'Etudier

Inscrivez-vous
c'est gratuit !