## INSERIRE: COGNOME - NOME - NUMERO POSTAZIONE - PROFESSORE ## ADT PARI ## RINOMINARE IL FILE COME "risultato.s" ############################################# # DATA SEGMENT # ############################################# .data mat: .word 11, 12, 13, 14 .word 21, 22, 23, 24 .word 31, 32, 33, 34 N_rig: .word 3 # numero righe M_col: .word 4 # numero colonne endl: .asciiz "\n\n" tab: .asciiz "\t" ########################################################### ## add_rig ## somma gli elementi della riga i-esima della matrice ## $a0 : input - base address della matrice ## $a1 : input - M -> numero di colonne della matrice ## $a2 : input - i_riga -> numero (1..N) della riga da stampare ########################################################### .text add_rig: # calcola l'indirizzo base della riga i-esima sll $t1, $a1, 2 # M*4 addi $t2, $a2, -1 # (i-1) mul $t1, $t2, $t1 # (i-1)*M*4 add $t0, $t1, $a0 # base + (i-1)*M*4 # inizializza il ciclo move $t2, $a1 # M - colonne move $t6, $zero # j = 0 move $v0, $zero add_rig_loop_j: bge $t6, $t2, add_rig_end_loop_j # j < M lw $a0, ($t0) add $v0, $v0, $a0 addi $t0, $t0, 4 # &mat[i,j] addi $t6, $t6, 1 # j++ j add_rig_loop_j add_rig_end_loop_j: jr $ra # end add_rig ############################################# # TEXT SEGMENT # ############################################# .text .globl main main: la $a0, mat lw $a1, M_col li $a2, 3 jal add_rig move $a0, $v0 li $v0,1 syscall li $v0,10 syscall # exit ## end of file ##