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

📄 tzero.asm

📁 文件为美军4800bps语音压缩编码标准在TI的DSP芯片TMS320C5X上的实时实现源代码。
💻 ASM
字号:
ZERO_DEBUG	.SET 1
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
	.IF ZERO_DEBUG
	.version        50
	.mmregs
	;.OPTION X
	;.GLOBAL A,Z,XY
	;-------------
	.BSS SIGNFLAG,1
	.BSS ACCBUF,2
	;-------------
	.bss ZERO_A,1
	.BSS ZERO_Z,1
	.BSS ZERO_XY,1
	;--------------
	.DATA
A	.INT 0c792h,03088h,0c934h,027c9h,0f22dh,01486h,0f3b3h,0971h,0ead5h,0a38h
Z	.LONG 0ffffbdddh,0ffffbdddh,0ffffd806h,0ffffe3d0h,0ffffed50h,0cdah
	.long 033dbh,04655h,044c0h,04221h,03e4bh
XY	.INT 0fa3eh,0f6h,04fch,06bch,0fe5ah,0fdbfh,0fb9dh,0ffd8h,06h,036h
	.INT 0fa63h,00h,07f8h,0feabh,0fea4h,0fff3h,0ff1bh,0fb65h,0ff22h,0182h
	.INT 0211h,0409h,023h,0fff8h,042ch,0f780h,0fabbh,02b5h,0f44dh,0fc7fh
	.INT 0adh,0267h,01b4h,0fc42h,0943h,0209h,0209h,022fh,0984h,0579h,0438h
	.INT 0fe93h,0b1bh,057h,0fcafh,0fc1ah,02c9h,083h,0fc47h,0192h,00h,0fa17h
	.INT 0fc10h,0589h,0fe09h,0fcf8h,07ceh,0379h,04b7h,030h
	.TEXT
	CALL C50_INIT
	LDP #ACCBUF
	LACC #A
	SACL ZERO_A
	LACC #Z
	SACL ZERO_Z
	LACC #XY
	SACL ZERO_XY
	CALL ZERO_CON
HERE:	B HERE
	.ENDIF
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;=================================
ZERO_CON
	LAMM AR0
	PUSH
	LAMM AR1
	PUSH
	LAMM AR2
	PUSH
	LAMM AR7
	PUSH
	LACC #2
	SAMM INDX
;=================================
;  for (t = 0; t < len; t++)
;  { z[0] = xy[t];      acc  = z[0]*0x2000l;
;=================================
	LACC #59
	SAMM AR7
	LAR AR0,ZERO_XY
	MAR *,AR0
	;LACC ZERO_Z
	;ADD #21
	;SACL ZERO_Z
	LACC ZERO_A
	ADD #9
	SACL ZERO_A
ZERO_FOR1
	LAR AR2,ZERO_Z
	LACC *,0,AR2		;ARP==0-->2
	SACL *+
	SACH *-
	ADRK #21     		;AR2->Z[10]h
	MAR *,AR0
	LACC *,13,AR2
	SACB
;=================================
;    for (j = n; j > 0; j--)
;    { p32 = 0x2000l*b[j];        p32 = p32*(long)z[j];
;      acc+=p32;                  z[j] = z[j-1];      }
;=================================
	LACC #9
	SAMM BRCR
	;LAR AR2,ZERO_Z		;AR2->Z[10]h
	LAR AR1,ZERO_A
	RPTB ZERO_FOR2-1
	  LACC *-,16		;ARP==2
	  OR *-,AR1
	  SACH MPY_32+1
	  SACL MPY_32
	  ABS
	  SUB #7FFFH
	  LACC *
	  SACL MPY_16
	  BCNDD ZERO_FOR2_MPY32,C
	  ;------
	  LT *-,AR2
	  MPY MPY_32
	  PAC
	  B ZERO_FOR2_NOT32
	  ;------
ZERO_FOR2_MPY32
		CALL MPY16_32
ZERO_FOR2_NOT32
	  ADDB			;acc += p32;
	  SACB
	  LACC *-,16		;z[j]=z[j-1];
	  OR *0+		;INDX==2
	  SACL *+
	  SACH *0-
ZERO_FOR2

;=================================
;    acc>>=13;     //z[0]=acc;     z[1]=acc;
;=================================
	LACB
	BSAR 13		;AR0->Z[0]h
;=================================
;    if ( labs(acc) > 0x7fff )
;     { if(acc<0) acc=-0x8000l;
;       else acc=0x7fff;      }
;    xy[t]=acc;
;=================================
	SACB
	ABS
	SUB #7FFFH
	LACB
	BCND ZERO_IF,NC
	  XC 2,GT
	   LACC #7FFFH
	  XC 2,LT
	   LACC #1,15
ZERO_IF
	MAR *,AR0
	SACL *+,0,AR7
	BANZ ZERO_FOR1,AR0
;=================================
	POP
	SAMM AR7
	POP
	SAMM AR2
	POP
	SAMM AR1
	POP
	SAMM AR0
	RET
;=========================================
;  for (t = 0; t < len; t++)
;  { z[0] = xy[t];      acc  = z[0]*0x2000l;
;    for (j = n; j > 0; j--)
;    { p32 = 0x2000l*b[j];        p32 = p32*(long)z[j];
;      acc+=p32;                  z[j] = z[j-1];      }
;    acc>>=13;
;    if( labs(acc) > 0x7fffl )
;       { if(acc<0) acc=-0x8000l;
;	 else 	   acc=0x7fffl;        }
;    xy[t] = acc;
;  }    //by wht
;=================================
	.INCLUDE "C50_INIT.ASM"
	.INCLUDE "MPY16_32.ASM"
	.end

⌨️ 快捷键说明

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