网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: Analog安诺电子网 >> 文章 >> 技术交流 >> 文章正文
  ADI DSP双精度除法的例子           ★★★ 【字体:
ADI DSP双精度除法的例子
作者:佚名    文章来源:Internet    点击数:    更新时间:2008-4-4    

.MODULE         Double_Precision_Divide;

{
        Double-Precision Division
                Z = X / Y

        Calling Parameters
                AY0 = LSW of Y
                AY1 = MSW of Y
                SR1 = MSW of X
                SR0 = Next Significant Word of X
                MR1 = Next Significant Word of X
                MR0 = LSW of X
                SE = -15

        Return Values
                MR1 = MSW of Z
                MR0 = LSW of Z

        Altered Registers
                AF,AR,AX1,AX0,SI,SR,MR

        Computation Time
                485 cycles (maximum)

}

.ENTRY  ddivs;
.ENTRY  ddivq;

ddivs:  AF=PASS SR1;
        SI=SR0, AR=SR1 XOR AY1;     {Exclusive or sign bits}
        AX1=AR;
        SR=LSHIFT MR0 BY 1(LO);     {Shift dividend up one bit}
        SR=SR OR LSHIFT MR1 BY 1(HI);
        SR=SR OR LSHIFT AR(LO);     {Shift in quotient bit}
        AR=PASS AF, MR0=SR0;
        MR1=SR1, SR=LSHIFT MR1(LO);
        SR=SR OR LSHIFT SI BY 1(LO);
        SR=SR OR LSHIFT AR BY 1(HI);
        CNTR=31;
        JUMP ddiv;
ddivq:  CNTR=32;
        AX1=0;
ddiv:   AX0=AY1;
        DO ddivu UNTIL CE;
                AR=ABS AX1;        
                IF POS JUMP aqz;   {Is quotient bit set?}
aqo:            AR=SR0+AY0;        {Yes, add divisor to partial remainder}
                SI=AR, AF=SR1+AY1+C;
                JUMP ddivi;
aqz:            AR=SR0-AY0;        {No, subtract divisor from partial remainder}
                SI=AR, AF=SR1-AY1+C-1;
ddivi:          SR=LSHIFT MR0 BY 1(LO); {Shift dividend one bit}
                SR=SR OR LSHIFT MR1 BY 1(HI);
                AR=AX0 XOR AF;     {Compute quotient bit}
                AX1=AR;            {Save quotient bit}
                AR=NOT AX1;
                SR=SR OR LSHIFT AR(LO); {Shift in new bit}
                MR0=SR0, AR=PASS AF;
                MR1=SR1, SR=LSHIFT MR1(LO);
                SR=SR OR LSHIFT SI BY 1(LO);
ddivu:          SR=SR OR LSHIFT AR BY 1(HI);
                RTS;

.ENDMOD;

//本代码Blackfin示例

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    [连载]TigerSHARC系列DSP概貌
    超声便携式设备的系统划分
    基于ADSP-TS201的实时SAR成像
    binutils-2.18/libiberty/Ma
    bfin-xxx-gcc主控Makefile中
    host-i686-pc-cygwin/gcc/Ma
    bfin-xxx-gcc中native目标的
    bfin-xxx-gcc中collect2目标
    bfin-xxx-gcc中objc目标的生
    [连载]TigerSHARC系列DSP概貌
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:Analog安诺电子网 湘ICP备06016315号