# Programma che esegue il M.C.D. delgi elementi che formano # il triangolo in basso a destra di una matrice. # In questo caso si usa una matrice quadrata 12x12. .data str0: .asciiz "\n" str1: .asciiz " " nrig_col: .word 12 mat: .word 0:144 .text .globl main main: lw $a0,nrig_col # n lw $t0,nrig_col # k=n li $t1,1 # i li $t2,1 # j li $t3,0 # indice della memoria li $t4,1 # valore di confronto li $t5,0 # valore temp li $t6,0 # valore temp li $t7,0 # n1 li $t8,0 # valore di scrittura li $t9,0 mul $t9,$a0,4 #la grandezza di una word è 4 bytes loop_1: addi $t7,$t7,1 addi $t1,$t7,0 bge $t0,$t4,loop_2 b reinitialize loop_2: ble $t1,$a0,loop_3 addi $t0,$t0,-1 b loop_1 loop_3: bgt $t2,$t0,increase beq $t2,$t0,temp0 sw $t8,mat($t3) addi $t3,$t3,4 addi $t2,$t2,1 b loop_3 increase: beq $t1,$a0,temp1 mul $t3,$t9,$t1 addi $t1,$t1,1 li $t2,1 b loop_2 temp1: mul $t3,$t9,$t7 addi $t1,$t1,1 li $t2,1 b loop_2 temp0: addi $t5,$t2,0 addi $t6,$t1,0 b cases cases: beq $t1,$t2,MCD_1 # i=j blt $t1,$t2,MCD_2 # i