Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 硬件指南 > 应用技巧 > 32位除以16(DSP56F805汇编)
【标  题】:32位除以16(DSP56F805汇编)
【关键字】:32,16,DSP56F805
【来  源】:http://www.cublog.cn/u/16785/showart.php?id=107274

32位除以16(DSP56F805汇编)

Your Ad Here

;==================================================
;32位除以16位结果为16位,结果放在Y0中,清0,累加器A
;入口参数:被除数在A,Y0中,除数在X0中
;出口:结果在A,Y0中
;说明:32位除以16位的运算中,结果为16位或32位
;=================================================

div_32by16:                                      
                cmp     #$0000,x0
                beq     error_diver
                cmp     #1,x0
                beq     diver_return
                bra     right_diver
error_diver:   
                move    #$ffffffff,a
                move    #$ffff,y0
diver_return:               
                rts               
right_diver:               
                move    a0,a1
                move    y0,a0
                brset   #$8000,a1,diver_ok
                brset   #$8000,x0,diver_ok
                bra     run_diver               
diver_ok:
                asr     a
                bfclr   #$8000,a1
                asr     x0
                bfclr   #$8000,x0                         
run_diver:               
                move    a1,y1
                cmp     x0,y1
                bcc     overflow_deal
                                                             ;正整数除法,余数必须右移
                move    #$3ffe,y1                            ;本来在这里可以用4000乘的
                mpysu   x0,y1,b                              ;但用4002可以提高运算精度
                asr     b                                    ;
                bfclr   #$8000,b1
                move    b0,y0                                ;
                move    b1,y1                                ;
                clr     b                                    ;
                tfr     a,b                                  ;
                asr     b
                bfclr   #$8000,b1                            ;
                bfclr   #$0001,sr                            ;
                sbc     y,b                                  ;比较并转移
                bcs     continue_diver                         
 over_flow:         
                asr      a
                bfclr    #$8000,a1                           ;
                asl      a                                   ;
                bfclr    #$0001,sr
                rep      #16                                 ;
                div      x0,a
                clr      a1
                asl      a
                move     a0,y0
                add      x0,a
                asr      a
                move     a1,x:temp
                clr      a
                rts
continue_diver:                
                asl     a                                    ;             
                bfclr   #$0001,sr                            ;
                rep     #16                                  ;
                div     x0,a                                 ;
                move    a0,y0                                ;
                add     x0,a
                asr     a
                move    a1,x:temp
                clr     a                                    ;
                rts
overflow_deal:          
                move   a0,y0
                move   a1,a0
                move   #$0000,a1
                asl    a
                bfclr  #$0001,sr
                rep    #16
                div    x0,a
                lea    (sp)+
                move   a0,x:(sp)
                add    x0,a
                asr    a
                move   a1,a0
                move   #$0000,a1
                jsr    right_diver
                pop    a0
                rts  

华清远见嵌入式培训第一品牌

http://www.farsight.com.cn/

    中国软件行业协会嵌入式分会会员单位       清华大学合作培训机构

    “上海嵌入式联盟”唯一指定培训机构       《电子产品世界》战略合作伙伴

培训课程有嵌入式Linux就业培训班

 嵌入式Linux预科班

 嵌入式Linux应用开发班

 嵌入式Linux系统开发班

 嵌入式Linux驱动开发班

WinCE.Net系统开发基础班

WinCE.Net定制与驱动开发班

FPGA应用设计培训班

 C2000DSP系统开发培训班

 C5000DSP系统开发培训班

C6000DSP系统开发培训班

 C6000 DSP硬件开发培训班

 Cadence PCB设计初级班

Cadence PCB设计高级班等

详见http://www.farsight.com.cn/

 

针对DSP处理器的应用设计的系统存储器:【上一篇】
关于昂达VP4X4的一点使用研究:【下一篇】
【相关文章】
  • 32位、64位的区别
  • 14.16 Boolean expressions
  • TMS320LF240x DSP C语言开发应用- -
  • mount/umount 16问
  • mount/umount 16问 (转载)
  • 9I-ocp复习资料(007/032/033)
  • redhat9内核升级到2.6.16.1
  • 64位中的openoffice.org&&运行32位多媒体软件的一些想法
  • drwtsn32 调试windows程序
  • P2P-Worm.Win32.Polipos.a 蠕虫公告(转)
  • 【随机文章】
  • 掌握 Ajax,第 3 部分: Ajax 中的高级请求和响应
  • 一切都结束了
  • 防御来自网络的攻击(5)
  • 明星三缺一2002运行时出现乱码提示框导致无法运行的解决办法
  • 选择要安装的软件包
  • 制作自己的MP3播放器
  • 近日Intel在IDF中展示了一颗Intel最新
  • 光孤子的未来
  • Photoshop 7.0 套索工具和魔棒工具
  • 二、怎样编写CSS?
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.