Afaeld

Fibonacci NASM var

Dec 3rd, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. EXTERN printf
  2. EXTERN puts
  3.  
  4. SECTION .data
  5. deb    db "Les 30 premiers nombres de fibo sont",13,10,0         ; chaine pour le printf
  6. deb2    db "%d",13,10,0
  7. nb     db  "%d",13,10,0
  8. vareax    dd 0
  9. varebx    dd 0
  10. varecx    dd 0
  11. varedx    dd 0
  12. SECTION .text
  13.  
  14.     GLOBAL main
  15.  
  16. main:
  17.     push deb
  18.     call puts
  19.     add esp,4
  20.     mov ebx,1
  21.     mov edx,0
  22.     mov eax,0
  23.     mov ecx,2;compteur
  24.  
  25.     ;On sauvegarde nos variables
  26.     call sauvegarde
  27.  
  28.     ;On affiche les deux premiers nombres de la suite /!\ le printf detruit les registres.
  29.     push eax
  30.     push deb2
  31.     call printf ;on affiche eax
  32.     add esp,8 ;on add 8 pour le push eax et deb2
  33.  
  34.     ;On restaure nos variables
  35.     call restauration
  36.  
  37.     ;Debut for
  38.     debut:
  39.  
  40.     mov edx,ebx ; edx = ebx
  41.     add ebx,eax ;ebx = ebx + eax
  42.     mov eax,edx ;eax = edx
  43.  
  44.     ;On sauvegarde nos variables
  45.     call sauvegarde
  46.  
  47.     push eax
  48.     push nb
  49.     call printf ;on affiche eax
  50.     add esp,8
  51.  
  52.     ;On restaure nos variables
  53.     call restauration
  54.  
  55.     inc ecx ;on incremente le compteur
  56.     cmp ecx, 30 ;Tant que ecx n'est pas égal à 30
  57.     jne debut ;On retourne au debut de la boucle
  58.     ret
  59.  
  60. ;Sauvegarde les registres
  61. sauvegarde:
  62.     mov [vareax],eax
  63.     mov [varebx],ebx
  64.     mov [varecx],ecx
  65.     mov [varedx],edx
  66.  
  67. ;Restaure les registres
  68. restauration:
  69.     mov eax,[vareax]
  70.     mov ebx,[varebx]
  71.     mov ecx,[varecx]
  72.     mov edx,[varedx]
Advertisement
Add Comment
Please, Sign In to add comment