โ๏ธRECURSIVIDAD
Fact (n) = n * fact (n-1) for n > 0section .data
msg db 'Factorial de 3 es:', 0xa
len equ $ - msg
section .bss
fact resb 1 ; Almacenamos el resultado
proc_fact: ; Nombre de la funcion
cmp bl, 1 ; Compara bl a 1 si es mayor hace calculos
jg do_calculation ; si no establece ax en 1 y retorna
mov ax, 1
ret
do_calculation:
dec bl ; Decrementamos el valor en 1 a bl
call pro_fact ; Llama a pro_fact
inc bl ; Incrementa a bl
mul bl ; multiplica el resultado ax por bl
ret
section .text
global _start
_start:
mov bx, 3 ; Carga en 3 a bx, se usara para calcular el fact
call proc_fact ; Llama a la funcion para calcular el numero fact
add ax, 30h ; Agrega 0 a ax para imprimir el valor factorial
mov [fact], ax ; Guarda ax en fact para imprimir
mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80
mov edx, 1
mov ecx, fact
mov ebx, 1
mov eax, 4
int 0x80
mov eax, 1
int 0x80
รltima actualizaciรณn