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

📄 pcrcasm.asm

📁 文件为美军4800bps语音压缩编码标准在TI的DSP芯片TMS320C5X上的实时实现源代码。
💻 ASM
字号:
;	.version        50
;	.mmregs
;	.DEF P10,P10_1,TEMP,CORFLAG,STACK,DIVISOR,SIGNFLAG,ALPHA,BETA,ACCBUF
;	.GLOBAL COR,RC,TMP,SIGNAL,FLEN,HFLEN_1,HFLEN,P10_2
;	.OPTION X
;	.BSS TJ,2
;	.BSS LPC0,1
;	.BSS LPC,10
;	.bss RC,10
;	.bss RCEXP,10
;	.BSS TMP,10
;	.BSS TEMP,1
;=======================
	;AR7, LOOP
	;AR0:LPC+9,
	;AR1:RCEXP,
	;AR2:TMP,
	;AR3:LPC[j]-----------------------
PCTORC
	 LACC #8
	 SAMM AR7
	 LACC #15
	 SAMM TREG1
	 LAR AR0,#LPC+9
	 LAR AR1,#RCEXP+9
	 LAR AR2,#TMP+9

	 LDP #TJ
	 LACC #P10_1
	 SACL TJ
	 MAR *,AR0
PCTORC_1
;------------for (i = n; i > 1; i--)-------------------
;------------rc[i-1] = -a[i]---------
	 LACC *-,0,AR1		;AR0->a[i-1]
	 NEG
	 sacb
	 abs
	 sub #2000h		;if a[]>=0x2000 then rc[]>1
	 bcndd ENDPCTORC,C
	 LACB
	 SFL
	 SFL
	 SACL *			;AR1->rc[i-1]
;----for (j = 1; j < i; j++)
;------t[i-j] = (a[i-j] + rc[i-1] * a[j]) / (1.0 - rc[i-1] * rc[i-1]);
	;=====ARP=1*******==
	SAMM TREG0
	LAR AR3,#LPC
	LACC TJ
	SUB #1
	SACL TJ
	SACL TJ+1
	SAMM BRCR
	;MAR *,AR3
	  ;MAR *,AR1
	  MPY *,AR3			;TREG0=rc[i-1]
	  PAC
	  SATL
	  BCND PCTORC_1A,NEQ
	  ;--ARP=3-----------
	   RPTB PCTORC_1B-1
	    MPY *+,AR0
	    PAC
	    SATL 			;ACC>>=15
	    ADD *-,0,AR2
	    SACL *-,0,AR3
PCTORC_1B
	  B PCTORC_2
	  ;====ARP=3==============
PCTORC_1A
	  ADD #8000H			;1-rc[]*rc[]
	  ABS
	  SACL TEMP
	  ;SACB
	RPTB PCTORC_2-1
	  MPY *+,AR0
	  PAC
	  SATL 			;ACC>>=15
	  ADD *-
	  SACB
	  LACC TEMP		;ACCB/ACC
	  CALL INTDIV
	  MAR *,AR2
	  SACL *-,0,AR3
PCTORC_2
;-------for (j = 1; j < i; j++)  a[j] = t[j]---------------
;-----------ARP=3-----------
	LAR AR3,#LPC
	LACC #TMP+1
	SAMM BMAR
	RPT TJ+1
	  BLDD BMAR,*+
	SBRK #1			;AR3-=1
	LAMM AR3
	SAMM AR0		;AR0->a[i-1]
	LACC #TMP		;AR2->tmp[i-1]
	ADD TJ
	SAMM AR2
	MAR *,AR1		;AR1->rc[i-1]
	MAR *-,AR7
	BANZ PCTORC_1,*-,AR0
;-----------========================
	LACC LPC
	NEG
	;SFL
	;SFL
	SACL RCEXP,2
	RET
ENDPCTORC
	LDP #CORFLAG
	LACC #1
	SACL CORFLAG
	LAR AR0,#LPC
	LAR AR1,#RCEXP
	MAR *,AR1
	LACC #P10_1
	SAMM BRCR
	LACC #0
	RPTB ENDPCTORC2-1
	  SACL *+,0,AR0
	  SACL *+,0,AR1
	  NOP
ENDPCTORC2
	RET
;  //for (i = 0; i <= n; i++)    a[i] = lpc[i];
;  for (i = n; i > 1; i--)
;  { rc[i-1] = -a[i];
;    for (j = 1; j < i; j++)
;      t[i-j] = (a[i-j] + rc[i-1] * a[j]) / (1.0 - rc[i-1] * rc[i-1]);
;    for (j = 1; j < i; j++)    a[j] = t[j];
;  }
;  rc[0] = -a[1];
;--------------------------

⌨️ 快捷键说明

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