Piccola evoluzione che stampa solo la diagonale (per chi fosse interessato).
.globl main
.data
matrice: .word 0,1,2,3,4,5,6,7,8
Nrighe: .word 3
Ncolonne: .word 3
accapo: .asciiz "\n"
.text
main:
la $s1, accapo
li $t2, 0 #indice riga
li $t3, 0 #indice colonna
li $t4, 0 #indice scorrimento
lw $t0, Nrighe
lw $t1, Ncolonne
li $t8, 0
ciclo:
subi $t8, $t8, 1
beq $t3, $t1, fineCicloColonna
beq $t3, $t2, stampa
addi $t3, $t3, 1
addi $t4, $t4, 1
j ciclo
stampa:
sll $t5, $t4, 2
lw $s0, matrice($t5)
li $v0, 1
move $a0, $s0
syscall
li $v0, 11
li $a0, 32
syscall
addi $t3, $t3, 1
addi $t4, $t4, 1
j ciclo
fineCicloColonna:
addi $t2, $t2, 1
beq $t2, $t0, fine #controllo se ho superato l'ultima riga e esco
li $v0, 11
li $a0, 32
syscall
xor $t3, $t3, $t3
j ciclo
fine:
li $v0, 10
syscall