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

📄 get_lsp_pol.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     _Get_lsp_pol in lsp_Az.c                               **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**   xar3---Word16 *lsp                                                    **
**   xar4---Word32 *f                                                      **
**                                                                         **
** Outputs:                                                                **
**                                                                         **
** Return value :       none                                               **
**                                                                         **
** Attribute    :       Cycles:3340        Pm:50                           **
**                      Modified Registers:  acc,p,t,xar2--7               **
**                                                                         **
** Programmer   :       YANG zhiwei                                        **
*****************************************************************************

      .global _Get_lsp_pol
  
_Get_lsp_pol:
	  mov	acc,#0x1000<<#12  
      movl	*xar4++,acc   				;f[0] = 4096 * 2048 * 2 ,then i++
	  
	  spm   1
	  zapa
	  mpy	p,*xar3,#512
	  subl	acc,p<<pm
	  movl	*xar4++,acc				    ;f[1] =  -2.0 * lsp[0]		

	  addb  xar3,#2						;Advance lsp pointer	
      
      movb  xar2,#2						;i = 2
_loop_93:
	  subb	xar4,#2*2					;xar4 = &f[-2]
      movl	acc,*xar4
      addb  xar4,#2*2
      movl	*xar4,acc					;*f = f[-2]
      
      movb	xar5,#1                     ;j = 1
_loop_97: 
	  subb	xar4,#1*2
      movl  acc,*xar4					;acc = f[-1]
      addb	xar4,#1*2
      mov   ar6,ah						;ar6 = hi	
      lsr	al,1
      mov	ar7,al						;ar7 = lo
      
      zapa								;acc = p = ovc = 0
      mov	t,*xar3						;t = *lsp
      mpya	p,t,ar6						;acc = 0,p = hi * lsp
      mpya	p,t,ar7						;acc = (hi * lsp)<<pm, p = lo * lsp
      movh  ar7,p						;ar7 = (p<<pm)>>16 = ph
      add   acc,ar7<<#1
            
      lsl	acc,1						;t0 = L_shl (t0, 1)
	  
	  subl  *xar4,acc					;*f = *f - t0
	  
      subb	xar4,#2*2					;xar4 = &f[-2]
	  movl  acc,*xar4
	  addb	xar4,#2*2
	  addl  *xar4,acc					;*f = *f + f[-2]
	  
	  addb  xar5,#1						;j++   
	  subb  xar4,#2						;f--  
	  mov	al,ar5						;al = j
	  cmp   al,ar2						;Set Flags On (j - i)
	  bf	_loop_97,lt					;if (j < i) then jump to _loop_97
   
	  movl  acc,*xar4					;acc = *f
	  mpy   p,*xar3,#512				;p = *lsp * 512
	  subl  acc,p<<pm                   ;acc = *f - (*lsp * 512)<<1
	  movl  *xar4,acc
	  
	  mov	acc,ar2						;acc = i
	  lsl   acc,1						;acc = i * 2	
	  addl  xar4,acc					;f = f + i
	  addb	xar3,#2						;lsp += 2
	  
	  addb  xar2,#1						;i++
	  cmp   ar2,#5						;Set Flags On (i - 5)
	  bf	_loop_93,leq				;if (i <= 5) then jump to _loop_93
	  
	  LRETR

⌨️ 快捷键说明

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