📄 lsp_avg.asm
字号:
***************************************************************************
** Description: lsp_avg() in lsp_avg.c
**
** Inputs
**
** lsp_meanSave[M]
** XAR1: Word16 *lsp
**
** Outputs:
**
** lsp_meanSave[M]
**
** Return value:
**
** none
**
** Attribute: Cycles: 396 Pm: 12
**
** Modified Registers: ACC,T,P,XAR0,XAR7
**
** Programmer: Liu Yang
**
** Complete time: 2003 4 14
*****************************************************************************
.global _lsp_avg
.ref lsp_meanSave
.ref M ; cnst = 10
.ref EXPCONST ; cnst = 5243
_lsp_avg:
MOV AR0,#M-1 ; AR0 = M - 1
MOV T,#EXPCONST ; T = EXCONST
MOVL XAR7,#lsp_meanSave ; XAR7 = &lsp_meanSave[0]
; mean = 0.84*mean
L1: MOV ACC,*XAR7 << 16 ; ACC = L_tmp = L_deposit_h(st->lsp_meanSave[i])
MPY P,T,@AH ; P = EXPCONST * st->lsp_meanSave[i]
SUBL ACC,P << PM ; ACC = L_tmp = L_msu(L_tmp, EXPCONST, st->lsp_meanSave[i])
; Add 0.16 of newest LSPs to mean
MPY P,T,*XAR1++ ; P = EXPCONST * lsp[i], i++
ADDL ACC,P << PM ; ACC = L_tmp = L_mac(L_tmp, EXPCONST, lsp[i])
; Save means
ADD ACC,#0x0800 << 4 ; ACC = round(L_tmp)
MOV *XAR7++,AH ; st->lsp_meanSave[i] = round(L_tmp), i++
BANZ L1,AR0--
LRETR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -