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

📄 agc2.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     agc2() in agc.c                                        **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**   xar6---Word16 *sig_out                                                **
**   xar4---Word16 *sig_in                                                 **
**                                                                         **
** Outputs:                                                                **
**   xar6---Word16 *sig_out                                                **
**                                                                         **
** Return value :       none                                               **
**                                                                         **
** Attribute    :       Cycles:3323      Pm: 61                            **
**                      Modified Registers: all                            **
**                                                                         **
** Programmer   :       Qi Ying                                            **
*****************************************************************************
            .global    _agc2
            .ref       _energy_new    
            .ref       _div_s 
            .ref       _inv_sqrt
_agc2:
            movl   xar3,            xar6          ;input:xar3=sig_out
            LCR    _energy_new                    ;output:acc=s
            movb   xar0,            #0
            cmpl   acc,             xar0
            sb     _Line_282,       NEQ
            LRETR                  
_Line_282: 
            movl   xar1,            acc
            RPT    #31
          ||NORM   acc,             xar0++
            subb   xar0,            #1
            mov    T,               ar0           ;T=exp
            movl   acc,             xar1
            lsll   acc,             T  
            add    acc,             #0x0800<<#4   
            mov    ar1,             ah            ;ar1=gain_out
            push   T
            movl   xar3,            xar4          ;input:xar3=sig_in
            LCR    _energy_new                    ;output:acc=s
            pop    T
            movl   xar7,            acc
            movb   xar0,            #0        
            cmpl   acc,             xar0
            sb     _Line_313,       EQ            ;ar0=g0=0
            RPT    #31
          ||NORM   acc,             xar0++        ;ar0=i
            mov    ar3,             T             ;exp 
            mov    T,               ar0           ;T=i
            movl   acc,             xar7         
            lsll   acc,             T
            add    acc,             #0x0800<<#4   
            mov    ar2,             ah            ;ar2=gain_in
            push   T
            LCR    _div_s                         ;input:ar1=gain_out,ar2=gain_in
                                                  ;output:al
            mov    ah,              al
            mov    al,              #16
            mov    T,               al
            asrl   acc,             T             ;acc=s                                    
            lsl    acc,             #7
            pop    T                              ;i
            push   acc 
            mov    al,              ar3           ;exp
            cmp    al,              T
            sb     _Line_297,       GEQ
            sub    T,               al
            pop    acc
            lsll   acc,             T
            sb     _Line_307,       UNC
_Line_297:
            sub    al,              T
            mov    T,               al 
            pop    acc
            asrl   acc,             T 
_Line_307:            
            LCR    _inv_sqrt
            lsl    acc,             #9
            add    acc,             #0x0800<<#4   
            mov    ar0,             ah            ;ar0=g0
_Line_313:
            mov    ar3,             #39
_Loop_313:
            mov    T,               ar0           ;g0
            mpy    acc,    T,       *xar6         ;sig_out[i]
            lsl    acc,             #4
            mov    *xar6++,         ah  
            banz   _Loop_313,       ar3-- 
            subb   xar6,            #40
            LRETR
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        


          

⌨️ 快捷键说明

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