.data
lista:	.word n01
n01:	.word 4, n02
n02:	.word 5, n03
n03:	.word 6, n04
n04:	.word -17, n05
n05:	.word 7,0

.text
	lw a0, lista
	jal imprime 
	jal invierte
	jal imprime
	li a7, 10
	ecall
	
invierte:
	# caso base
	lw t0, 4(a0) 		# puntero sucesivo
	bne t0, zero, invierte_rec
	jalr zero, ra, 0	# ahora el nodo es solo

invierte_rec:
	addi sp, sp, -8
	sw ra, 0(sp)
	sw a0, 4(sp)	
	lw a0, 4(a0)
	jal invierte
	lw t0, 4(sp)
	lw t1, 4(t0)	
	sw t0, 4(t1)	
	sw zero, 4(t0)
	lw ra, 0(sp)
	addi sp, sp, 8
	jalr zero, ra, 0
	
imprime:	addi sp, sp, -4	# preparo el stack
	sw s0, 0(sp)	# salvo s0 en el  stack
	mv s0, a0	# meto a0 en s0
st_loop:lw a0, 0(s0)
	li a7, 1
	ecall
	li a0, 0x20
	li a7, 11
	ecall
	
	lw s0, 4(s0)	# contiene la dirección
	bne s0, zero, st_loop
	
	lw s0, 0(sp)
	addi sp, sp, 4
	jalr zero, ra, 0
