Ciao a tutti,
avrei bisogno di un vostro consiglio circa un programma scritto in assembly che lavora con le matrici.
Per farvi capire bene cosa deve fare il programma in questione vi faccio un esempio:

Immaginate di avere la seguente matrice formata da 4 righe e 3 colonne:
1 2 3
4 5 6
7 8 9
10 11 12

la voglio stampare in questo modo:
1 4 7 10
2 5 8 11
3 6 9 12

Il codice che tra qualche riga vi postero funziona egregiamente se lavoro con una matrice che ha lo stesso numero di righe e di colonne, mentre negli altri casi non so perchè ma non funziona a dovere.

Ecco il codice:
codice:
.data
 MATRICE: .word  1,2,3,4,5,6,7,8,9,10,11,12
 N_RIGHE: .word 4
 N_COL: .word 3	
 NEW_LINE: .ascii "\n"
 SPAZIO: .ascii " "
 
.text
.globl main
 main:
  lw $s0,N_RIGHE # numero righe
  lw $s1,N_COL # numero colonna
  li $t0,0 # indice righe
  li $t1,0 #indice colonne

 WHILE:
  beq $t1,$s1,ESCI
  beq $t0,$s0,CAMBIA_COL

  mul $t5,$s0,$t0 #t5 rappresenta l'elemento k della matrice
  add $t5,$t5,$t1
  mul $t5,$t5,4
  
  li $v0,1
  lw $a0,MATRICE($t5)
  syscall

  li $v0,4
  la $a0,SPAZIO
  syscall
  
  add $t0,$t0,1
  j WHILE

 ESCI:
  li $v0,10
  syscall

 CAMBIA_COL:
  li $t0,0
  add $t1,$t1,1

  li $v0,4
  la $a0,NEW_LINE
  syscall

  j WHILE
Datemi una mano per piacere.

Grazie