⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 convolve.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
📖 第 1 页 / 共 2 页
字号:
*****************************************************************************
** 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 + -