Testo:
Si scriva un programma in linguaggio Assembler 8086 che esegua un’operazione di filtraggio di una serie di segnali.
a)Si definiscano due vettori di elementi su 16 bit chiamati campioni e serie (si assuma che il numero di elementi sia compreso tra 1 e 100).
b)Eseguire un’operazione di filtraggio sul contenuto di campioni, corrispondente a calcolare per ciascun campione il valore media di quello precedente, del successivo e del valore stesso.
c)memorizzare gli n campioni dopo il filtraggio nel vettore serie.
Si strutturi il programma in modo che l’operazione di filtraggio sia eseguita invocando una procedura. Questa procedura restituisce al chiamante il valor medio di tutti gli elementi.
Note:Per il primo e l’ultimo campione si esegua la media su 2 valori. Esempio:
campioni = [5 41 27 345 9 190]
serie = [23 24 137 127 181 99]
Soluzione:
DIM EQU 6
.model small
.stack
.data
serie dw 5, 41, 27, 345, 9, 190
campi dw DIM DUP ?
.code
.startup
LEA SI, campi
LEA DI, serie
MOV CX, 2
CALL media
INC DI
INC DI
MOV CX, DIM-2
chiamo: PUSH CX
MOV CX, 3
CALL media
INC DI
INC DI
INC SI
INC SI
POP CX
LOOP chiamo
MOV CX, 2
CALL media
.exit
media PROC near
PUSH DX
PUSH AX
PUSH CX
PUSH SI
PUSH BX
MOV AX, 0
CWD
ciclo:
ADD AX, [SI]
ADC DX, 0
ADD SI, 2
LOOP ciclo
POP BX
POP SI
POP CX
IDIV CX
MOV [DI], AX
POP AX
POP DX
RET
media ENDP
end
| < Prec. | Succ. > |
|---|






