📄 fir.asm
字号:
.title "FIR.ASM"
.mmregs
.def start
.bss yn,1
xn .usect "xn",37
hn .usect "hn",37
indata .usect "indata",300
outdata .usect "outdata",256
.data
fir_coff:
.word -10*32768/10000,-36*32768/10000
.word 0*32768/10000,65*32768/10000
.word 32*32768/10000,-88*32768/10000
.word -93*32768/10000,90*32768/10000
.word 184*32768/10000,-47*32768/10000
.word -297*32768/10000,-71*32768/10000
.word 417*32768/10000,316*32768/10000
.word -524*32768/10000,-848*32768/10000
.word 598*32768/10000,3108*32768/10000
.word 4375*32768/10000
.word 3108*32768/10000,598*32768/10000
.word -848*32768/10000,-524*32768/10000
.word 316*32768/10000,417*32768/10000
.word -71*32768/10000,-297*32768/10000
.word -47*32768/10000,184*32768/10000
.word 90*32768/10000,-93*32768/10000
.word -88*32768/10000,32*32768/10000
.word 65*32768/10000,0*32768/10000
.word -36*32768/10000,-10*32768/10000
.text
start:
ssbx frct ;使用小数运算
stm #hn,ar1 ;系数首地址
rpt #36 ;将系数移入循
mvpd fir_coff,*ar1+ ;环缓冲区
stm #-1,ar0
stm #outdata,ar5
stm #indata,ar4
stm #xn+36,ar2
rpt #36 ;将输入数据移入
mvdd *ar4+,*ar2+0% ;循环缓冲区
stm #xn+36,ar2 ;指向第一个输入
stm #hn+36,ar3
stm #37,bk ;缓冲区大小37
stm #255,brc ;块重复256次
stm #-1,ar0
rptb loop-1 ;块程序重复大小
rptz a,#36 ;计算一个输出
mac *ar2+0%,*ar3+0%,a
sth a,*(yn) ;保存输出
mvkd *(yn),*ar5+
mvdd *ar4+,*ar2+0% ;读进一个输入
loop: nop
b loop
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -