5-9.asm

来自「5-1.asm对应第五章语音信号的采集和播放主程序; (2)5-2.asm」· 汇编 代码 · 共 147 行

ASM
147
字号
			.title  	"CVSDdecoder.asm"
            	.mmregs  
STACK       .usect		"STACK",10h            
            	.global 	nit, Begin
    
DeltaMax		.set		1280h
DeltaMin		.set		65h
Beta    		.set		99h
Delta0CVSD   .set		10h
ORD			.set 		6h
ORD1		.set 		5h 
            	.data
TBL:        	.word		0,1,0

Coefa:		.word 	-3888933*32768/1000000 		
			.word 	6640744*32768/1000000 		
			.word 	-6086001*32768/1000000 		
			.word 	2986736*32768/1000000 		
			.word 	-627688*32768/1000000 		
			
Coefb:		.word		32850*32768/1000000 		
			.word 	-57239*32768/1000000 		
			.word 	36818*32768/1000000		
			.word 	36818*32768/1000000 		
			.word 	-57239*32768/1000000 		
			.word 	32850*32768/1000000 		
            	.bss		ThreeJudge,3
            	.bss 		Judge,1
            	.bss		InData,1
            	.bss		OutData,1
            	.bss		DeltaCVSD,1
            	.bss		ValPreCVSD,1
            	.bss 		FilterX,6
            	.bss 		CoefA,5
            	.bss 		FilterY,5
            	.bss 		CoefB,6            
            
            	.text
Init:        	STM		#ThreeJudge,AR5      
             	RPT		#3                   
             	MVPD   TBL,*AR5+            
             	STM		#CoefA,AR5
             	RPT		#5
             	MVPD	Coefa,*AR5+
             	STM		#CoefB,AR5
             	RPT		#6
             	MVPD	Coefb,*AR5+
             
             	STM		#ThreeJudge,AR5      
             	ST 		#20,*(DeltaCVSD)     
             	ST 		#0,*(ValPreCVSD)     
             	ST		#1,*(Judge)          
             	ST     	#1,*(InData)          	
            
Begin:       	LD 		*(InData),A          
			STL		A,*AR5+      
								AND		*(Judge),A   
			BC 		ONE,ANEQ
			
			 LD 		#0,A		
			 ADD	*AR5+,A
			 ADD	*AR5+,A
			 
			 BC		L1,ANEQ      
			 
			 STM 	#DeltaCVSD,AR6        
			 STM	#Beta,T               
			 MPY	AR6,A                 
			 B 		L2
			 
L1:			 LD 		#DeltaCVSD,A  
             	 STM	#Delta0CVSD,AR3;      		
             	ADD 	AR3,A                 		
             						
L2:          	STM		#DeltaMax,AR0         
			STL		A,AR4         
             	CMPR	LT,AR4                		
             	BC		L3,TC                 
             	LD 		AR0,A                 
             
             						
L3:          	STM		#DeltaMin,AR0         	
			STL		A,AR4          
             	CMPR	GT,AR4                		
             	BC		L4,TC                 	
             	LD 		AR0,A                 	

L4:          	STL 		A,*(DeltaCVSD)        	
             	STL 		A,AR4                 	
             	STM 	#ValPreCVSD,AR6       		
             	LD 		*(AR6),A              	
             	SUB 	AR4,A                 		
             	STL		A,*(ValPreCVSD)       	
ONE:         						
			 LD 		#1,A
			 AND	*AR5+,A
			 AND	*AR5+,A
			 
			 BC		L5,ANEQ       
			 
			 STM 	#DeltaCVSD,AR6        
			 STM	#Beta,T               
			 MPY	AR6,A                 
			 B 		L6
			 
L5:			 LD 		#DeltaCVSD,A  
             	 STM	#Delta0CVSD,AR3;      		
             	 ADD 	AR3,A                 		
             						
L6:          	 STM	#DeltaMax,AR0         		
			 STL		A,AR4         
             	 CMPR	LT,AR4                		
             
             	 BC		L7,TC                 
               LD 	AR0,A                 	 	
             						
L7:          	 STM	#DeltaMin,AR0         		
			 STL		A,AR4 
             	 CMPR	GT,AR4                	
             	 BC		L8,TC                 
             	 LD 		AR0,A                 
L8:			 STL 	A,*(DeltaCVSD)  
             	 STM 	#ValPreCVSD,AR4       	
             	 ADD 	*AR4,A                	
               STL		A,*(ValPreCVSD) 
									 
IIR:			 STM	#CoefB,AR2
			 STM	#FilterX,AR3			 			 
			 LD 		*(ValPreCVSD),A
             	 STL		A,*AR3      		   	
             	 MPY 	*AR2+,*AR3+,A                     
             	 RPT	#4
		      MAC	*AR2+,*AR3+,A		
		     STM		#CoefA,AR2
		     STM		#FilterY,AR3
		     RPT		#4
             	MAS		*AR2+,*AR3+,A		
             	STM		#FilterX+4,AR3
             	RPT		#3
		     DELAY	*AR3- 
		     STM		#FilterY+3,AR3
             	RPT		#2
              DELAY	*AR3-            
S:            STL		A,*(FilterY)          	
             .END

⌨️ 快捷键说明

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