2 réponses
Salut,
Tu écris ton code en C, tu compiles et tu regardes le code assembleur généré (option -S ou /S du compilateur).
Tu écris ton code en C, tu compiles et tu regardes le code assembleur généré (option -S ou /S du compilateur).
; 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
; 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
Salut j'ai besoin solution de cette exercices
Écrire un programme assembleur pour MIPS R3000 qui permet de calculer le factoriel du nombre 6
Écrire un programme assembleur pour MIPS R3000 qui permet de calculer le factoriel du nombre 6