Here is the code we wrote today:

	addi	$v0, $zero, 5		#read int and store in a0
	syscall
	add	$a0, $zero, $v0
	
	jal	fib
	
	add	$a0, $v0, $zero		#print int from v0
	addi	$v0, $zero, 1
	syscall
	
	addi	$v0, $zero, 10		#exit
	syscall
	
fib:	addi	$sp, $sp, -16
	sw	$ra, ($sp)
	sw	$s0, 4($sp)
	sw	$s1, 8($sp)
	
	addi	$s1, $a0, 0		#n is in s1
	
	addi	$t0, $zero, 2
	blt	$a0, $t0, doit		#if(n < 2)
	b	recurse
	
doit:	add	$v0, $zero, $a0		#return n;
	b	return
	
recurse:
	addi	$a0, $s1, -1		#int val1 = fib(n-1);
	jal	fib
	add	$s0, $v0, $zero		#val1 is in s0
	
	addi	$a0, $s1, -2		#int val2 = fib(n-2);
	jal	fib
	
	add	$v0, $s0, $v0		#return val1 + val2;
	
return:	#return
	lw	$ra, ($sp)
	lw	$s0, 4($sp)
	lw	$s1, 8($sp)
	addi	$sp, $sp, 16
	jr	$ra