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

📄 inter_36.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     _Interpol_3or6 in inter_36.c                           **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**   xar3---Word16 *x                                                      **
**   al ---Word16 frac                                                    **
**   ar1 ---Word16 flag3                                                   **
**                                                                         **
** Outputs:                                                                **
**                                                                         **
** Return value :       ah                                                 **
**                                                                         **
** Attribute    :       Cycles:288       Pm:32                             **
**                      Modified Registers:  acc,t,p,xar1--xar7            **
**                                                                         **
** Programmer   :       YANG zhiwei                                        **
*****************************************************************************

      .global _interpol_3or6
  
      .ref inter_6
      .ref L_INTER_SRCH
	  .ref UP_SAMP_MAX 	

_interpol_3or6:  
      banz	  _line_70,ar1--			;if ( flag3 != 0 ), jump to _line_70
      bf	  _line_74,unc				;else, jump to 	_line_74
          
_line_70:
	  ;by skiff
	  ;lsl    acc,1
	  lsl	  al,1                      ;al(frac) shift left by 1 
                  
_line_74:
      ;cmp	  acc,#0						;Modify flags on (ACC - 0x00000000); 
      ;test	  acc
      bf	  _line_80,geq				;if acc >= 0,jump to _line_80                     
      add	  acc,#UP_SAMP_MAX           ;else, acc < 0 ,then frac = frac + #UP_SAMP_MAX
      mov	  ah,#0
      dec	  ar3                       ;x--	                          

_line_80:
	  inc	  ar3
	  movl	  xar4,xar3				    ;x1 = &x[0] + 1
	  movl	  xar5,xar3                 ;x2 = &x[1]
	  movl	  xar6,#inter_6
	  ;by skiff
	  push	  acc
	  push	  acc
	  movl	  acc,xar6
	  pop	  xar6
	  add 	  acc,ar6
	  movl	  xar6,acc
	  ;addl	  xar6,acc                   ;c1 = &inter_6[frac]
	  pop	  acc
	  ;mov	  ar6,al
	  ;movl	  xar7,#inter_6
	  ;movl	  acc,xar7
	  ;add     acc,ar6
	  ;movl	  xar6,acc
	  
	  mov	  ah,#UP_SAMP_MAX
	  sub	  ah,al				        ;ah = UP_SAMP_MAX - frac
	  
	  movl	  xar7,#inter_6
	  sfr	  acc,#16
	  addl	  xar7,acc			        ;c2 = &inter_6[sub (UP_SAMP_MAX, frac)]
	
	  zapa							    ;acc = 0,p = 0,ovc = 0
	  movb	  xar1,#0					;clear ar1(k)
	  movb    xar2,#L_INTER_SRCH-1
_loop_86:	 
	  mov	  t,*--xar4 			    ;xar4--,t = *xar4 = x[-i]		
	  mpya    p,t,*+xar6[ar1]			;acc = acc +p<<pm,p = x1[-i] * c1[k],then i--
	  mov	  t,*xar5++ 
	  mpya	  p,t,*+xar7[ar1]			;acc = acc +p<<pm,p = x2[i] * c1[k],then i						;i++
	  addb    xar1,#UP_SAMP_MAX	  		;k += UP_SAMP_MAX
	  banz	  _loop_86,ar2--	

	  addl	  acc,p<<pm					;s = acc = acc + p<<pm
	  
      add     acc,#0x0800<<4						
      LRETR

⌨️ 快捷键说明

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