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

📄 search_2i40.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     search_2i40() in c2_9pf.c                              **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**   al  ---Word16 subNr                                                   **
**   xar3---Word16 dn[]                                                    **
**   xar4---Word16 rr[]                                                    **
**                                                                         **
** Outputs:                                                                **
**                                                                         **
**   xar2---Word16 codvec[]                                                **
**                                                                         ** 
**                                                                         **
** Return value :       none                                               **
**                                                                         **
** Attribute    :       Cycles:24066     Pm: 121                           **
**                      Modified Registers:  all                           **
**                                                                         **
** Programmer   :       Qi Ying                                            **
*****************************************************************************
          .global    startpos
          .global    _search_2i40
          


_search_2i40:
            addb    sp,                 #19
            mov     *-sp[2],            #-1          ;*-sp[2]=psk
            mov     *-sp[3],            #1           ;*-sp[3]=alpk  
            mov     *+xar2[0],          #0
            mov     *+xar2[1],          #1           ;codvec[i]=i
            mpy     p,       al,        #2           ;pl=subNR*2
            movl    xar6,               #startpos
            movl    acc,                xar6               
            add     acc,                pl
            movl    *-sp[5],            acc          ;*-sp[5]=startpos[subNR*2]
            mov     ar5,                #0           ;ar5=track1
_Loop_202:
            cmp     ar5,                #2
            sb      _Line_274,          GEQ
            mpy     acc,    ar5,        #8           ;8*track1
            addl    acc,                *-sp[5]      ;startPos[subNr*2+8*track1]
            movl    xar6,               acc
            movz    ar0,                *xar6        ;ar0=ipos[0]
            addb    xar6,               #1
            movz    ar1,                *xar6        
            mov     *-sp[11],           ar1          ;*-sp[11]=ipos[1]
_Loop_214:
            cmp     ar0,                #40          ;ar0=i0
            sb      _Line_272,          GEQ
            mpy     acc,   ar0,         #40
            add     al,                 ar0          ;al=i0*40+i0
            mov     ar1,                al           ;ar1=i0*40+i0
          
            mov     T,                  ar0
            inc     T
            mpy     acc,   T,           ar0          ;al=i*(i+1)
            lsr     al,                 #1           ;al=i*(i+1)/2 
            sub     ar1,                al           ;ar1=i*40+i-i*(i+1)/2  
            
            mpy     acc,   *+xar4[ar1], #8192
            lsl     acc,                #1 
            movl    *-sp[8],            acc          ;*-sp[8]=alp0
            mov     al,                 *+xar3[ar0]   
            mov     *-sp[10],           al           ;*-sp[10]=ps0
            mov     *-sp[12],            #-1          ;*-sp[12]=sq
            mov     *-sp[13],           #1           ;*-sp[13]=alp
            mov     al,                 *-sp[11]      
            mov     *-sp[14],           al           ;*-sp[14]=ix
            mov     *-sp[15],           ar0          ;*-sp[15]=i0            
            movz    ar1,                *-sp[11]      ;ar1=i1
_Loop_236:
            cmp     ar1,                #40
            sb      _Line_262,          GEQ
            mov     al,                 *-sp[10]      ;ps0 
            add     al,                 *+xar3[ar1]  ;al=ps1
            mov     T,                  al
            mpy     acc,       T,       al           ;ps1*ps1
            lsl     acc,                #1 
            mov     *-sp[16],           ah           ;*-sp[16]=sq1  
            mpy     acc,   ar1,         #40
            add     al,                 ar1          ;al=i1*40+i1
            mov     ar0,                al           ;ar0=i1*40+i1
            
            mov     T,                  ar1
            inc     T
            mpy     acc,   T,           ar1          ;al=i1*(i1+1)
            lsr     al,                 #1           ;al=i1*(i1+1)/2 
            
            sub     ar0,                al           ;ar0=i1*40+i1-i1*(i1+1)/2  
            mpy     acc,  *+xar4[ar0],  #8192
            lsl     acc,                #1 
            movl    xar6,               *-sp[8]      ;alp0 
            addl    xar6,               acc          ;xar6=alp1 
            mov     al,                 *-sp[15]     ;al=i0        
            cmp     al,                 ar1          ;比较i0与i1
            sb      _Line_242,          GEQ
            mpy     acc,      al,       #40
            add     al,                 ar1          ;al=i0*40+i1
            mov     ar0,                al           ;ar0=i0*40+i1
           
            mov     T,                  *-sp[15]
            inc     T
            mpy     acc,      T,        *-sp[15]     ;al=i0*(i0+1)
            lsr     al,                 #1           ;al=i0*(i0+1)/2 
            sub     ar0,                al           ;ar0=i0*40+i1-i0*(i0+1)/2      
            
            sb      _line_mac,          UNC
_Line_242:
            mpy     acc,      ar1,      #40
            add     al,                 *-sp[15]     ;al=i1*40+i0
            mov     ar0,                al           ;ar0=i1*40+i0
           
            mov     T,                  ar1
            inc     T
            mpy     acc,      T,        ar1          ;al=i1*(i1+1)
            lsr     al,                 #1           ;al=i1*(i1+1)/2 
            sub     ar0,                al           ;ar0=i1*40+i0-i1*(i1+1)/2      

_line_mac:
            mpy     acc,  *+xar4[ar0],  #16384
            lsl     acc,                #1
            addl    acc,                xar6         ;acc=alp1
            add     acc,                #0x0800 << #4 
            mov     ar6,                ah           ;ar6=alp_16
            mov     T,                  *-sp[12]      ;sq
            mpy     p,      T,          ar6          ;sq*alp_16
            mov     T,                  *-sp[13]     ;alp
            mpy     acc,    T,          *-sp[16]     ;alp*sq1
            subl    acc,                p
            lsl     acc,                #1           ;acc=s
            movb    xar7,               #0    
            cmpl    acc,                xar7
            sb      _Line_256,          LEQ
            mov     al,                 *-sp[16]     
            mov     *-sp[12],            al           ;sq=sq1
            mov     *-sp[13],           ar6          ;alp=alp_16
            mov     *-sp[14],           ar1          ;ix=i1
_Line_256:
            addb    xar1,               #5           ;i1+5
            sb      _Loop_236,          UNC
_Line_262:
            movz    ar0,                *-sp[15]     ;ar0=i0
            mov     T,                  *-sp[2]      ;psk
            mpy     p,      T,          *-sp[13]     ;alp*psk
            mov     T,                  *-sp[3]      ;alpk
            mpy     acc,    T,          *-sp[12]      ;alpk*sq
            subl    acc,                p
            lsl     acc,                #1           ;acc=s
            cmpl    acc,                xar7         ;比较s与0
            sb      _Line_271,          LEQ
            mov     al,                 *-sp[12]      
            mov     *-sp[2],            al           ;psk=sq     
            mov     al,                 *-sp[13]      
            mov     *-sp[3],            al           ;alpk=alp
            mov     *+xar2[0],          ar0          ;codvec[0] = i0  
            mov     al,                 *-sp[14]     
            mov     *+xar2[1],          al           ;codvec[1] = ix
_Line_271:             
            addb    xar0,               #5           ;i0+5 
            sb      _Loop_214,          UNC 
_Line_272:
            inc     ar5                              ;track1++ 
            sb      _Loop_202,          UNC       
_Line_274:
            subb    sp,                 #19
            LRETR 






































           
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            







⌨️ 快捷键说明

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