历史上的今天
今天是:2025年05月08日(星期四)
2018年05月08日 | 汇编语言的16位除法子程序
2018-05-08 来源:eefocus
应邀写个汇编语言的除法子程序。
编写除法子程序,有两种算法,移位相减的方法和循环相减的方法。
移位相减的方法是仿照人们做除法的竖式编写,执行速度较快,但是计算的原理,一般人不好理解,难以让大家推广到更多的字节。故此下面采用循环相减的思路来编写程序。
设计思路:所谓除法,就是要求出在被除数中,含有多少个除数。那么就用被除数连续的减去除数,直到不够减为止,够减的次数,就是商,不够减的数值,就是余数。
下列程序,对数值范围的要求很宽松,被除数、除数和商,都可以是16位数,这比网上常见的16位除8位的除法程序,适用面要广得多。
注意,除数为0的问题,应该在主程序中进行检测。
;-------------------------------------
;16位/16位的子程序
;被除数:R2R3、除数:R4R5;商:DPTR、余数:R2R3。
;占用:A、B。
;-------------------------------------
R23DIVR45:
MOV DPTR, #0
D_LOOP:
CLR C
MOV A, R3
SUBB A, R5
MOV B, A
MOV A, R2
SUBB A, R4 ;R2R3-R4R5
JC DIV_E ;有借位转移
INC DPTR
MOV R3, B
MOV R2, A
SJMP D_LOOP
DIV_E:
RET ;不够减就结束
;-------------------------------------
;完
对于R2R3中的余数,还应该有个“四舍五入”的程序。
呵呵,我来抛砖,不知那位读者可以还玉?
下一篇:单片机同一IO口输出两组数组
史海拾趣
|
招聘2-3名软件测试人员 我部门是隶属于一工厂的研发部,工厂在深圳福永(机场附近)。主要从事GPS的研发工作。 工作地点:深圳市南山区科技园 要求: 1) 计算机软件及相关专业毕业,大专及以上学历 2) 对软件测试有一定的了解和兴趣 3) 有耐心 ...… 查看全部问答> |
|
我的DriverStudio2.6安装在d盘, 在用DDK Build Setting进入VC6.0后进行库编译时build\\batch build出现这个错误: D:\\Program Files\\NuMega\\DriverStudio\\DriverWorks\\include\\dep_wdm\\hidport.h(6) : fatal error C1189: #error : & ...… 查看全部问答> |
|
移植 lan91c111 for pxa255 wince4.2 驱动 到 pxa270 wince5.0 下,哪位高手做过,需要修改那些地方,指点一下,谢谢!… 查看全部问答> |
|
Features Evaluation Board STM3210E-EVAL STM3210B-EVAL Included STM32 STM32F103ZE (512 K) STM32F103RB (128 K) 20-pin JTAG interface connector  ...… 查看全部问答> |
|
STM32的SDIO读写SD卡,使用4bit模式时,连续读写多块总是提示SD_START_BIT_ERR,从论坛上看到有大虾可以实现4bit多块读写,能不能帮忙指点一二,非常感谢啊。。。 1bit模式连续读写多块是正确的,是2G的SD卡。 我用的是万利的开发板,程序是V ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:50 编辑 可穿戴智能设备是近几年的热门事物,当下的发展也非常快。 在6月24日华为新品发布会上,华为不仅发布了新款智能机,还为我们带来了一款全新的智能手环产品,这款产品不仅拥有运动、睡眠等常规 ...… 查看全部问答> |




