.data
M: .space 36 #4 bytes per int, 3x3 int
quest: .asciiz "Inserisci elemento: "
ris: .asciiz "Determinante: "

.text
.globl main



main: 

#input #row (col col col) row2 (col col col) row3 (col col col)

la $t1, M #indice di offset sulla matrice
addi $t0, $0, 0 #indice di num elementi inseriti

read_el: 

la $a0, quest
addi $v0, $0, 4
syscall

#leggo

addi $v0, $0, 5
syscall

sw $v0, 0($t1) #trasferisci in stack
addi $t1, $t1, 4 #prossimo elemento matrice

addi $t0, $t0, 1 #incremento indice ciclo read_el

slti $t2, $t0, 9 #minore o uguale a 9
bne $t2, $0, read_el

#--------------------- quando sono qui, ho finito di leggere da input

la $t1, M #azzero $t1


#6 prodotti: $s0, $s1, $s2, $s3, $s4, $s5, poi sommo/sottraggo in $s6

lw $t3, 0($t1) #a in $t3
lw $t4, 16($t1) #e in $t4
lw $t5, 32($t1) #i in $t5

mult $t3, $t4
mflo $t6 #t6 di comodo
mult $t6, $t5
mflo $s0 #in $s0 ho a*e*i

#--------------------- 

lw $t3, 4($t1) #b in $t3
lw $t4, 20($t1) #f in $t4
lw $t5, 24($t1) #g in $t5

mult $t3, $t4
mflo $t6 #t6 di comodo
mult $t6, $t5
mflo $s1 #in $s1 ho b*f*g

#--------------------- 

lw $t3, 8($t1) #c in $t3
lw $t4, 12($t1) #d in $t4
lw $t5, 28($t1) #h in $t5

mult $t3, $t4
mflo $t6 #t6 di comodo
mult $t6, $t5
mflo $s2 #in $s2 ho c*d*h

#--------------------- 

lw $t3, 24($t1) #g in $t3
lw $t4, 16($t1) #e in $t4
lw $t5, 8($t1) #c in $t5

mult $t3, $t4
mflo $t6 #t6 di comodo
mult $t6, $t5
mflo $s3 #in $s3 ho g*e*c

#--------------------- 

lw $t3, 0($t1) #a in $t3
lw $t4, 20($t1) #f in $t4
lw $t5, 28($t1) #h in $t5

mult $t3, $t4
mflo $t6 #t6 di comodo
mult $t6, $t5
mflo $s4 #in $s4 ho h*f*a

#--------------------- 

lw $t3, 4($t1) #b in $t3
lw $t4, 12($t1) #d in $t4
lw $t5, 32($t1) #i in $t5

mult $t3, $t4
mflo $t6 #t6 di comodo
mult $t6, $t5
mflo $s5 #in $s5 ho b*d*i

#--------------------- sommo

add $s6, $s0, $s1
add $s6, $s6, $s2

sub $s6, $s6, $s3
sub $s6, $s6, $s4
sub $s6, $s6, $s5

#output

la $a0, ris
addi $v0, $0, 4
syscall

add $a0, $0, $s6
addi $v0, $0, 1
syscall

#exit

addi $v0, $0, 10
syscall