-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.asm
More file actions
executable file
·82 lines (82 loc) · 1.12 KB
/
test.asm
File metadata and controls
executable file
·82 lines (82 loc) · 1.12 KB
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
71
72
73
74
75
76
77
78
79
80
81
82
.data
_prompt: .asciiz "Enter an integer:"
_ret: .asciiz "\n"
.globl main
.text
read:
li $v0, 4
la $a0, _prompt
syscall
li $v0, 5
syscall
jr $ra
write:
li $v0, 1
syscall
li $v0, 4
la $a0, _ret
syscall
move $v0, $0
jr $ra
func:
addi $sp, $sp, -24
sw $a0,0($sp)
lw $t0,0($sp)
li $t1,1
beq $t0,$t1,label0
j label1
label0:
li $t0,1
move $v0,$t0
addi $sp, $sp, 24
jr $ra
j label2
label1:
lw $t0,0($sp)
li $t1,1
sub $t0, $t0, $t1
sw $t0, 12($sp)
lw $t0,12($sp)
move $a0,$t0
addi $sp, $sp, -4
sw $ra, 0($sp)
jal func
lw $ra, 0($sp)
addi $sp, $sp, 4
sw $v0,16($sp)
lw $t0,0($sp)
lw $t1,16($sp)
mul $t0, $t0, $t1
sw $t0, 20($sp)
lw $t0,20($sp)
move $v0,$t0
addi $sp, $sp, 24
jr $ra
label2:
main:
addi $sp, $sp, -28
addi $sp, $sp, -4
sw $ra, 0($sp)
jal read
lw $ra, 0($sp)
addi $sp, $sp, 4
sw $v0,0($sp)
lw $t0,0($sp)
move $a0,$t0
addi $sp, $sp, -4
sw $ra, 0($sp)
jal func
lw $ra, 0($sp)
addi $sp, $sp, 4
sw $v0,24($sp)
lw $t0,24($sp)
move $a0, $t0
addi $sp, $sp, -4
sw $ra, 0($sp)
jal write
lw $ra, 0($sp)
addi $sp, $sp, 4
li $t0,0
move $v0,$t0
addi $sp, $sp, 28
jr $ra