📄 5-8.asm
字号:
.title "CVSDcoder.asm"
.mmregs
STACK .usect "STACK",10h
.global Init, Begin
DeltaMax .set 1280h
DeltaMin .set 65h
Beta .set 99h
Delta0CVSD .set 10h
.data
TBL: .word 0,1,0
.bss ThreeJudge,3
.bss InData,1
.bss OutData,1
.bss DeltaCVSD,1
.bss ValPreCVSD,1
.text
Init: STM #ThreeJudge,AR5
RPT #3
MVPD TBL,*AR5+
STM #ThreeJudge,AR5
ST #20,*(DeltaCVSD)
ST #0,*(ValPreCVSD)
ST #100,*(InData)
Begin: LD *(InData),A
STLM A,AR1
LD *(ValPreCVSD),A
STLM A,AR0
CMPR LT,AR1
BC DiffNeg,TC
STM #1,*AR5+
ST #1,*(OutData)
LD #1,A
AND *AR5+,A
AND *AR5+,A
BC L1,ANEQ
STM #DeltaCVSD,AR6
STM #Beta,T
MPY AR6,A
B L2
L1: LD #DeltaCVSD,A
STM #Delta0CVSD,AR3;
ADD AR3,A
L2: STM #DeltaMax,AR0
STL A,AR4
CMPR LT,AR4
BC L3,TC
LD AR0,A
L3: STM #DeltaMin,AR0
STL A,AR4
CMPR GT,AR4
BC L4,TC
LD AR0,A
L4: STL A,*(DeltaCVSD)
STM #ValPreCVSD,AR4
ADD *AR4,A
STL A,*(ValPreCVSD)
B ending
DiffNeg: STM #0,*AR5+
ST #0,*(OutData)
LD #0,A
ADD *AR5+,A
ADD *AR5+,A
BC L5,ANEQ
LD #DeltaCVSD,A
STM #Delta0CVSD,AR3;
ADD AR3,A
B L6
L5: STM #DeltaCVSD,AR6
STM #Beta,T
MPY AR6,A
L6: STM #DeltaMax,AR0
STL A,AR4
CMPR LT,AR4
BC L7,TC
LD AR0,A
L7: STM #DeltaMin,AR0
CMPR GT,AR4
BC L8,TC
LD AR0,A
L8: STL A,*(DeltaCVSD)
STL A,AR4
STM #ValPreCVSD,AR6
LD *(AR6),A
SUB AR4,A
STL A,*(ValPreCVSD)
ending: STL A,*(ValPreCVSD)
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -