[STM32F0] 无聊写个64位除以32位的函数,适合M0没有除法指令

[复制链接]
3277|7
 楼主| yjmwxwx 发表于 2017-9-5 08:22 | 显示全部楼层 |阅读模式
本帖最后由 yjmwxwx 于 2017-9-5 08:23 编辑

家里蹲没工作闲着无聊胡乱写
单片机STM32F030F4P6

R0高32位 0xfedcba98
R1低32位 0x76543210
除以R2      0x33333333
等于           
R0高32位 0x00000004
R1低32位 0xfa4fa4ff
R2余数       0x0eca8643

  1. _chufa64:                @64位除以32位软件除法
  2.         [url=home.php?mod=space&uid=72445]@[/url] r0-r1除以r2等于R0-R1余数R2
  3.         push {r4-r7}
  4.         mov r3, r0
  5.         mov r6, r1
  6.         movs r4, # 1
  7.         mov r7, r4
  8.         lsls r4, r4, # 31
  9.         movs r0, # 0
  10.         mov r5, r0
  11. _chufaxunhuan64:
  12.         lsls r3, r3, # 1
  13.         adcs r5, r5, r5
  14.         cmp r5, r2
  15.         bcc _chufaweishubudao64
  16.         adds r0, r0, r4
  17.         subs r5, r5, r2
  18. _chufaweishubudao64:
  19.         lsrs r4, r4, # 1
  20.         bne _chufaxunhuan64
  21.         push {r0}
  22.         lsls r7, r7, # 31
  23.         bpl _chufafanhui64
  24.         mov r4, r7
  25.         mov r3, r6
  26.         movs r0, # 0
  27.         b _chufaxunhuan64
  28. _chufafanhui64:
  29.         mov r1, r0
  30.         mov r2, r5
  31.         pop {r0}
  32.         pop {r0}
  33.         pop {r4-r7}
  34.         bx lr

  35. _chufa:                @软件除法
  36.         @ r0 除以 r1 等于 商(r0)余数(r1)
  37.         push {r4}
  38.         mov r2, r0
  39.         movs r3, # 1
  40.         lsls r3, r3, # 31
  41.         movs r0, # 0
  42.         mov r4, r0
  43. _chufaxunhuan:
  44.         lsls r2, r2, # 1
  45.         adcs r4, r4, r4
  46.         cmp r4, r1
  47.         bcc _chufaweishubudao0
  48.         adds r0, r0, r3
  49.         subs r4, r4, r1
  50. _chufaweishubudao0:
  51.         lsrs r3, r3, # 1
  52.         bne _chufaxunhuan
  53.         mov r1, r4
  54.         pop {r4}
  55.         bx lr



截图_2017-09-05_07-47-47.png

chufa.zip (74.29 KB, 下载次数: 21)

aozima 发表于 2017-9-5 08:55 | 显示全部楼层
楼主这Jlink命令行用得溜啊
 楼主| yjmwxwx 发表于 2017-9-5 09:03 | 显示全部楼层
aozima 发表于 2017-9-5 08:55
楼主这Jlink命令行用得溜啊

都用这个调试,人家这个工具做的实在是好用。
feelhyq 发表于 2017-9-5 09:25 | 显示全部楼层
mmuuss586 发表于 2017-9-5 10:14 | 显示全部楼层
ac62 发表于 2017-9-5 15:51 | 显示全部楼层
这个厉害了
ahfl 发表于 2018-5-12 17:44 | 显示全部楼层
您好,我是程序小白。最近正在用STM32F031写代码。苦于没有除法器到处找资料,看到您用汇编写的除法函数。完全不知如何用到MDK上,能否帮忙指点下 多谢
 楼主| yjmwxwx 发表于 2018-5-12 17:54 | 显示全部楼层
ahfl 发表于 2018-5-12 17:44
您好,我是程序小白。最近正在用STM32F031写代码。苦于没有除法器到处找资料,看到您用汇编写的除法函数。 ...

我这个32位的是权威指南里面的,64的是自己写的,我没用过MDK写STM32的程序,应该内联汇编或者单独建个.s文件就可以吧。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

123

主题

2969

帖子

54

粉丝
快速回复 在线客服 返回列表 返回顶部