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

📄 div_32.asm

📁 基于TMS320F2812的AMR+RS编解码+OFDM调制解调源程序。是stand alone运行版本
💻 ASM
字号:
*****************************************************************************
** Description:     div_32()      in oper_32b.c                            **
**                                                                         **
** Inputs :                                                                **
**   ACC---Word32 L_num        : Divisor                                   **
**   AR2---Word16 denom_hi     : MSB of dividend                           **
**   AR3---Word16 denom_lo     : LSB of dividend                           **
**                                                                         **
** Outputs:                                                                **
**								                                           **		
** Return value :  ACC Word32                                              **
**                                                                         **
** CALL: _div_s                                                            **
**       _mpy_32                                                           **
**                                                                         **
** Attribute    :       Cycles:340          Pm:34                          **
**               Modified Registers:AR1,XAR2,XAR3,XAR4,XAR5,XAR7           **
**                                  @_buffer1--@_buffer1+3                   **
**                                  ACC,T,P                                **
**                                                                         **
** Programmer   :       ZHOU Bei     (ok! Mar 12th,2003)                   **            
*****************************************************************************
     .global _div_32
     
     .ref	_div_s
     .ref   _mpy_32
     
     .ref   _buffer1
 
_div_32:
        ;L_Extract (L_num, &n_hi, &n_lo);
		MOV  	@_buffer1+3,AH       
		LSR		AL,#1
		MOV	    @_buffer1+2,AL
	
		MOV		AR1,#3FFFH
		LCR	    _div_s               ;AL=3FFF/AR2
	
		
		;L_32 = Mpy_32_16 (denom_hi, denom_lo, approx)
		PUSH	ACC
		MOV	    T,AL
        ZAPA
		MPYA	P,T,AR2
		MPYA	P,T,AR3
		MOVH	AR7,P
		ADD	    ACC,AR7<<1
		
		;L_32 = L_sub ((Word32) 0x7fffffffL, L_32)
		MOV	    @_buffer1+1,#7FFFh        ; Get MAX_32
		MOV		@_buffer1,#0FFFFh
		SUBL    @_buffer1,ACC             
		
		;LSB>>1
		MOV	    ACC,@_buffer1
		LSR		AL,#1
		MOV	    @_buffer1,ACC
		
		;L_32 = Mpy_32_16 (hi, lo, approx)
		POP	    ACC                     
		MOV	    T,AL
		ZAPA
		MPYA	P,T,@_buffer1+1
		MPYA	P,T,@_buffer1
		MOVH	AR7,P
		ADD	    ACC,AR7<<1
		
		;L_Extract (L_32, &hi, &lo)
		MOV  	@_buffer1+1,AH       ;Save L_num to @_buffer1+2
		LSR		AL,#1
		MOV	    @_buffer1,AL
		
	    ;L_32 = Mpy_32 (n_hi, n_lo, hi, lo)
		MOVL    XAR7,#_buffer1+3 
		MOVL	XAR6,#_buffer1+2
		MOVL    XAR2,#_buffer1+1
		MOVL    XAR3,#_buffer1
		LCR	    _mpy_32
		
		;L_32 = L_shl (L_32, 2)
		LSL		ACC,#2
		
		LRETR
		
   

⌨️ 快捷键说明

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