User`s manual

3-20 Suite56 DSP Tools User’s Manual Motorola
Symbolic Debugging in Assembly Code
Example 3 -5. A Finite Impulse Response Filter in Assembly Code: fir.asm
opt cex,mex,cre,cc,mu
page 132,66,0,10
section filter
include "iodata.h"
define P_MEM "0"
define X_MEM "1"
define Y_MEM "2"
define L_MEM "3"
data_points equ 20 ;number of points to process
org y:
data_in ds 1
data_out ds 1
set i 0
xdef coefficients
coefficients dupa coef,-
21.0/231.0,14.0/231.0,39.0/231.0,54.0/231.0,59.0/231.0,54.0/231.0,39.0
/231.0,14.0/231.0,-21.0/231.0
dc coef
set i i+1
endm
num_taps equ i ;number of taps in filter
reg_stack ds 10 ;stack space for registers
org x:0
buffer dsm data_points ;saved data out
states dsm num_taps ;filter states
org p:0
jmp begin
dup $100-*
nop
endm
org p:$100
begin
move #reg_stack,r7 ;point to register stack
move #0,sp ;clear stack pointer
move #states,r1 ;point to filter states
move #num_taps-1,m1 ;mod(num_taps)
move #coefficients,r5 ;point to filter coefficients
move #num_taps-1,m5 ;mod(num_taps)
move #buffer,r6 ;point to storage buffer
move #data_points-1,m6 ;mod(data_points)
move #0,x0
rep #num_taps
move x0,x:(r1)+ ;clear tap states