.text .globl main # min-max # esercizio 1 # $a0 puntatore ad un array di interi a 16 bit con segno minmax: lh $v0,($a0) move $v1,$v0 loop: lh $t0,($a0) beqz $t0,end addu $a0,$a0,2 bge $t0,$v0,nomin move $v0,$t0 nomin: ble $t0,$v1,loop move $v1,$t0 j loop end: jr $ra # esercizio 2 # $a0 puntatore ad un array di interi a 16 bit con segno # $a1 intero a 32 bit con segno less: move $t1,$a0 loop2: lh $t0,($a0) beqz $t0,end2 addu $a0,$a0,2 bgt $t0,$a1,loop2 sh $t0,($t1) addu $t1,$t1,2 j loop2 end2: sh $t0,($t1) jr $ra # esercizio 3 # $a0 puntatore ad un array di interi a 16 bit con segno minoriMedia: subu $sp,$sp,8 sw $ra,4($sp) sw $a0,0($sp) jal minmax lw $a0,0($sp) add $a1,$v0,$v1 sra $a1,$a1,1 # oppure div $a1,$a1,2 jal less lw $ra,4($sp) addu $sp,$sp,8 jr $ra # main e dati di prova non richiesti nel compito # forniti solo per testare le soluzioni main: subu $sp,$sp,8 sw $ra,4($sp) la $a0,array jal minoriMedia la $a1,array loop3: lh $a0,($a1) beqz $a0,end3 addu $a1,$a1,2 li $v0,1 syscall j loop3 end3: lw $ra,4($sp) addu $sp,$sp,8 jr $ra .data array: .half 25,13,54,13,81,14,0