l'appel de printf en x86 pour imprimer un entier

Je suis en train d'appel de printf pour imprimer un entier, mis il n'a pas d'imprimer le bon de valeur:

section .data

         an:    db 1
         format: db "num: %d" , 10, 0

section .text
         global main
         extern printf

main:
         push ebp
         mov ebp,esp

         mov eax, [an]
         push eax
         push dword format
         call printf

         add esp, 8
         mov esp,ebp
         pop ebp

         mov eax, 0
         ret

ce code affiche "num: 1836412417"

quand j'essaie d'imprimer un char ça marche!!!

section .data

         an:    db 'a'
         format: db "num: %c" , 10, 0

section .text
         global main
         extern printf

main:
         push ebp
         mov ebp,esp

         mov eax, [an]
         push eax
         push dword format
         call printf

         add esp, 8
         mov esp,ebp
         pop ebp

         mov eax, 0
         ret

maintenant, il imprime "num: un"

quel est donc le problème avec le premier code ?!!

OriginalL'auteur 3la210 | 2015-03-19