?? convolve.asm
字號:
*****************************************************************************
** Description: convolve() in convole.c
**
** Inputs
**
** XAR1: Word16 &x
** XAR2: Word16 &h
** XAR3: Word16 &y
**
** Outputs:
**
** XAR3: Word16 &y
**
** Return value: none
**
** Attribute: Cycles: 22763 Pm: 19
**
** Modified Registers: XAR0,XAR4,XAR5,XAR6,XAR7
**
** Programmer: Liu Yang
**
** Complete time: 2003 3 4
*****************************************************************************
.global _convolve
_convolve:
MOVL XAR7,@XAR1 ; XAR7 = XAR1 = &x[0]
MOVL XAR6,@XAR2 ; XAR6 = XAR2 = &h[0]
PUSH XAR3 ; Push &y[0]
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #0
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #1
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #2
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #3
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #4
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #5
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #6
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #7
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #8
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #9
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #10
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #11
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #12
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #13
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #14
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #15
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #16
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #17
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
LSL ACC,#3 ; Shift sum to left for 3 bits
MOV *XAR3++,AH ; *XAR3 = y[n] = AH
MOVL XAR7,@XAR1
ADDB XAR6,#1 ; XAR5 = &h[n]
MOVL XAR5,@XAR6
zapa
rpt #18
||mac P,*--XAR5,*XAR7++
ADDL ACC,P << PM ; Perform final accumulate
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -