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

📄 shft.asm

📁 DSP的例程
💻 ASM
字号:
	.title	"TMS320C2xx PROCESSOR SELFCHECK -- SHIFTER TESTS"
	.length	60
	.width	120
	.option	X
************************************************************
* SHIFTER TESTS                                            *
*                                                          *
* This routine checks the three shifters of the C2xx:      *
*                                                          *
*        1. input data-scaling shifter                     *
*        2. output data-scaling shifter                    *
*        3. product-scaling shifter                        *
*                                                          *
* Written by:                                              *
*                                                          *
* Release Version 1.0                                      *
*                                                          *
************************************************************
	.def	shft, end2xx
	.nolist
	.copy	"options.h"
	.copy	"memmap.h"
	.list

	.text
shft	.set	$+SS
; preliminary setup
	LDP	#0h		; data page @ 0h

*
* INPUT DATA-SCALING SHIFTER TEST
*
	SPLK	#1h,TEMP00	; data(TEMP00) = 1h
	LACC	TEMP00,0	; ACC = 00000001h
	ADD	TEMP00,1	; ACC = 00000003h
	ADD	TEMP00,2	; ACC = 00000007h
	ADD	TEMP00,3	; ACC = 0000000fh
	ADD	TEMP00,4	; ACC = 0000001fh
	ADD	TEMP00,5	; ACC = 0000003fh
	ADD	TEMP00,6	; ACC = 0000007fh
	ADD	TEMP00,7	; ACC = 000000ffh
	ADD	TEMP00,8	; ACC = 000001ffh
	ADD	TEMP00,9	; ACC = 000003ffh
	ADD	TEMP00,10	; ACC = 000007ffh
	ADD	TEMP00,11	; ACC = 00000fffh
	ADD	TEMP00,12	; ACC = 00001fffh
	ADD	TEMP00,13	; ACC = 00003fffh
	ADD	TEMP00,14	; ACC = 00007fffh
	ADD	TEMP00,15	; ACC = 0000ffffh
	XOR	#0ffffh		; ACC = 0
	BCND	ershft1,NEQ	; if ACC != 0 then error

*
* OUTPUT DATA-SCALING SHIFTER TEST
*
	SETC	SXM		; sign extension mode on
	LACL	#1h		; ACC = 00000001h
	SACL	TEMP01,0	; data(TEMP01) = 0001h
	LACC	TEMP01		; ACC = 00000001h
	SACL	TEMP01,1	; data(TEMP01) = 0002h
	LACC	TEMP01		; ACC = 00000002h
	SACL	TEMP01,2	; data(TEMP01) = 0008h
	LACC	TEMP01		; ACC = 00000008h
	SACL	TEMP01,3	; data(TEMP01) = 0040h
	LACC	TEMP01		; ACC = 00000040h
	SACL	TEMP01,4	; data(TEMP01) = 0400h
	LACC	TEMP01		; ACC = 00000400h
	SACL	TEMP01,5	; data(TEMP01) = 8000h
	LACC	TEMP01		; ACC = ffff8000h
	SACH	TEMP01,6	; data(TEMP01) = ffe0h
	LACC	TEMP01,16	; ACC = ffe00000h
	SACH	TEMP01,7	; data(TEMP01) = f000h
	LACL	TEMP01		; ACC = 0000f000h
	XOR	#0f000h		; ACC = 0
	BCND	ershft2,NEQ	; if ACC != 0 then error

*
* PRODUCT-SCALING SHIFTER TEST
*
	SPLK	#0aah,TEMP00	; data(TEMP00)=aah
	LT	TEMP00		; TREG = aa00h
	MPY	#100h		; PREG = ffffaa00h
	LPH	TEMP00		; PREG = 00aaaa00h

	SPM	0		; set shift = 0
	PAC			; ACC = 00aaaa00h
	SPM	1		; set shift = 1 left
	APAC			; ACC = 01fffe00h
	SPM	2		; set shift = 4 left
	APAC			; ACC = 0caa9e00h
	SPM	3		; set shift = 6 right
	APAC			; ACC = 0cad48a8h
	SPM	0		; turn off shifter
	XOR	#48a8h		; ACC = 0cad0000h
	XOR	#0cadh,16	; ACC = 0
	BCND	ershft3,NEQ	; if ACC != 0 then error

	RET			; test passes

*
* ERROR HANDLERS
*
ershft1	.set	$+SS

	LACL	#80h		; input data-scaling shifter error
	RET			; test fails
;
ershft2	.set	$+SS

	LACL	#81h		; output data-scaling shifter error
	RET			; test fails

ershft3	.set	$+SS

	LACL	#82h		; product-scaling shifter error
	RET			; test fails
*
* Constants needed to perform the optional program code checksum test.
*
end2xx	.set	$+SS

CHKSUMHI	.word	0ffach
CHKSUMLO	.word	0a017h

⌨️ 快捷键说明

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