Laboratorio di calcolatori elettronici
COMPITO B del 28 Giugno 2004
Proff. V.Catania - risoluzione di Ignazio Coco
esportato con SciTE
Testo del compito:
Utilizzando l'assembly del DLX scrivere un programma che:
(a)Detti f={7,2,5,-9,1,4,6,2,0,4,-3,11,44,-19} i campioni di una funzione nei punti 1,2,3,...,14, costruisca e visualizzi i valori della derivata per i primi 13 campioni.
(b)Calcoli e visualizzi la media del vettore delle derivate.
(c)Calcolare e visualizzare la somma algebrica delle differenze degli elementi di posizione simmetrica del vettore f.
SVOLGIMENTO:
.data
mess: .asciiz "\nIl numero di multipli di 4 è %d"
.align 2
mess_addr:
.word mess
num: .space 4
mess2: .asciiz "\nLa somma è %d"
.align 2
mess2_addr:
.word mess2
somma: .space 4
vett1: .word 2,4,7,9,12,16
vett2: .word 3,5,6,13,14,18
vett3: .space 48
.text
addi r2,r0,0
addi r3,r0,6
addi r7,r0,0
loop_mul4:
lw r4,vett1(r2)
andi r5,r4,3
bnez r5,non_mul
addi r7,r7,1
non_mul:
addi r2,r2,4
subi r3,r3,1
bnez r3,loop_mul4
sw num(r0),r7
addi r14,r0,mess_addr
trap 5
addi r2,r0,0
addi r3,r0,6
addi r6,r0,0
loop_somma:
lw r4,vett1(r2)
andi r5,r4,1
beqz r5,pari
sub r6,r6,r4
j ciclo
pari:
add r6,r6,r4
ciclo:
addi r2,r2,4
subi r3,r3,1
bnez r3,loop_somma
sw somma(r0),r6
addi r14,r0,mess2_addr
trap 5
addi r2,r0,0
addi r3,r0,0
addi r10,r0,0
addi r4,r0,12
addi r12,r0,6
addi r13,r0,6
loop_ordina:
beqz r12,cv2
lw r5,vett1(r2)
;problema --->>> lo spiazzamento di vett1 va oltre vett1
cv2: beqz r13,avan
lw r6,vett2(r3) ;toccando lo spazio allocato per vett2:: possibili soluzioni?
avan: slt r7,r5,r6 ;
beqz r7,vett2_magg
sw vett3(r10),r5
subi r12,r12,1
addi r2,r2,4
j ciclo2
vett2_magg:
sw vett3(r10),r6
subi r13,r13,1
addi r3,r3,4
ciclo2:
addi r10,r10,4
subi r4,r4,1
bnez r4,loop_ordina
trap 0