PDA

View Full Version : [MIPS] Matrici ed inserimento input dati


nidhogg
06-04-2012, 10:19
Buongiorno a tutti. Ho un problema con un progetto MIPS che mi sta un pò incasinando la vita.
Devo creare due matrici, inserendo gli elementi e le loro dimensioni (devono essere entrambe quadrate e uguali), calcolarne il prodotto scalare e mettere il risultati in una terza matrice.
Per il calcolo del prodotto scalare credo di avercela fatta. L'unica cosa che mi blocca è l'inserimento dei valori in input. Ok, uso read_int e syscall sia per gli elementi che per il lato-matrice. Ma come devo organizzarmi con i registri?

Vi allego il codice su cui sto lavorando, per provare a vedere se funzionava ho messo delle matrici già pre-impostate:
So che dovrei mettere .space e, sapendo che dovrei avere una matrice NxN con un massimo di 10 caselle per lato, dovrei mettere .space 400, giusto?

Grazie per l'aiuto



.data
v1: .word 1,2,3,4
.word 5,6,7,8
.word 9,10,11,12
v2: .word 10,20,30,40
.word 10,10,10,10
.word 10,10,10,10
v3: .word 0:12

c: .word 4
space: .asciiz "\n"
str00: .asciiz ":::::Programma che calcola e stampa il prodotto scalare di due matrici::::: \n"
.text

main:
li $v0, 4
la $a0, str00
syscall

li $t0, 0
li $t2, 12
la $t9, c
li $t8, 0


ciclo:
lw $t3, v1($t0)
lw $t4, v2($t0)

mul $t3, $t3, $t4
addi $t2, $t2, -1

li $v0, 1
move $a0, $t3
syscall

li $v0, 4
la $a0, space
syscall

sw $t3, v3($t0)
addi $t0, $t0, 4
addi $t8, $t8, 1
bne $t2, $zero, ciclo


li $v0, 10
syscall