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