PDA

Visualizza la versione completa : [ASSEMBLY] Stampa di una matrice al contrario


Downloader
19-04-2008, 19:14
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:


.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

Loading