*******************************************************************
基于TMS320C54X语音信号去噪和编码系统:语音信号的u/A律压缩程序
硬件上以:TMS320C54X+TLC320AD50为主实现
*******************************************************************
.mmregs
.ref start
.data
.bss speechin,1024,0,0 ; 为变量speechin申请1024个空间
.bss speechsave,1024,0,0 ; 为变量speechsave申请1024个空间
.bss speechout,1024,0,0 ; 为变量speechout申请1024个空间
.text
start: LD #1023,A ; A为speechin数据的个数
STM speechin,AR3 ; AR3指向speechin的首地址
loop: STL A,*AR3+ ; 初始化speechin的内容为1~1024
SUB #1,A
BC loop,ANEQ
NOP
STM 1D02h,AR7 ; 初始化AR7寄存器
STM #1023,*AR7
STM speechin,AR3
STM speechsave,AR4 ; AR4指向speechsave的首地址
loop1:
STM 0,AR2
BIT *AR3,15-9
RSBX OVM ; 判断数据的正负
NOP
BC positive,NTC ; 正数直接通过,直接到positive
STM #1,AR2 ; 负数做符号处理
NEG A
LD #1FFh,B ; 1FFh=10232/2的取整
AND B,A
STL A,*AR3
positive: BIT *AR3,15-8 ; 测试第8位
NOP
NOP
BC next1,NTC
LD #0F0h,B ; 0F0h=1FFh/2的取整
LD *AR3,A
AND B,A
ST 7,*AR4
B cmpssover
next1: BIT *AR3,15-7 ; 测试第7位
NOP
NOP
BC next2,NTC
LD #78h,B ; 78h=0F0/2的取整
AND B,A
RSBX C
ROL A
ST 6,*AR4
B cmpssover
next2: BIT *AR3,15-6 ; 测试第6位
NOP
NOP
BC next3,NTC
LD #3Ch,B ; 3Ch=78h /2的取整
AND B,A
RSBX C
ROL A
ROL A
ST 5,*AR4
B cmpssover
next3: BIT *AR3,15-5 ; 测试第5位
NOP
NOP
BC next4,NTC
LD #1Eh,B ; 1E h=3Ch /2的取整
AND B,A
RSBX C
RPT #2
ROL A
ST 4,*AR4
B cmpssover
next4: BIT *AR3,15-4 ; 测试第4位
NOP
NOP
BC next5,NTC
LD #0Fh,B ; 0F h=1E h /2的取整
AND B,A
RSBX C
RPT #3
ROL A
ST 3,*AR4
B cmpssover
next5: BIT *AR3,15-3 ; 测试第3位
NOP
NOP
BC next6,NTC
LD #7h,B ; 7 h=0F h /2的取整
AND B,A
RSBX C
RPT #4
ROL A
ST 2,*AR4
B cmpssover
next6: BIT *AR3,15-2 ; 测试第2位
NOP
NOP
BC next7,NTC
LD #3h,B ; 3 h=7 h /2的取整
AND B,A
RSBX C
RPT #5
ROL A
ST 1,*AR4
B cmpssover
next7: LD #1h,B ; 1 h=3 h /2的取整
AND B,A
RSBX C
RPT #6
ROL A
ST 0,*AR4
cmpssover: ; 压缩子程序
LDM AR2,B
BC nchgsign,BEQ
LD *AR4,B
RSBX OVM
NEG B
STL B,*AR4
nchgsign:
LD #0Fh,B
AND *AR4,B
OR B,A
STL A,*AR4
NOP
LD *AR3+,A
LD *AR4+,A
LD *AR7,A
SUB #1,A
STL A,*AR7
BC loop1,ANEQ
NOP
STM #1023,*AR7
STM speechsave,AR4
STM speechout,AR3
loop2: STM 0,AR2
LD #0Fh,B
LD *AR4,A
AND B,A
BIT *AR4,15-1 ; 测试第1位
NOP
NOP
BC nchgsign2,NTC
STM 1,AR2
RSBX OVM
NEG A
AND B,A
nchgsign2: BC dcmpssover,AEQ
STM 1D00h,AR5
STL A,*AR5
STM 1D01h,AR6
LD #7,A
SUB *AR5,A
STL A,*AR6
LD *AR4,A
LD #0F0h,B
AND B,A
LD #2,B
RSBX C
RPT *AR5
ROL B
ROR B
RPT *AR6
ROR A
ROL A
dcmpssover:
ADD A,B
LDM AR2,A
BC nchgsign3,AEQ
RSBX OVM
NEG B
nchgsign3:
STL B,*AR3
NOP
LD *AR3+,A
LD *AR4+,A
LD *AR7,A
SUB #1,A
STL A,*AR7
BC loop2,ANEQ
NOP
finish: B finish