📄 shft.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 David M. Alter *
* member technical staff *
* Texas Instruments Inc. *
* *
* 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 + -