convolve.asm

来自「基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是sta」· 汇编 代码 · 共 437 行 · 第 1/2 页

ASM
437
字号
        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   #19
      ||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   #20
      ||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   #21
      ||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   #22
      ||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   #23
      ||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   #24
      ||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   #25
      ||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   #26
      ||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   #27
      ||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   #28
      ||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   #29
      ||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   #30
      ||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   #31
      ||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   #32
      ||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   #33
      ||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   #34
      ||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   #35
      ||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   #36
      ||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   #37
      ||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   #38
      ||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   #39
      ||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
        
        
        POP XAR3					; XAR3 = &y[0]
        
		LRETR

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?