多字节二进制除法

被除数为3 个字节,在0x20、0x21、0x22 单元中,0x22.7 为最高位,0x20.0 为最低位。

除数为2 个字节,在0x30、0x31 中。

算法:EM78 单片机 没有除法指令,而且本例中除法为多字节除法,可采用如下算法。

将被除数扩充一个字节0X23,0X23 清0。被除数左移1 位,0X23、0X22 中数据减去0X31、0X30 中数据,够

减则减且0X20.0 置1,减出结果存入0X23、0X22;不够减则0X23、0X22 保持不变,0X20.0 清0。然后被除数

再左移1 位,重复上述过程。共循环16 次,最后0X23、0X22 中得相减余数,0X21、0X20 中得商。注意,若

被除数左移后C 标志为1,则不比较0X23、0X22 与0X31、0X30 数据大小关系而直接相减。

main: MOV a,@0x55 ;被除数赋值

MOV 0x20,a

MOV 0x21,a

MOV 0x22,a

MOV a,@0x0 ;被除数扩充1 字节并清0

MOV 0x23,a

MOV a,@0x12 ;除数赋值

MOV 0x30,a

MOV 0x31,a

MOV a,@0x10 ;循环次数为16

MOV 0x32,a

again: call rt_sub ;调移位除法子程

djz 0x32 ;16 次循环完成则结束

jmp again ;未完成则继续

self: jmp self

rt_sub:

bc 0x03,0 ;c 标志清0

rlc 0x20 ;被除数左移1 位

rlc 0x21

rlc 0x22

rlc 0x23

jbc 0x03,0

jmp rt3 ;c标志为1 则直接相减

MOV a,0x23 ;c 标志为0 则先比较大小

MOV 0x25,a

MOV a,0x22

MOV 0x24,a

MOV a,0x31 ;先比较高位

sub 0x25,a

jbc 0x03,2

jmp rt1 ;高位相等跳rt1 比较低位

jmp rt2 ;高位不等跳rt2

rt1: MOV a,0x30 ;比较低位

sub 0x24,a

jbc 0x03,2

jmp rt3 ;低位也相等则跳rt3,相减,上1

rt2: jbs 0x03,0

ret ;减数大则返回,减数小则相减,上1

rt3: bs 0x20,0 ;上1

call sub_2b ;调2 字节减法子程

ret

sub_2b:

MOV a,0x31 ;高字节相减

sub 0x23,a

MOV a,0x30 ;低字节相减

sub 0x22,a

jbc 0x03,2

ret ;低字节相等,无借位,返回

jbc 0x03,0

ret ;无借位,返回

dec 0x23 ;低字节相减有借位,高字节结果减1

ret

eop

义隆循环左移c语言,二进制除法运算(义隆单片机)相关推荐

  1. 单片机c语言快速除法运算,单片机开发厂家之单片机C语言快速精度除法方案

    资源描述: 单片机C语言快速精度除法方案 目前的51单片机在进行带小数点结果的除法一般可以采用浮点数计算的方式,但是浮点数计算有一个缺点就是非常耗时,在对时间要求严格的工况就不太适用. 笔者最近做了个 ...

  2. 2.4 二进制除法运算(原码一位除恢复余数法)

    2.4.1 恢复余数法 两个原码数X和Y相除,其商Q的符号为相除两数符号的异或值,余数R与被除数同符号. 基本原理 参与运算的两数通过"异或"原则确定商的符号,再利用其绝对值相除获 ...

  3. 2.4 二进制除法运算(加减交替法)

    2.4.2 加减交替法 加减交替法与恢复余数法的区别在于当上商0后的处理办法. 步骤: ①第一步,被除数+[-Y]补 ②若和为正,上商1,左移1位后-Y ③若和为负,上商0,左移1位后+Y ④重复上述 ...

  4. C语言的除法运算:整除/和求余%

    5/2=2 5%2=1 求余%:可将任意数处理到某一整数范围内,e.g.:获得100以内的任意数 srand(time(0)): rand()%100:

  5. 二进制除法移位相减_二进制除法计算器

    二进制除法怎么算(共2篇)二进制的运算法则1 2 微型计算机运算基础1 2 1 二进制数的运算方法电子计算机具有强大的运算能力,它可以进行两种运算:算术运算和逻辑运算.1.二进制数的算术运算二进制数的 ...

  6. CRC循环冗余校验引起的二进制除法如何计算风暴

    文章目录 知道两个概念 模2和 模2减 两种不同的二进制除法 除法 模2除法 CRC 循环冗余校验 编码过程 差错检测能力 谈CRC循环冗余校验的之前,先把二进制除法说一下,先回忆一下十进制之间的除法 ...

  7. C语言中的移位运算乘法,C语言中 移位操作运算

    移位规律: 左移时总是移位和补零.右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位后补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移.(其实跟扩展逻辑一样 ...

  8. Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)

    Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...

  9. 一维数组反转c语言_C语言实现数组的循环左移,右移,翻转的示例

    数组结合指针可以实现很多有趣的功能,比如下面这个程序: 假设数组为 : 12345 如果左移一次即为:23451 ,依次类推 如果右移一次即为:51234 ,依次类推 翻转则为:54321 我们来实现 ...

  10. c语言for循环除法运算,C语言入门这一篇就够了

    c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

最新文章

  1. 微博环境下利用综合策略构建推荐引擎
  2. 微信开发学习日记(二):3个案例
  3. bzoj3143: [Hnoi2013]游走
  4. linux访问网站出现443,Linux访问网站一直出现超时
  5. Java 集合类说明及区别
  6. List<?> list= new ArrayList<?>接口引用指向实现类的对象.
  7. 动态数据的国际化、几种主要的国际化标签
  8. 规定计算机系统实现安全等级保护,计算机信息系统安全等级保护标准体系包括:信息系统安全保.DOC...
  9. 为什么root下不能使用passwd命令_Linux:CentOS 7中常用的基础命令
  10. 3D元素周期表源码(已加注释)及分析
  11. 计算机里的二进制什么意思,二进制是什么,为什么计算机要使用二进制?
  12. 做SEO优化应该掌握哪些基础知识
  13. 关于 人工智能的理解
  14. 2022浙江大学计算机考研超强攻略
  15. redis中的increment()方法遇到的问题记录
  16. LeetCode - 500 - 键盘行(keyboard-row)
  17. 小程序真机调试出现:request:fail 未能连接到服务器。解决办法
  18. 听肖邦Chopin: Waltz No.19 in A minor, Op.Posth的美好
  19. 如何使用ubuntu编译stm32程序
  20. 在线html 快速拨号,鸿言快速拨号——替代浏览器自带的快速拨号

热门文章

  1. 英文名称:DSPE-PEG10-Mal的试剂分子式是C68H127N2O21P
  2. 2021 年 15 款适用于 PC 和 Mac 的最佳 Android 模拟器
  3. 手机端android app崩溃的常见类型
  4. 利用Vue制作一个简单的走马灯
  5. 计算机硬盘替换,如何更换笔记本电脑硬盘?
  6. 高德地图---Poi搜索遇到的坑
  7. Android加速度传感器测位移,一种校核加速度传感器测位移的方法与流程
  8. R语言使用sort函数对日期向量数据进行排序、默认从小到大升序排序、设置decreasing参数为真进行降序排序
  9. 反正不要钱,多少看一点系列:win10环境下安装Kali Linux双系统的装机经历(个人血泪史)
  10. 基于STM32使用TTP223点动触摸传感器模块