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

📄 cor_h_x.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     cor_h_x() in cor_h.c                                   **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**   xar2---Word16 h[]                                                     **
**   xar3---Word16 x[]                                                     **
**   ar4 ---Word16 sf						     						   **										
**                                                                         **
**                                                                         **
** Outputs:                                                                **
**                                                                         **
**   xar1---Word16 dn[]                                                    **
**                                                                         **
**                                                                         **
**                                                                         **
** Return value :       none                                               **
**                                                                         **
** Attribute    :       Cycles: 40176     Pm:63                            **
**                      Modified Registers:  all                           **
**                                                                         **
** Programmer   :       Qi Ying                                            **
*****************************************************************************
         .global  _cor_h_x
         .ref _buffer1  
         .ref _buffer2
         .ref _buffer3
_cor_h_x:
          push   xar1
          movl   xar6,        #_buffer3    ;y32[]
          push   xar4
          movb   xar5,        #5          ;xar5=tot
          mov    al,          #0
          mov    pl,          al          ;pl=k
_Loop_92:
          cmp    pl,          #5   
          sb     _Line_111,   GEQ         ;k>=5就跳出循环
          push   p
          movb   xar4,        #0          ;xar4=max
          movz   ar0,         pl          ;ar0=i=k
_Loop_95: 
          cmp    ar0,         #40         
          sb     _Line_108,   GEQ         ;i>=40就跳出循环
          push   xar0                      
          push   xar3
          movl   acc,         xar3
          addl   acc,         xar0
          movl   xar3,        acc         ;x[j]
          movb   al,          #39
          sub    al,          ar0
          mov    ar0,         al
          movl   xar7,        xar2        ;h 
          zapa
          rpt    ar0
          
;_Loop_98:
 ;         cmp    ar0,         #40
 ;         sb     _Line_101,   GEQ
         ||mac    p,*xar3++,*xar7++
;          inc    ar0                      ;j++
 ;         sb     _Loop_98,    UNC 
;_Line_101:
          addl   acc,         p<<pm
          pop    xar3
          pop    xar0
          movl   *xar6,       acc         ;y32[i]=s
          abs    acc                      ;acc=L_abs (s)
          cmpl   acc,         xar4
          sb     _Line_107,   LEQ
          movl   xar4,        acc         ;max=s
_Line_107:          
          addb   xar0,        #5          ;i+= step
          addb   xar6,        #10
          sb     _Loop_95,    UNC    
_Line_108:             
          movb   al,           #1
          mov    T,            al
          movl   acc,          xar4
          lsrl   acc,          T          ;max右移一位
          addl   xar5,         acc
          pop    p
          inc    pl                       ;pl++
          subb   xar6,         #78        ;xar6-80+2 
          sb     _Loop_92,     UNC 
_Line_111: 
          pop    xar4
          movl   acc,          xar5
          movb   xar6,         #0
          sbf    skip,         EQ         ;acc=0就跳转
_Loop_111:
          norm   acc,          xar6++
          sb     _Loop_111,    NTC        ;norm_l(tot)
skip:
          mov    al,           ar6
          sub    al,           ar4
          mov    T,            al         ;j放入T
          pop    xar1                     ;dn
          movb   xar0,         #0         ;ar0=i
          movl   xar6,        #_buffer3   ;y32[]
_Loop_113:
          cmp    ar0,          #40
          sb     _Line_117,    GEQ
          movl   acc,          *xar6++    ;y32[i]  
          lsll   acc,          T
          add    acc,          #0x0800<<#4
          mov    *+xar1[ar0],  ah         ;dn[i] 
          inc    ar0
          sb     _Loop_113,    UNC
_Line_117:
          LRETR          





















                
                   

⌨️ 快捷键说明

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