.text .globl main main: subu $sp,$sp,8 sw $ra,4($sp) li $v0,4 la $a0,prompt1 syscall jal prodijTest li $v0,4 la $a0,prompt2 syscall jal monoTest li $v0,4 la $a0,prompt3 syscall jal prodiTest li $v0,4 la $a0,prompt4 syscall jal vectTest lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data prompt1:.asciiz "\nprodijTest: " prompt2:.asciiz "\nmonoTest: " prompt3:.asciiz "\nprodiTest: " prompt4:.asciiz "\nvectTest: " .text # esercizio 1 # $a0 puntatore a array interi 32bit # $a1 puntatore a array interi 32bit # $a2 indice i # $a3 indice j prodij: sll $a2,$a2,2 addu $t0,$a0,$a2 lw $t1,($t0) sll $a3,$a3,2 addu $t2,$a1,$a3 lw $t3,($t2) mulou $v0,$t1,$t3 jr $ra # esercizio 2 prodijTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,array0 la $a1,array1 li $a2,1 li $a3,5 jal prodij move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra # esercizio 3 # $a0 puntatore a array interi 32bit # $a1 puntatore a array interi 32bit # $a2 lunghezza array mono: subu $sp,$sp,24 sw $ra,20($sp) sw $s0,16($sp) sw $s1,12($sp) sw $s2,8($sp) sw $s3,4($sp) sw $s4,0($sp) move $s0,$a0 move $s1,$a1 subu $s2,$a2,1 li $s3,0 li $s4,0 beqz $a2,end1 loop1: move $a0,$s0 move $a1,$s1 move $a2,$s2 move $a3,$s3 jal prodij addu $s4,$s4,$v0 subu $s2,$s2,1 addu $s3,$s3,1 bgez $s2,loop1 end1: move $v0,$s4 lw $s4,0($sp) lw $s3,4($sp) lw $s2,8($sp) lw $s1,12($sp) lw $s0,16($sp) lw $ra,20($sp) addu $sp,$sp,24 jr $ra # esercizio 4 monoTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,array0 la $a1,array1 li $a2,10 jal mono move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data array0: .word 1,3,5,7,9,11,13,15,17,19 array1: .word 2,4,6,8,10,12,14,16,18,20 .text # esercizio 1 # $a0 puntatore a array interi 32bit # $a1 puntatore a array interi 32bit # $a2 indice i prodi: sll $a2,$a2,2 addu $t0,$a0,$a2 lw $t1,($t0) addu $t2,$a1,$a2 lw $t3,($t2) mulou $v0,$t1,$t3 jr $ra # esercizio 2 prodiTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,array0 la $a1,array1 li $a2,5 jal prodi move $a0,$v0 li $v0,1 syscall lw $ra,4($sp) addu $sp,$sp,8 jr $ra # esercizio 3 # $a0 puntatore a array interi 32bit # $a1 puntatore a array interi 32bit # $a2 puntatore a buffer array # $a3 lunghezza array vect: subu $sp,$sp,24 sw $ra,16($sp) sw $s0,12($sp) sw $s1,8($sp) sw $s2,4($sp) sw $s3,0($sp) move $s0,$a0 move $s1,$a1 move $s2,$a2 subu $s3,$a3,1 beqz $a3,end2 loop2: move $a0,$s0 move $a1,$s1 move $a2,$s3 jal prodi sll $t0,$s3,2 addu $t0,$t0,$s2 sw $v0,($t0) subu $s3,$s3,1 bgez $s3,loop2 end2: lw $s3,0($sp) lw $s2,4($sp) lw $s1,8($sp) lw $s0,12($sp) lw $ra,16($sp) addu $sp,$sp,24 jr $ra # esercizio 4 vectTest: subu $sp,$sp,8 sw $ra,4($sp) la $a0,array2 la $a1,array3 la $a2,array4 li $a3,10 jal vect la $a1,array4 li $t0,10 li $v0,1 loop3: lw $a0,($a1) syscall addu $a1,$a1,4 subu $t0,$t0,1 bgtz $t0,loop3 lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data array2: .word 1,3,5,7,9,11,13,15,17,19 array3: .word 2,4,6,8,10,12,14,16,18,20 array4: .space 40