除法说得简单一点就是循环做减法,等减到不能再减了,那商也就出来了,余数也就得到了。 在单片机系统中,有时候也要用到除法的,但如果没有除法指令怎么办呢? 而且单片机系统中除法和现实纯数学中的又不一样,它需要节约硬件资源又要运算速度快。 下面就介绍一种即省时又节约资源的单字节除法算法,并附上51的汇编程序: 算法思想 00001001/00000011=00000011 被除数是00001001(9) 除数是00000011(3) 商是00000011(3) 余数是00000000(0) 算法思想是: 1、将被除数高位移入Temp中(高位开始按顺序移入Temp中) 2、将Temp减去除数 3、如果小于0,则置商值低位为0 4、将商值左移1位 5、判断是否循环完成(一共循环8次) 6、没有则跳到步骤1继续执行 7、完成则存入商值和余数(Temp) 按照上面的例子执行的结果如下: 1、00000000-00000011小于0,商值为00000000 2、00000000-00000011小于0,商值为00000000 3、00000000-00000011小于0,商值为00000000 4、00000000-00000011小于0,商值为00000000 5、00000001-00000011小于0,商值为00000000 6、00000010-00000011小于0,商值为00000000 7、00000100-00000011大于0,商值为00000001,余数为00000001赋值给Temp 8、00000011-00000011等于0,商值为00000011,余数为00000000 至此算法完成 注:单字节是循环8次,如果是双字节就要循环16次,依次类推
附: 如果是00001011/00000011 ... 7. 101-11 商1 余10 8. 101(10为上一次的余数10,1为输入的1)-11 商11(商值左移1位) 余10 ... 附51单片机汇编程序 lt1 |
汇编算法之除法
最新推荐文章于 2023-08-23 09:21:33 发布
汇编算法之除法
2010-05-12 21:22