📄 test_ma3.asm
字号:
;================================================================
; File Name
; ----------
; TEST_MAX3.ASM
;
; Brief Description of the Code:
; ------------------------------
; Test around max3
;
; Ref
; ------
; PITCH_A.C
;================================================================
; Str_Lag_max .struct
; ptr_signal .word 1
; lag_max .word 1
; lag_min .word 1
; ptr_cor_max .word 1
; Str_Lag_max_Len .endstruct
;----------------------------------------------------------------
; Buffer : Addr_lag_max_buf[2] at even boundary
;----------------------------------------------------------------
; Output : AR1 = p_max
; Modified Registers: AR4, AR5
;----------------------------------------------------------------
.mmregs
.include ../include/const.h
.include ../include/struct.h
.include ../include/ld8amem.h
.def test_around_lag_max_3
param_lag_max .tag Str_Lag_max
.asg "Addr_lag_max_buf", max
.asg "Addr_lag_max_buf+2", inv_energy
.asg "AR1", p_max
.asg "AR4", pSig
.asg "AR5", pSig1
.asg "Addr_lag_max_buf", max
.asg "ptr_wsp", signal
.asg "Addr_pitch_ol_buf", scal_sig
.asg "scal_sig+PIT_MAX+L_FRAME", max3
.asg "max3+1", max2
.asg "max2+1", max1
.asg "max1+1", p_max3
.asg "p_max3+1", p_max2
.asg "p_max2+1", p_max1
.asg "AR4", pTemp
.asg "AR5", pMax
;----------------------
;Test around lag max3
;----------------------
test_around_lag_max_3:
LD *(max), 16, B
ADD *(max+1), 1, B
MVDM p_max, AR0 ; i = t3
STM #scal_sig+PIT_MAX, pSig
MAR *AR0+ ; AR0 = t3+1
MVMM pSig, pSig1
LD #L_FRAME, 0, A
MAR *pSig1-0 ; p1 = &scal_sig[-(i+1)]
ROR A
SUB #1, A
STLM A, AR6
LD #0, 0, A
C1: MAC *pSig, *pSig1, A
MAR *+pSig(2) ; p += 2
MAR *+pSig1(2) ; p1 += 2
BANZ C1, *AR6-
SAT A
MAX B
STM #scal_sig+PIT_MAX, pSig ; pSig -> scal_sig[0]
BC P1, C
MVMM AR0, p_max ; AR1(p_max) = i+1
P1:
MAR *+AR0(-2) ; AR0 = t3-1
MVMM pSig, pSig1
LD #L_FRAME, 0, A
MAR *pSig1-0 ; p1 = &scal_sig[-i+1]
ROR A
SUB #1, A
STLM A, AR6
LD #0, 0, A
C2: MAC *pSig, *pSig1, A
MAR *+pSig(2) ; p += 2
MAR *+pSig1(2) ; p1 += 2
BANZ C2, *AR6-
SAT A
MAX B
NOP
BC P2, C
MVMM AR0, p_max ; AR1(p_max) = i-1
P2:
LD #0, DP
ST #max, pTemp
STL B, -16, *pTemp
LD *pTemp+, 15, A
LD B, -1, B
SUB A, B
STL B, *pTemp
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -