?? 5-4.asm
字號:
.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數(shù)據(jù)的個數(shù)
STM speechin,AR3 ; AR3指向speechin的首地址
loop: STL A,*AR3+ ; 初始化speechin的內(nèi)容為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 ; 判斷數(shù)據(jù)的正負(fù)
NOP
BC positive,NTC ; 正數(shù)直接通過,直接到positive
STM #1,AR2 ; 負(fù)數(shù)做符號處理
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -