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

📄 pow2.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     pow2() in pow2.c                                       **
**                                                                         **
** Inputs                                                                  **
**                                                                         **
**   ar2--Word16 exponent                                                  **
**   ar3---Word16 fraction                                                 **
**                                                                         **
** Outputs:                                                                **
**                                                                         **
**   xar1---Word32 L_x		                                               **
**                                                                         **
** Return value :       		                                           **
**                                                                         **
** Attribute    :       Cycles:         Pm:                                **
**                      Modified Registers:  acc,p,t,xar0,xar1,xar4,xar5   **
**                                                                         **
** Programmer   :       YANG zhiwei                                        **
*****************************************************************************
		.global		_pow2
		.ref		pow_table
	
_pow2:
		zapa
		mpya	p,ar3,#32				
		addl	acc,p<<pm               ;L_mult (fraction, 32),with overflow control	
		mov		ar0,ah					;ar0 = i = extract_h (L_x)
		
		mov		t,#1
		asrl	acc,t					;L_x = L_shr (L_x, 1)
		
		and		acc,#0x7fff	
		mov		ar5,al       			;ar5 = a = extract_l (L_x) & (Word16) 0x7fff
		
		movl	xar4,#pow_table
		mov		al,#0
		mov		ah,*+xar4[ar0]			;ah = table[i]
		movl	xar1,acc				;xar1 = L_x
		
		inc		ar0						;i = i + 1
		sub		ah,*+xar4[ar0]			;ah = tmp = sub (table[i], table[i + 1]
		
		mov		t,ah
		movl	acc,xar1				;acc = L_x
		mpy		p,t,ar5
		subl	acc,p<<pm				;acc = L_msu (L_x, tmp, a)
		movl	xar1,acc
			
		mov		al,#30	
		sub		al,ar2					;al = exp = sub (30, exponent)
		mov		t,al
		movl	acc,xar1				;acc = L_x
		asrl	acc,t
		;bf		_line_79,lo,nc
		bf      _line_79,nc
		add		acc,#1
_line_79:		
		movl	xar1,acc
		lretr

⌨️ 快捷键说明

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