Factorielle en assembleur

salut tt le monde est ce que vous pouvez m'aider a regler ce probleme:voila g un probleme pour ecrire un prog en assembleur qui calcul le factorielle d'un nombre entier
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,

    Tu écris ton code en C, tu compiles et tu regardes le code assembleur généré (option -S ou /S du compilateur).
    1. ; unsigned long factorielle (unsigned int);
      ; retourne dans EAX la factorielle du nombre en EBP+8
      ; Registres détruits : EAX, ECX, EDX
      _factorielle proc
      push ebp
      mov ebp, esp

      ; Sauvegarde des registes conventionnelle
      push ebx

      mov ebx, [ebp+8]
      test ebx, ebx
      jnz appel_recursif

      ; Si n == 0 on retourne 1
      mov eax, 1
      jmp fin

      ; Sinon on retourne n*factorielle(n-1)
      appel_recursif:
      lea ecx, [ebx-1] ;
      push ecx ;
      call _factorielle ; EAX = factorielle (n-1)
      add esp, 4 ;

      mul ebx ; EDX:EAX = EAX*EBX

      fin:
      ; Restauration des registre
      pop ebx
      pop ebp

      ret
      _factorielle endp
    2. @zozoanisSalut j'ai besoin solution de cette exercices
      Écrire un programme assembleur pour MIPS R3000 qui permet de calculer le factoriel du nombre 6