打印
[51单片机]

请教,C51 除法运算,同时求“ 商、余数 ”,怎样用插入汇编来完成

[复制链接]
205|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
panxiaoyi|  楼主 | 2024-12-1 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好。
请教一下,C51 除法运算,同时求“ 商、余数 ”,请问怎样用插入汇编来完成?
这个除法运算,同时求商和余数,感觉用 C 语句,太占用 CPU 的时间(不知道是不是?),好像 51 单片机 的汇编除法,是可以同时求商和余数的,但是,我不懂汇编,更不懂怎样把 C 的变量传递到汇编,然后还要把结果返回给 C 。
请注意,要求这条语句不能受中断函数的干扰。
我的意思如下面的代码,在此感谢先

unsigned char  u8a, u8b, u8c, u8d;

// 上面的变量固定为 C51 格式,请问下面的两条语句,怎样用汇编 DIV AB 指令来编写?

        u8c = u8a / u8b ;
        u8d = u8a % u8b ;


使用特权

评论回复

相关帖子

沙发
panxiaoyi|  楼主 | 2024-12-1 22:08 | 只看该作者
本帖最后由 panxiaoyi 于 2024-12-1 22:40 编辑

我在实际的应用中,需要经常的用到除法运算,求 “商、余数”,变量就是 8 位。比如,把温度转化为百十个位数,用数码管显示,还有实时的调控温度,都经常用到这个计算。当然,如果汇编代码比较复杂,那就不敢麻烦大家了,太复杂的插入汇编,我也担心自己吃不消。
如果不复杂,这倒是一个很好的替代。
对了,我上面的两条代码,C51 会不会聪明的优化成一个汇编模块呢?如果会,那就不用杞人忧天了。

使用特权

评论回复
板凳
ayb_ice| | 2024-12-2 08:42 | 只看该作者
8位乘法,除法51直接支持,用汇编也没有多大提升空间,意义不大,不用汇编,余数在B寄存器中,可以直接访问

使用特权

评论回复
地板
xionghaoyun| | 2024-12-2 09:12 | 只看该作者
汇编打扰了

使用特权

评论回复
5
pang7| | 2024-12-2 11:50 | 只看该作者
编译器的算法可以反汇编看看 我记得是比较差的 增强型的51里面汇编有乘除法指令。用汇编自己写一个会好一点。

使用特权

评论回复
6
海洋无限| | 2024-12-2 12:39 | 只看该作者
汇编现在会的人越来越少了,要40+才可能接触过吧

使用特权

评论回复
7
xch| | 2024-12-2 12:41 | 只看该作者
看看有没有这个函数 : int remquo (int x, int y , int *quo);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

395

帖子

2

粉丝