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

📄 baserej.asm

📁 此代码在ccs上开发。适用于TI54系列dsp
💻 ASM
字号:
		.def start
        .ref rawdata
        .mmregs
            
Npoint  		.set 2000
fil_length		.set 124	;=actual length-1
integ_length	.set 36

	    .data
    	.bss  fil_window,125
		.bss  dat_buff,600

temp_l  .word 0		       			;buffer
beg_addr	.word 0
data_addr	.word 0
temp 	.word 0
buf		.word 0
new_data	.word 0

        .text
        ;pay attention to "!"
start:	ssbx 	intm			;disable all interrupts
		ssbx 	sxm			;extend sign
		ssbx 	frct			;fraction multiply
		stm		#0FFFFh,sp	;stack initialize
		stm 	#7FACh,pmst
;initial
		stm 	#dat_buff,AR3			;data store addr
		stm 	#fil_window,AR5		;filter coff store addr
		ld	 	#rawdata,A			;output store addr
		stm		#rawdata,ar1
		stl		a,*(data_addr)
;input data 
		stm		#62,ar2			;ar2->counter
		ldm		ar5,a
		add		#62,a			;point to middle of window
		stlm	a,ar5
		nop
loop:	ld		*ar1+,b
		stl		b,*ar5+
		banz	next,*ar2-			;input 63 point
;		stm		#fil_length+1,ar2	;entry point!
		ld		#fil_window,a
		stl		a,*(beg_addr)
		ld		#fil_length,a
		b		sort1				;call!
		
ret1:	stm		#fil_window,ar5
		ldm		ar5,a
		add		#62,a			;point to middle of window
		stlm	a,ar5
		nop
		nop
		ld		*ar5,a			;fildata
		stl		a,*(temp)
		ld		*(data_addr),b			;rawdata
		add		#1,b
		stl		b,*(data_addr)
		sub		#1,b			;adjust rawdata pointer
		stlm	b,ar5
		nop
		nop
		ld		*ar5,b
		sub		*(temp),b,a
		add		#50,a			;raise data to positive!
		stl		a,*ar3+
		stm		#fil_window+1,ar5	;data input
		b		inf
next:	b		loop
	
inf:	b		blr

		


loopn: 
		b		loopn
		
		
		
;************validated**************
;***********************************
;		sort a group of nums
;		  using pop method 
;***********************************				
sort1:	
		stlm	a,ar2		;ar2->counter
loop1: 	BANZ 	loop2, *AR2-
		B 		lea
loop2: 	ldm		ar2,a
		stlm	a,ar6		;ar6->counter
		ld		*(beg_addr),a
		stlm	a,ar5		;start address
leave1:	BANZ 	cmp2, *AR6-
		B 		lea1
cmp2: 	ld		*ar5+,b
		stlm	b,ar4
		ld		*ar5,b
		stlm	b,ar0
		rsbx 	tc
		nop
		nop
		cmpr	2,ar4		;compare
		bc		leave1,ntc
		ldm		ar4,a			;exchange if necessary
		stl		a,*ar5-
		stl		b,*ar5+	
		B 		leave1		
lea1:	b 		loop1
lea:	b		ret1
	
;***********************************
;		sort the new added num
;		ignore the biggest one
;	  block right shift one unit
;***********************************
sort2:
		stlm	a,ar2		;ar2->counter
loop21: BANZ 	loop22, *AR2-
		B 		lea2
loop22: ldm		ar2,a
		stlm	a,ar6		;ar6->counter
		ld		*(beg_addr),a
		stlm	a,ar5		;start address
leave21:BANZ 	cmp, *AR6-
		B 		lea21
cmp: 	ld		*ar5+,b
		stlm	b,ar4
		ld		*ar5,b
		stlm	b,ar0
		rsbx 	tc
		nop
		nop
		cmpr	2,ar4		;compare
		bc		leave21,ntc
		ldm		ar4,a			;exchange if necessary
		stl		a,*ar5-
		stl		b,*ar5+	
		B 		leave21		
lea21:	b 		loop21
lea2:	b		ret2

;blr filter	
blr:	ld		*ar1+,a		;rawdata
		stl		a,*(fil_window);circular left shift
		ld		#fil_window,a
		stl		a,*(beg_addr)
		ld		#fil_length,a
		b		sort2
ret2:	stm		#fil_window,ar5
		ldm		ar5,a
		add		#62,a			;point to middle of window
		stlm	a,ar5
		nop
		nop
		ld		*ar5,a			;fildata
		stl		a,*(temp)
		ld		*(data_addr),b			;rawdata
		add		#1,b
		stl		b,*(data_addr)
		sub		#1,b
		stlm	b,ar5
		nop
		nop
		ld		*ar5,b
		sub		*(temp),b,a
		add		#50,a			;raise data to positive!
		stl		a,*ar3+
end_b:	b		blr
		
       .end

⌨️ 快捷键说明

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