Laboratorio di calcolatori elettronici
COMPITO del 14 Luglio 2004
Proff. V.Catania - risoluzione e commenti di Ignazio Coco
esportato con SciTE
Testo del compito:
Utilizzando l'assembly del DLX scrivere un programma che:
(a) Dato il vettore vect1={7,-3,-9,5,2,1,19,21,33,-6} ed il vettore vect2{3,8,1,-5,2,7,-6,-8,-9,9} costruisca e
visualizzi il vettore vect3 in modo tale che l'elemento i-esimo sia il minimo tra l'elemento i-esimo di vect1
e l'elemento i-esimo di vect2.
(b) Determini e visualizzi la media dei valori assoluti degli elementi di vect3.
(c) Calcoli e visualizzi la somma degli elementi positivi e multipli di 4 di vect2.
SVOLGIMENTO:
.data
mess: .asciiz "\nElemento %d"
.align 2
mess_addr: .word mess
elem: .space 4
mess2: .asciiz "\nLa media è %d"
.align 2
mess2_addr: .word mess2
media: .space 4
mess3: .asciiz "\nLa somma dei multipli di 4 è %d"
.align 2
mess3_addr: .word mess3
somma: .space 4
vett1: .word 7,-3,-9,5,2,1,19,21,33,-6
vett2: .word 3,8,1,-5,2,7,-6,-8,-9,8
vett3: .space 40
.text
;PUNTO A
addi r2,r0,0
addi r3,r0,10
loop_crea:
lw r4,vett1(r2)
lw r5,vett2(r2)
slt r6,r4,r5
bnez r6,v1_m
sw vett3(r2),r5
sw elem(r0),r5
addi r14,r0,mess_addr
trap 5
j ciclo
v1_m: sw vett3(r2),r4
sw elem(r0),r4
addi r14,r0,mess_addr
trap 5
ciclo: addi r2,r2,4
subi r3,r3,1
bnez r3,loop_crea
;FINE PUNTO A
;PUNTO B
addi r2,r0,0
addi r3,r0,10
addi r6,r0,0
loop_media:
lw r4,vett3(r2)
sgti r11,r4,0
beqz r11,minz
add r6,r6,r4
j proce
minz: sub r6,r6,r4
proce: addi r2,r2,4
subi r3,r3,1
bnez r3,loop_media
addi r5,r0,10
div r7,r6,r5
sw media(r0),r7
addi r14,r0,mess2_addr
trap 5
;FINE PUNTO B
;PUNTO C
addi r2,r0,0
addi r3,r0,10
addi r4,r0,0
loop_somma:
lw r5,vett2(r2)
sgti r7,r5,0
beqz r7,ciclo2
andi r8,r5,3
bnez r8,ciclo2
add r4,r4,r5
ciclo2:
addi r2,r2,4
subi r3,r3,1
bnez r3,loop_somma
sw somma(r0),r4
addi r14,r0,mess3_addr
trap 5
trap 0