Per provare ad impratichirmi un po' con le matrici sto provando a fare un programmino il quale data una matrice di 3 righe e 5 colonne mi stampa tutto il suo contenuto riga per riga.

Purtroppo però il codice pare avere qualche problemino, anche se io non lo riesco a vedere.
Ci sono un paio di punti che non mi sono chiari (li ho segnalati, tra l'altro), ma non so se dipende da quelli.

Come emulatore uso Spim.

Potete darmi una mano??

codice:
.data
 MATRICE: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
 N_RIGA: .word 3
 N_COL: .word 5
 NEW_LINE: .ascii "\n"
 VIRGOLA: .ascii ","

.text
.globl main
 main:
  lw $s0,N_RIGA # numero totale righe
  lw $s1,N_COL # numero totale colonne
  la $s2,MATRICE
  li $t0,0 # indice riga
  li $t1,0 # indice colonna

  ciclo: 
   beq $t0,$s0,esci
   
   # il registro t3 verrà usato per calcolare il valore k-esimo della matrice
   mul $t3,$s1,$t0 
   add $t3,$t3,$t1
   mul $t3,$t3,4

   li $v0,4
   la $a0,MATRICE($t3) #questa non la capisco tanto bene
   syscall

   add $t1,$t1,1 # incremento indice colonna

   beq $t1,$s1,ciclo2 # se ho finito di scansionare tutte le colonne della i-esima riga ($t0) vado a ciclo 2

   li $v0,4
   la $a0,VIRGOLA
   syscall

   j ciclo

  ciclo2: 
   add $t0,$t0,1 # incremento indice riga
   li $t1,0 # setto a 0 indice colonna
   
   li $v0,4
   la $a0,NEW_LINE # perchè?
   syscall
   
   j ciclo       
  
  esci:
   li $v0,10
   syscall
Grazie