www.pudn.com > DSPstudyandexample.rar > EX01.ASM


***DSP指令实验*** 
 
 
		.title 	"ex1" 
		.mmregs 
		.def _c_int00 
 
ExNo	.SET 	00H 
DAT0	.SET	01H 
DAT1	.SET	02H 
DAT2	.SET	03H 
		.data 
buff	.space 100h*16 
 
		.text 
ADD3	.MACRO P1,P2,P3,ADDRP		;三数相加宏定义: ADDRP = P1 + P2 + P3 
		LD P1,A 
		ADD P2,A 
		ADD P3,A 
		STL A,ADDRP 
		.ENDM		 
		 
_c_int00: 
		B start 
         
start:	LD #020h,DP					;置数据页指针 
		STM #3000h,SP				;置堆栈指针 
		SSBX INTM					;禁止中断 
		ST	#0001H,ExNo 
		nop 
		nop 
		nop 
		 
bk0:	ST #0012h,DAT0 
		LD #0023h,A 
		ADD DAT0,A					;加法操作: A = A + DAT0 
		STL	A,DAT0 
		NOP		 
		NOP 
		NOP 
		NOP 
 
bk1:	ST #0054h,DAT0 
		LD #0002h,A 
		SUB DAT0,A					;减法操作: A = A - DAT0 
		STL	A,DAT0 
		NOP 
		NOP 
		NOP 
		NOP 
 
bk2:	ST #0345h,DAT0 
		STM #0002h,T 
		MPY DAT0,A					;乘法操作: A = DAT0 * T 
		STL	A,DAT0 
		NOP 
		NOP 
		NOP 
		NOP 
 
bk3:	ST #1000h,DAT0 
		ST #0041h,DAT1 
		RSBX SXM					;无符号除法操作: DAT0 ÷ DAT1 ;   结果:  DAT2:商;DAT3:余数 
		LD DAT0,A 
		RPT #15 
		SUBC DAT1,A 
		STL A,DAT2 
		STH A,DAT0 
		NOP 
		NOP 
		NOP 
		NOP 
 
bk4:	ST #0333h,DAT0 
		SQUR DAT0,A					;平方操作: A = DAT0 * DAT0 
		STL	A,DAT0 
		NOP 
		NOP 
		NOP 
		NOP 
 
bk5:	ST #0034h,DAT0 
		ST #0243h,DAT1 
		ST #1230h,DAT2 
		ADD3 DAT0,DAT1,DAT2,DAT0    ;三数相加操作: DAT0 = DAT0 + DAT1 + DAT2 
		NOP 
		NOP 
		NOP 
		NOP 
 
bk6:	B bk0						;循环执行 
		.end