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

📄 lsp_az.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:

*****************************************************************************
** Description:     Lsp_Az in lsp_Az.c                                     **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**   xar2---Word16 a[]                                                     **
**   xar3---Word16 lsp[]                                                   **
**                                                                         **
** Outputs:                                                                **
**                                                                         **
** Return value :       none                                               **
**                                                                         **
** Attribute    :       Cycles:        Pm:50                               **
**                      Modified Registers:  acc,p,t,xar0,1,3-7            **
**                                                                         **
** Programmer   :       YANG zhiwei                                        **
*****************************************************************************
	
			.global _Lsp_Az
			.ref    _Get_lsp_pol
			.ref    _buffer2
_Lsp_Az:
	  movl   xar0,xar2						;store the address of a[]
      movl   xar1,xar3						;store the address of lsp[]
      movl   xar4,#_buffer2					;f1 = #_buffer2		
      lcr    _Get_lsp_pol	
      
      movl   xar3,xar1						;restore the address of lsp[] to xar3		
      addb   xar3,#1						;xar3 point to lsp[1]
      movl   xar4,#_buffer2+40				;f2 = #_buffer2+40
      lcr    _Get_lsp_pol
      
      movl   xar4,#_buffer2+4*2 			    ;xar4 point to f1[5-1]		
	  movl   xar5,#_buffer2+40+4*2			;xar5 point to f2[5-1]
	  mov    ar1,#5-1						;5 loops,i = 5 - 1
_loop_143:
      movl   acc,*xar4      				;acc = f1[i-1]
      addb   xar4,#1*2						;xar4 point to i
      addl   *xar4,acc      				;f1[i] += f1[i-1]
      subb   xar4,#2*2						;xar4 point to i-2
	  movl   acc,*xar5      				;acc = f2[i-1]
      addb   xar5,#1*2						;xar5 point to i
      subl   *xar5,acc      				;f2[i] -= f2[i-1]
      subb   xar5,#2*2						;xar5 point to i-2
      banz   _loop_143,ar1-- 
     
      movl   xar2,xar0						;restore the address of a[] to xar2 
      mov    *xar2,#0x1000					;a[0] = 4096
      
      mov	 ar3,#1							;i = 1
      mov    ar1,#10					    ;j = 10
      movl   xar4,#_buffer2 			        ;xar4 point to f1[0]		
	  movl   xar5,#_buffer2+40				;xar5 point to f2[0]
_loop_150:
	  mpy	  p,ar3,#2
	  movl    xar0,p
	  movl    acc,*+xar4[ar0]				;acc = f1[i]
	  addl    acc,*+xar5[ar0]				;acc = f1[i] + f2[i]
	  mov	  t,#13							;L_lsr_r(acc,13)
	  asrl	  acc,t
	  ;bf      _line_153,lo,nc
	  bf      _line_153,nc
	  add	  acc,#1
_line_153:
	  mov     ar0,ar3	
 	  mov     *+xar2[ar0],al          		;a[i] = extract_l (L_shr_r (t0, 13))
 	  
 	  mpy	  acc,ar3,#2
	  mov     ar0,al
 	  movl    acc,*+xar4[ar0]				;acc = f1[i]
	  subl    acc,*+xar5[ar0]				;acc = f1[i] - f2[i]
	  mov	  t,#13							;L_lsr_r(acc,13)
	  asrl	  acc,t
	  ;bf      _line_155,lo,nc
	  bf      _line_155,nc
	  add	  acc,#1	
_line_155:
	  mov     *+xar2[ar1],al				;a[j] = extract_l (L_shr_r (t0, 13))
	  
	  inc     ar3							;i++
	  dec     ar1							;j--
	  
	  cmp     ar3,#5
	  bf	  _loop_150,leq
	  
	  lretr

⌨️ 快捷键说明

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