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

📄 ulawde.asm

📁 这个是DSP实现的语音U律(ulaw)压缩
💻 ASM
字号:
; INT2MU.ASM
;
; Integer originally loaded into A Accumulator
; (Q13 number is assumed to be sign-extended to 16 bits)
;
; mucode = musign + muchord + mustep
;
; muchord = (19h - T|EXP)<<4
; = 190h - (T|EXP)*16
; = 180h - (T|EXP)*16 + 10h
;
; musign = (AH * (-1)) <<7
; = (AH * FFFFh) * 128 = AH * (FFFFh * 128)
; = AH * (FFFFh << 7) = AH * FF80h
;
; mustep = (((|int| + 33) << (T|EXP)) << -26) - 10h
;
; Inversion of 8-bit mu code is equivalent to:
;
; mucode' = FF - mucode = FF - musign - muchord - mustep
;
; mucode' = FF-180h-AH*FF80h+(T|EXP)*16-((|int|+33)<<(T|EXP))>>26
;
; Final output is stored in Low accumulator B(7:0)
**********************************************************************
*************this is ulaw compressing*********************************
********************************************************************** 
               .mmregs 
               .global _main
			   .data
bias1          .word 0FFh-180h
bias2          .word 0FF80h
bias3          .word 21h
bias4          .word 16
table          .word 0,13,25,36,44,48,49,47,40,31,19,6
               .word -6,-19,-31,-40,-47,-49,-48,-44,-36,-25,-13,0
               ;test values is sine wave lengh=24 start address=0x0a04h at data address
		   	    .text
_main:          STM 3000h,AR3
                STM  17h,AR4
				STM #table, AR0
				LD #bias1, DP
cbeg            LD *AR0+, A        ;LOAD INTEGER FOR CONVERSION
				LD bias1, B        ;LOAD (FFh-180h)
				MASA bias2, B      ;Acc B = (FFh-180h-AH*FF80h)
				ABS A              ;A = |int|
				ADD bias3, A       ;A = |int| + 33 (33 = 21H)
				EXP A              ;# OF LEADING ZEROS -> (T|EXP)
				MAC bias4, B       ;ACCB += (T|EXP)*16
				NORM A             ;A<<(T|EXP)
				SFTA A,-16         ;(A<<(T|EXP))>>16
				SUB A,-10, B       ;mucode' = B - (A<<(T|EXP))>>26
				STL B, *AR3
				ANDM 0X00FF,*AR3+
				BANZ cbeg ,*AR4-    ;DO IT AGAIN!!
				
******************************************************************
*********this is ulaw companding**********************************
******************************************************************
; MU2INT.ASM
;
;IMPLEMENT EQUATION
;
; mucode = musign : muchord : mustep
;            X        XXX      XXXX
;
; INTNUM = [ ((2 * mustep + 33) << muchord) - 33 ] * SGN(musign)
;
; NOTE: since mucode is inverted for xmission, received is
; mucode' = musign' : muchord' : mustep'
;
; Inversion of 8-bit mucode, extended to 15 bits is equivalent to
;
; mucode = 7FFFh - mucode'
;
; The 15 bit extension is used for easy musign removal
;
;The final output is stored in high accumulator B(31:16) 

		.data
BIAS    .word 21h
MASK    .word 7FFFh,1Fh
TREG    .set 14
        .text
        STM 2000h,AR5
        STM  17h,AR6
        STM #3000h, AR4
		STM #MASK, AR2
		STM #TREG, AR3
		LD #-12, ASM
		LD #BIAS, DP
loop: 

		SUB *AR2+,*AR4, A            ;7FFFh - mucode' -> AH
		AND A,8                      ;REMOVE POLARITY BIT
		                             ;(A<<8 AND A)=(7F AND A(16-23))<<24
		ST A,*AR3                     ;STORE CHORD TO T: (A<<ASM-16)-> T and
		|| LD *AR2-,B                   ;LOAD MASK FOR STEP ISOLATION B=1F<<16
		AND A,-7,B                     ;ISOLATE STEP BITS (17-20): BH = 2*mustep
		ADD BIAS,16,B                  ;BH = 2*mustep + 33
		BIT *AR4+,8                   ;COPY SIGN OF mcode'->TC of ST0
		NORM B                      ;BH = (2*mustep+33)<<(muchord)
		SUB BIAS,16,B                ;BH = (2*mustep+33)<< muchord) - 33
		XC 1,NTC                     ;mucode NEGATIVE? (BIT8 == 0; TC ==0)
		NEG B                        ;IF SO NEGATE INTEGER: BH *= -1
		STH  B,*AR5+                 ;DO IT AGAIN!
		BANZ loop, *AR6-                        
here:   B here 
        .end
**************************************************************************
*****input data at address 0a04h (data space)*****************************
*****encoder result at address 3000h(ar3 data space)**********************
*****decoder result at address 2000h(ar5 data space)**********************
*****data length 24*******************************************************
**************************************************************************                  
				

⌨️ 快捷键说明

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