Bonjour,

Je vous propose un nouvel élément à utiliser : Interfacer du code assembleur et du C

Ce code source montre comment utiliser correctement une fonction C de la bibliothèque standard GNU libc dans un code écrit en assembleur GNU.

Important[1] : Les étapes 3-9 d'appel des sous programmes en assembleur (http://asm.developpez.com/telecharge...-en-assembleur) sont invisibles, puisque nous sommes pas responsable de l'implémentation de la fonction standard. On va juste l'utiliser !

Important[2] : L'ordre de passage des paramètres par la pile est significatif !!!

Notre code utilise deux fonctions : scanf et printf. Leur stack frame est organisé comme suit :
Code texte :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
----------------------------------------------------------------
   adresse    |    paramètre
--------------+-------------------------------------------------
   0(%ebp)    |    l'ancien EBP
------------- +-------------------------------------------------
   4(%ebp)    |    adresse de retour
--------------+-------------------------------------------------
   8(%ebp)    |    adresse de format (pformat et sformat)
--------------+-------------------------------------------------
   12(%ebp)   |	valeur/adresse de la variable jour
--------------+-------------------------------------------------
   16(%ebp)   |	valeur/adresse de la variable mois
--------------+-------------------------------------------------
   20(%ebp)   |     valeur/adresse de la variable an
----------------------------------------------------------------

Les valeurs de retour de scanf est printf sont passées via le registre EAX.

Qu'en pensez-vous ?