.data
x:	.word 12

.text
	lw a0, x	# cargo x
	jal fact
	li a7, 1
	ecall
	li a7, 10
	ecall
	
fact:	bne a0, zero, carga
	li a0, 1	# caso base: n=0
	jalr zero, ra, 0
	
carga:	addi sp, sp, -8
	sw ra, 0(sp)	# lo guardo en el  stack
	sw a0, 4(sp)	# lo guardo en el stack
	addi a0, a0, -1	# a0 contiene n
	jal fact
	# en a0 está el  fact(n-1) por hipotesis
	lw t0, 4(sp)
	mul a0, a0, t0
	lw ra, 0(sp)
	addi sp, sp, 8
	jalr zero, ra, 0
