summaryrefslogtreecommitdiff
path: root/tests/fibtest.asm
blob: bd053b9989d80006fe75c3ffaab336cc17448f4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
.data

str:
	.asciiz "Fibinacci Number "
	
str2:
	.asciiz " is: "

fib:
	.space 40
	
.text

main:
	addi $t0, $zero, 0
	addi $t1, $zero, 1
	add $t3, $zero, $zero
	la $t6, fib
	addi $t5, $zero, 9
	
	loop:
		add $t2, $t1, $t0
		add $t1, $zero, $t0
		add $t0, $zero, $t2
		sw $t2, 00($t6)
		addi $t3, $t3, 1
		addi $t6, $t6, 4
		bne $t3, $t5, loop
		nop
	addi $t6, $t6, -4
	loop2:
		la $a0, str
		jal PrintStr
		nop
		
		add $a0, $zero, $t3
		jal PrintInt
		nop
		
		la $a0, str2
		jal PrintStr
		nop
		
		lw $a0, 00($t6)
		jal PrintInt
		nop
		
		addi $a0, $zero, 10
		addi $v0, $zero, 11
		syscall
		
		addi $t3, $t3, -1
		addi $t6, $t6, -4
		bne $t3, $zero, loop2
		nop
	
	addi $v0, $zero, 10
	syscall
	
PrintInt:
	addi $v0, $zero, 1
	syscall
	jr $ra
	nop
	
PrintStr:
	addi $v0, $zero, 4
	syscall
	jr $ra
	nop