dsp汇编实现一维8点FDCT

.title  "fdct.asm"       
 .mmregs        
.global    _asmfdct;start
x    .usect  "DATA3",8
h    .usect  "DATA4",8
y   .usect  "DATA5",8

size    .set    8               
.sect   ".coef2"    
COEF2   .word    32768/2, 32768/2, 32768/2, 32768/2
        .word    45450/2, 38531/2, 25745/2, 9040/2
        .word    42813/2, 17733/2, -17733/2, -42813/2
        .word    38531/2, -9040/2, -45450/2, -25746/2       
        .word    32768/2, -32768/2, -32768/2, 32768/2
        .word    25745/2, -45450/2, 9040/2, 38531/2 
        .word    17733/2, -42813/2, 42813/2, -17733/2
        .word    9040/2, -25745/2, 38531/2, -45450/2
        .text
_asmfdct:
PSHMAR1             
PSHM    AR6
PSHM    AR7
PSHM    ST0                       
PSHM    ST1      
STLM    A,AR6
LD      @6,A   
STLM    A,AR7
SSBX    FRCT
;STM   #1,BRC

STM     #x,AR2
RPTZ  A,#7
STL   A,*AR2+%

STM  #h,AR2
RPTZ  A,#7
STL   A,*AR2+%

STM     #x,AR2
STM     #x+(size-1),AR3
STM     #h,AR4
STM     #h+(size-1),AR5
STM     #size,BK
STM     #1,AR0

        ;RPTB FDCTEND-1
FDCT:    

LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%
        LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%
LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%
LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%
LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%
LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%
LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%
LD *AR6+,A;每次更新x0-x7
STL A,*AR2+%

DLD *AR2+,B      ;偶址高16位,低16位在下一个单元; AR2+2
DADD *AR3,B,A;奇地址高16位,低16位在上一个单元
DST A,*AR4+  ;h0=x0+x7,h1=x1+x6,
DSUB *AR3-,B
DST B,*AR5- ;h7=x0-x7,h6=x1-x6,
DLD *AR2+,B         
DADD *AR3,B,A
DST   A,*AR4  ;h2=x2+x5,h5=x3+x4,
DSUB  *AR3-,B
DST  B,*AR5  ;h3=x2-x5,h4=x3-x4
        STM     #COEF2,AR4
        STM     #h,AR5
        STM     #y,AR3
    MPY     *AR4+,*AR5+0%,A     ;y0
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4+,*AR5+0%,A
        ;STH     A,*AR3+ 
        STH     A,*AR7+

     MPY     *AR4+,*AR5+0%,A     ;y1
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4+,*AR5+0%,A
        STH     A,*AR3+ 
        STH     A,*AR7+
        MPY     *AR4+,*AR5+0%,A     ;y2
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4+,*AR5+0%,A
       ; STH     A,*AR3+ 
        STH     A,*AR7+

        MPY     *AR4+,*AR5+0%,A     ;y3
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4+,*AR5+0%,A
       ; STH     A,*AR3+
        STH     A,*AR7+

        MPY     *AR4+,*AR5+0%,A     ;y4
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4+,*AR5+0%,A
       ; STH     A,*AR3+ 
        STH     A,*AR7+

        MPY     *AR4+,*AR5+0%,A     ;y5
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4+,*AR5+0%,A
       ; STH     A,*AR3+ 
        STH     A,*AR7+

        MPY     *AR4+,*AR5+0%,A     ;y6
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4+,*AR5+0%,A
       ; STH     A,*AR3+ 
        STH     A,*AR7+

        MPY     *AR4+,*AR5+0%,A     ;y7
        MAC     *AR4+,*AR5+0%,A
        MAC     *AR4+,*AR5+0%,A
        MACR    *AR4,*AR5,A
       ; STH     A,*AR3+
STH     A,*AR7+
FDCTEND POPM  ST1
POPM    ST0
POPM    AR7
        POPM    AR6                            
    POPM    AR1
        RET
        .end

汇编输出结果:
汇编输出结果
c语言验证结果:
在这里插入图片描述

详细讲解及工程下载请关注我的公众号***For My Future***
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值