音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

剛寫的一個(gè)8位ADPCM壓縮程序,秀一下.

作者:shuaihu 欄目:單片機(jī)
剛寫的一個(gè)8位ADPCM壓縮程序,秀一下.
.PUBLIC _statei,_stateo,_indextable,_stepsizetable //定義全局變量
S_STATE:.STRUCT                                
    PrevValue:.DW 1 DUP(?)
    PrevIndex:.DW 1 DUP(?)
.ENDS
.DATA
_indextable:     .DW -1, -1, -1, -1, 2, 4, 6, 8, -1, -1, -1, -1, 2, 4, 6, 8
_stepsizetable:    .DW 4, 5, 6, 7, 8, 9, 11,13,15,17,19, 22, 25,28, 31, 34,38, 42, 46, 50, 54, 59, 64, 69, 74, 79, 85, 91, 97, 103, 109,116,123,127
.RAM
_statei:.S_STATE[]
_stateo:.S_STATE[]

.DEFINE STEP         5
.DEFINE BUFOSTEP     4
.DEFINE BUFISTEP     3
.DEFINE SIGN        2
.DEFINE LEN            11
.DEFINE OUTDATA        10
.DEFINE INDATA        9
.CODE
.PUBLIC _ADPCM_ENCODE,_ADPCM_DECODE
_ADPCM_ENCODE: .PROC
    PUSH bp to [sp]
    sp-=6        
    bp=SP+1
    r1=[_statei.PrevIndex]
    r1+=_stepsizetable
    R1=[r1]
    [BP+STEP]=R1
    R1=0
    [BP+BUFOSTEP]=R1 //BUFOSTEP
    [BP+BUFISTEP]=R1 //BUFISTEP
T1:
    R1=[BP+LEN]
    cmp R1,0
    JNE LOOP
    PC= EXIT
LOOP:
    R4=[BP+INDATA]
    R2=[R4]
    R3=[BP+BUFISTEP]
    TEST R3,1
    JNZ LOW_BIT
        R2=R2 LSR R2
        R2=R2 LSR R2
        JMP T2
LOW_BIT:
        R2&=0x00FF
        R1-=1
        R4+=1
    [BP+INDATA]=R4
    [BP+LEN]=R1
T2:    R3=R3 XOR 0xFFFF
    [BP+BUFISTEP]=R3    //R1,R3,R4 FREE;
    R1=0    
    R3=[_statei.PrevValue]
    R2-=R3
    JSC T3
    R1=8
    R2=-R2                //R2 DIFF
T3:                     //R1 DELTA
    [BP+SIGN]=R1
    R3=[BP+STEP]        //R3 STEP
    R4=R3 LSR 3            //R4 vpdiff
    CMP R2,R3
    JNGE T4
    R1=4
    R2-=R3
    R4+=R3
T4:
    R3=R3 LSR 1
    CMP R2,R3
    JNGE T5
    R1|=2
    R2-=R3
    R4+=R3
T5:
    R3=R3 LSR 1
    CMP R2,R3
    JNGE T6
    R1|=1
    R4+=R3
T6:                //R2 R3 FREE
    r3=[_statei.PrevValue]
    R2=[BP+SIGN]
    TEST R2,0x8
    JNZ T7
    R3+=R4
    JMP T8
T7: R3-=R4
T8:    CMP R3,127
    JLE T9
    R3=127
T9:    CMP R3,-128
    JGE T10
    R3=-128
T10:[_statei.PrevValue]=R3
    R1|=R2
    R2=R1+_indextable
    R2=[R2]
    R2+=[_statei.PrevIndex]
    JSC T11_1
        R2=0
T11_1:
        CMP R2,33
        JLE T11
            R2=33
T11:
    [_statei.PrevIndex]=R2
    R3=R2+_stepsizetable
    R3=[R3]
    [BP+STEP]=R3
    R3=[BP+OUTDATA]
    R4=[R3]
    R2=[BP+BUFOSTEP]
    CMP R2,0
        JNE T12
        R1 = R1 LSR 4
        R1 = R1 ROR 4
        [R3]=R1
        JMP T15
T12:    
    CMP R2,1
        JNE T13
        R1=R1 LSL 4
        R1=R1 LSL 4
        R4|=R1
        [R3]=R4
        JMP T15
T13:
    CMP R2,2
        JNE T14    
        R1=R1 LSL 4
        R4|=R1
        [R3]=R4
        JMP T15
T14:
    CMP R2,3
        JNE T15
        R4|=R1
        [R3]=R4
        R3+=1
        [BP+OUTDATA]=R3
        R2=0
        [BP+BUFOSTEP]=R2
        PC=T1
T15:
    R2+=1
    [BP+BUFOSTEP]=R2
    PC=T1
EXIT:
    sp+=6;
    pop bp from [sp]
    retf
    .ENDP
_ADPCM_DECODE:.PROC
    .ENDP

2樓: >>參與討論
tg.liu
好貼!
最近正在學(xué)習(xí),謝謝!

3樓: >>參與討論
紅葉醉花
這是什么單片機(jī)上的?
畢業(yè)設(shè)計(jì)陷入泥沼了。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
關(guān)于C8051的仿真
一個(gè)I/O口操作的麻煩問題
有人知道accesse數(shù)據(jù)庫最多能放多少條記錄?
用復(fù)位實(shí)現(xiàn)多任務(wù)、看門狗、抗干擾
數(shù)據(jù)采集 與 頻率計(jì)算
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號