找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1698|回复: 2
打印 上一主题 下一主题
收起左侧

关于单片机中CY标志位的一个疑惑

[复制链接]
跳转到指定楼层
楼主
ID:507428 发表于 2021-7-17 13:02 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CY:表示在进行运算是,有进位或借位时,则CY置1;
现在以4bit数据为例
有符号数范围:-8~7(1000~0111)
无符号数范围:0~15(0000~1111)

现我以无符号数进行减法计算
如2 - 1操作
2:0010     -1的补码:1111
那两者相加在最高位有进位,岂不是CY会置1,但实际2 - 1是没有进位的啊。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2021-7-17 17:51 | 只看该作者
CPU中的CY标记,可不管你是什么数据,正啊、负啊,统统的不管。
只要规定的操作对象(如A寄存器)的最高位(B8)。在操作中发生了进位,或借位,则CY=1,否则:CY=0。
影响CY的操作有:加、减、比较、带CY移位。但INC、DEC、DJNZ,不影响CY。
你要想彻底地了解CY,就必须通读CPU的指令系统!
回复

使用道具 举报

板凳
ID:883242 发表于 2021-7-17 18:07 | 只看该作者
首先,你做的不是减法,真正的减法2-1是不可能发生CY置1的情况。

其次,你想利用补码加法实现减法的想法也没有错误,2+(-1)=1的操作也是允许的,但指令集没有考虑过这种操作,就需要你自己开发一套运算结果处理程序,比如CY=1表示没有发生进位借位。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表