wcos1.asm

来自「文件为美军4800bps语音压缩编码标准在TI的DSP芯片TMS320C5X上的」· 汇编 代码 · 共 70 行

ASM
70
字号
;COSCOR .INT 0e216H,2078H,0fd54H,1eH,0ffffH
;=================================
; ACC,ACCB,ACCBUF*2,BRCR,TREG0,TREG1=15 ,PUSH/POP used
;========================================================
WCOS1
	SACB
	;==============
	LACC #15
	SAMM TREG1
	LACB
	SACL ACCBUF
	SQRA ACCBUF	;TREG0=a
	PAC
	SATL		;ACC>>15
	BCND WCOS1_END1,EQ
	SACL ACCBUF	;ACCBUF=((long)ax0*ax0)>>15;	//1.15
	SAMM TREG0 	;TREG0=ax0*ax0>>15
	SACB		;ACCB=a*a
	;------
	LAMM AR0
	;PUSH
	SACL ACC_PUSH
	;------
	LACL #3
	SAMM BRCR
	LAR AR0,#COSCOR
	MAR *,AR0
	LACC #1,15	;ACC=0X8000u
	SBB		;acc=1-a*a
	SACB
	MPY *+
	PAC
	SATL
	ADDB
	SACB		;acc+=(accb*fccor[0]>>15);
;--------ax0=accb;
	RPTB WCOS1_1-1
	  MPY ACCBUF
	  PAC
	  SATL
	  SAMM TREG0	;pow(ax0,n)->TREG0, ACCBUF=(ax0*ax0)>>15
	  MPY *+
	  PAC
	  SATL
	  ADDB
	  SACB
WCOS1_1
	;POP
	LACC ACC_PUSH
	SAMM AR0
	;--------
	LACB
	RET
WCOS1_END1
	RETD
	 LACC #7FFFH

;=====================
;	accb=((long)ax0*ax0)>>15;		//1.15
;	if(accb==0) return 0x7fff;
;	acc=0x8000u-accb;		//acc=1-a*a
;	acc+=(accb*fccor[0]>>15);
;	ax0=accb;
;	for(i=1;i<5;i++)
;	 {   p32=(long)ax0*accb;
;	     p32>>=15; 	     	ax0=p32;
;	     p32=p32*fccor[i]; 	p32>>=15;
;	     acc+=p32;	 }
;	a=(float)acc;
;=====================

⌨️ 快捷键说明

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