-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAZZERAMENTO DIAGONALE
159 lines (109 loc) · 1.52 KB
/
AZZERAMENTO DIAGONALE
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
.data
inserisci: .asciiz "inserisci matrice "
spazio: .asciiz " "
duepunti: .asciiz ":"
accapo: .asciiz "\n"
.text
.globl main
main:
addi $sp,$sp,-36
move $s0,$sp
move $a0,$s0
jal inserimento
move $a0,$s0
jal stampa
move $a0,$s0
jal azzera_diagonale
la $a0,accapo
li $v0,4
syscall
move $a0,$s0
jal stampa
esci:
addi $sp,$sp,36
li $v0,10
syscall
inserimento:
move $t9,$a0
li $t0,0
li $t1,0
ciclo_inserimento:
beq $t0,3,incrementa_i
la $a0,inserisci
li $v0,4
syscall
move $a0,$t0
li $v0,1
syscall
la $a0,spazio
li $v0,4
syscall
move $a0,$t1
li $v0,1
syscall
la $a0,duepunti
li $v0,4
syscall
li $v0,5
syscall
move $t3,$v0
sw $t3,($t9)
addi $t9,$t9,4
addi $t0,$t0,1
j ciclo_inserimento
incrementa_i:
addi $t1,$t1,1
beq $t1,3,esci_definitivo
li $t0,0
j ciclo_inserimento
esci_definitivo:
jr $ra
stampa:
move $t9,$a0
li $t0,0
li $t1,0
ciclo_esterno:
beq $t0,3,incrementa_i_stampa
lw $t2,($t9)
move $a0,$t2
li $v0,1
syscall
la $a0,spazio
li $v0,4
syscall
addi $t9,$t9,4
addi $t0,$t0,1
j ciclo_esterno
incrementa_i_stampa:
la $a0,accapo
li $v0,4
syscall
addi $t1,$t1,1
beq $t1,3,esci_definitivo_stampa
li $t0,0
j ciclo_esterno
esci_definitivo_stampa:
jr $ra
azzera_diagonale:
move $t9,$a0
li $t0,0
li $t1,0
loop_azzera:
beq $t0,3,incrementa_i_azzera
lw $t2,($t9)
beq $t0,$t1,swap
addi $t9,$t9,4
addi $t0,$t0,1
j loop_azzera
swap:
sw $zero,($t9)
addi $t9,$t9,4
addi $t0,$t0,1
j loop_azzera
incrementa_i_azzera:
addi $t1,$t1,1
beq $t1,3,esci_definitiva
li $t0,0
j loop_azzera
esci_definitiva:
jr $ra