单片机运算是不是不能用加减法简便运算练习题

单片机是如何实现各种运算的
单片机是如何实现各种运算的
10-03-06 &匿名提问
单片机的运算其实只能做加减法,乘除法都是通过移位来实现的(有的单片机压根都没有这两指令),它的强项是做逻辑运算,所以说,单片机实现运算是通过内部寄存器来实现的,累加器实现加减法,利用寄存器移位来实现乘除法。但编程中几乎所有的运算都能做,这是为什么呢,其实也是靠这些基本的功能来实现的,只不过为了方便,前人把这些数学运算功能 全部写到一个库函数中去了,这样就可以很方便的调用实现数学运算了。话说回来,单片机一般应用到实时控制中,这些控制很少用到复杂的数学运算,只会是逻辑运算,所以刚好用到单片机的强项了,那么应用就广泛了。
请登录后再发表评论!孩子被绑在父亲腰间,骑摩托车400多公里跋涉回家。
得知儿子即将与她团聚,老人感动的泣不成声。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  这是计算机组成原理的问题。计算机怎么表示负数。最高位为0,表示正数,最高位为1表示负数,例如
  所以,那么数值的取值范围就是这么来的,一个字节有8位,如果是无符号数,那么就能表示 0~255 一共 256个数,但是如果是有符号数,也就是说这8位里面还需要表示一个符号,而且负号在最高位,那么数值只能是 bit0 ~ bit 7 表示,也就是说 -128 ~ 127
  计算机里面做的运算都是补码运算,有符号数还是无符号数,计算机是不管的,其实这个只是写给编译器看的,由编译器去识别。并且生成相对应的代码。
  原码,反码,补码的变换
  原码,本来的数据叫原码,反码是各位取反,补码有具体的。
  例如signed char 类型的数据 +3
  原码 0b
最高位为0,表示正数。
  反码 0b
很简单,各位取反。
  补码运算规则
  1, 如果是正数,那么补码=原码
  2, 如果是负数,那么补码=原码的反码+1
  上面例子,+3的补码为 0b
,和原码一样。
  如果换成 -3 那么情况就是
这个就是 -3 的补码,计算机就是这样表示负数的。
  于是今天研究了一下EMC的加减运算
  由于是用汇编写的,那么就压根没有所谓的有符号数和无符号数的区别。所以程序里面可以认为的认定,也就是我,我认为是他有符号,还是无符号。最麻烦的就是越界问题,数据过大溢出了。但是只需要记住一点,单片机电路是按照补码运算的,依稀的记忆中想起了当年数字电路课程里面出现的东西,不过记忆已经很模糊了。得复习一下。
  最重要的是:计算机里面都是按照补码来运算的!!这是由数字逻辑电路决定的。
  怎么和 C 进位联合起来。于是我想从几种情况分析。
  1, 加法的情况,2+3 = 5 ,只要是智力没有问题的都不会算错吧 ……
  单片机里面的情况,我们认为这个是有符号数,那么就是2个正数相加,
  这里要注意的,“我当他是有符号数”是我人为加以假设,单片机可不吃这一套,反正,只要执行 mov 指令将数据送到单片机,那么单片机就认为这是补码,他可不管你有没有符号。
  那么过程是这样:
  大脑里面人为这两个是补码,那么根据补码的运算规则,正数的补码就是原码,得到
  --------------------------
  进位 C=0 表示加法没有溢出。
  这就是单片机的运算结果了。
  单片机就是得到这个东西,这个是一个补码,因为单片机只认识补码,其他他不认识。那么然后我们将做小处理。
  如果我们大脑将他看成是无符号数,那么这里表示的是 5 ,如果我们将他看成有符号数,那么这里表示的就是 +5 (因为最高位为0,原码和补码相同)
  2, 如果两个数据比较大,相加会溢出,这怎么处理。0xff+0xff = ?
  --------------------------
  进位 C=1 表示加法运算有进位。
  那么其实这里表示的是 FF + FF =1FE ,C代表最高位,跟普通加法运算是一样的,因为计算机当成补码,他不管你什么数,他就按照补码运算。
  3, 减法运算,差是正数: 3-2 = 1
  前面加法,补码基本上没啥出场机会,但是减法就不同,减法就是补码发挥作用的时候。记以前数字电路的老师说过,数字电路只有加法器(全加器和半加器),是没有减法器的,所以计算机对待减法运算,实际上是用加法运算代替的。那么
  3-2 可以转化为 3+(-2) 这个就是加法运算了。然后考虑两个数的补码。3为正数,所以补码为原码本身,-2 为负数,补码为反码后再加1,那么加过是
  3 :0011
  -2 :1110
  那么 3-2 单片机运算的结果,实际上相当于 0011 + 1110 的结果,是
  --------------------------
  C=1表示减法没有借位,结果为 ,这是一个补码,因此这个是正数,所以原码是他本身,也即是说结果为 1 ,没有错位,也就是说 被减数大于减数。
  EMC单片机的代码是:
  mov a,@3
  mov 0x20,a
  mov a,@2
  sub 0x20,a
  0x20存放最终结果,仿真运行结果,0x20数值为 1,C=1表示没有借位,Z=0表示运算结果非零。这个跟我们分析的完全吻合。
  我们推广一下:
  既然我们说了 3-2 最终会被计算机转化为补码加法,那么我将上面的EMC单片机的代码手工做成加法,那么期待得到的结果应该是一样的。
  mov a,@3
  mov 0x20,a
  mov a,@0xfe
  add 0x20,a
  仿真运行结果,0x20数值为 1,C=1表示加法运算进位了,Z=0表示运算结果非零。这个跟上面的减法运算结果是一模一样的。这就是我们期待的结果,证明了单片机里面是补码的运算。
  4, 减法运算,差是负数,也就是说不够减,例如 2-3 = -1
  这个运算在单片机里面究竟是怎么进行的呢?其实也很简单,记住我们的信条:“单片机里面都是补码运算”那么很自然的化成 2 + (-3),求出 2 和 -3的补码并进行运算
  --------------------------
  进位位C = 0表示减法运算发生错位,结果是 0b,这就是最终结果了。
  但是这个值我们要看的懂,必须变化为原码,说过了,这是一个补码,最高位为1表示这是一个负数,所以求原码的办法,也是将补码取反再加一,也就是
  0b & 0b & 0b
  这个就是我们最终的结果,是一个负数,绝对值为1,也就是说结果为 -1
  这跟我们期待的结果是一模一样的。EMC单片机仿真代码以及结果:
  mov a,@2
  mov 0x20,a
  mov a,@3
  sub 0x20,a
  寄存器0x20的值为 0xff,进位C=0表示减法发生了错位,Z=0表示结果非零。
  这完全和我们分析的吻合。再强调,单片机里面出现的都是补码,所以这结果的 0xff 也是补码,想看懂得转化为原码。上面已经说了转化办法。
  另外,我们需要分开来看,我们上面是说将这个数字看成是“有符号数”,2-3=-1这个是我们要的结果,但是,如果我们把这个数看成是“无符号数”那又该怎么办呢?
  办法就是,借位,跟我们手工减法一样,不够减就向高位借位。
  2-3 = 0010 C 0011 这是不够减的,那么 2应该向高位借一,变成 10010 C 0011 = 1111,这里扮演高位的其实就是进位C,也就是说C=0时是发生错位的,为什么?因为这个C=1被被减数借去用了,结果为 0xff ,这个时候 0xff 就是我们想要的结果,不需要变化,因为我们不是看成有符号数。
  5, 两个数比较大小 CMP A , B
  两个数比较大小,记得以前微机原理的老师给我们说了,本质就是做减法运算,然后判断标志位。EMC单片机没有CMP比较指令,但是我们通过减法指令可以达到目的,从本质上说,那是一致的。
  因为这些逻辑判断是固定的,而且比较繁琐,容易出错,所以是建议做成宏调用,这样跟其他单片机上面的 CMP指令是一样使用的,比较方便。
  (1)A&B
  A-B &0 我们一定要强调顺序,也就是说,谁减去谁 的问题,不能搞乱。A-B操作之后PSW的标志位状态
  C=1表示没有借位,Z=0 表示结果不为0
  (2)A=B
  C=1 表示没有借位,Z=1表示结果为0
  (3)A&B
  C=0 表示借位,Z=0表示结果不为0
  那么很简单推导出另外两个常用的关系:
  (4)A &= B
  C=1 或者 Z=1,通过Z能判断是否相等。
  (5)A &= B
  明显这里是或关系C =0 或者 Z=1 都满足条件判断。
  (6)A != B
  很简单,只需要 Z=1 就能满足要求
  根据这5个关系,写成5个常用的宏,将给程序编写带来非常大的方便。具体实现代码在EMCLIB库里面/arch/generic.dt里面。
  原文链接:
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
电子工程世界(EEWorld)是一家专为中国电子工程师和电...
19507文章数
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:}

我要回帖

更多关于 单片机减法指令 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信