#  ---------------------------------------------------------------------------------- 
#				tutorias.co  |  @tutorias
#  ----------------------------------------------------------------------------------

.data
uno:     .word 1	# uno inicializara un registrador en el valor uno
cadena:  .ascii 	"Favor ingrese numero a calcular factorial: "
line:	 .asciiz 	"\n"	# line tomara un salto de línea

.text 
.globl main		

main:

lw $s1 uno		# inicializa registrador $s1 en uno (1)
lw $s2 uno		# inicializa registrador $s2 en uno (1)			

la $a0 cadena		# carga cadena en $a0
li $v0 4		# carga $v0 a 4: permite mostra una cadena
syscall	

li $v0 5		# carga $v0 a 5: permite leer un entero
syscall
move $t0 $v0
move $s0 $t0		
			
beq $s0 $zero printCero	# el factorial de cero es 1
				

loop:

beq $s0 $s1 print
mul $s2 $s2 $s0		# $s2 toma el valor del producto entre $s2 y $s0
sub $s0 $s0 $s1		# $s0 se decrementa para continuar con el ciclo
j loop			# jump: salto

print:

la $a0 line		# carga salto de linea en $a0 para imprimirla
li $v0 4
syscall

move $a0 $s2
li $v0 1		# carga $v0 a 1: permite mostrar un entero			
syscall
j fin

printCero:

la $a0 line		# carga salto de linea en $a0 para imprimirla
li $v0 4		# carga $v0 a 4: permite mostrar una cadena
syscall

move $a0 $s1
li $v0 1		# carga $v0 a 1: permite mostrar un entero			
syscall

fin:

li $v0 10					
syscall			# salir	
