第二篇 溢出标志 CF与OF

x86架构下 CF与OF标志位 & 带符号和无符号运算 详解 针对能够影响OF和CF标志位的指令,一般来说是涉及到数据运算的指令,这里使用add举例,即不区分有无符号的加法指令,参与运算的数据,从二进制层级去考虑。 CF标志位 对于CF,它是carry flag,进位标志,这个进位,表示的是二进制层次下的进位,例如: mov al,98h add al,al 它的运算是 其中,得到的最高一位,会被丢弃,这个也就是进位了! 模拟一下: 这个进位还是很简单的! 如何实现add指令进位时,CF的变化 这个简单,我们只需要记录一下add的结果的假想最高位即可,也就是真正 阅读详情
AI摘要

本文详细解释了汇编语言中的CF与OF溢出标志的区别及应用,通过实例对比了有符号数与无符号数的计算过程,并介绍了这两种标志的判断方法。

在汇编学习中,个人感觉CF与OF这两个溢出标志还是有点难理解的。笔者也还是一知半解,若有错误之处,

请指正!

 

一、学习CF与OF,要始终牢记一点。CF是无符号数溢出标志,OF是有符号数溢出标志。

通俗一点说就是,即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1,

则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=1/0,都不会影响。同理也

可以得出OF对无符号数也无影响。

举个例子:

[9-6]补=[9]补-[6]补=[9]补+[-6]补

[9]补-[6]补

                00001001

            -   00000110

            ——————

                 00000011

            此时,OF=0,CF=0

 

[9]补+[-6]补

              00001001

          +  11111010

           ——————

           1  00000011

           此时,OF=0,CF=1

大家可能已经发现了,通过公式将减法转换成加法,貌似不完全等价,因为CF不同。

其实不然,CF的值不影响结果,此时不论是加法还是减法都是有符号数。不论CF=1/0,只要OF=0,

结果都是正确的。当然,还有一点值得注意。毕竟CF在两种计算方法中取值不同,如果有条件跳转

指令的话,程序的执行可能会受到影响。

 

二、简单介绍下CF与OF的计算方法

1、CF的判断

①加法

十进制角度,如果两无符号数相加,结果大于2^n-1(n为位数),则CF=1,否则CF=0;

二进制角度,如果两无符号数相加,最高位向前有进位,则CF=1,否则CF=0。

②减法

十进制角度,如果两无符号数相减,减数大于被减数(也即结果不在0—2^n-1内),则CF=1,否则CF=0;

二进制角度,如果两无符号数相减,最高位向前游借位,则CF=1,否则CF=0。

2、OF的判断

①加法

十进制角度,如果两有符号数相加,结果不在-2^(n-1)~2^(n-1)-1内,则OF=1,否则OF=0;

二进制角度,如果两有符号数同号,而相加结果与之异号,则OF=1,否则OF=0。

②减法

十进制角度,如果有符号数相减结果在-2^(n-1)~2^(n-1)-1内,则OF=1,否则OF=0;

二进制角度,如果两个数异号,而相减结果与被减数符号相反,则OF=1,否则OF=0。

 

三、这里值得一提的是,在第二部分介绍的计算规则,说白了都是为了方便人的计算。而在计算机中,

CPU根本不知道参与运算的数是有符号的还是无符号的。它只是按照一定的指令、一定的规则来计算,

然后设置标志、运用标志。

 

 

 

 

 

【汇编语言】标志寄存器(一) —— 标志寄存器中的标志位:ZF、PF、SF、CF、OF 一网打尽 本文主要介绍了8086CPU中flag寄存器中的一些标志位以及它们的功能。 阅读详情

相关推荐

【汇编语言】状态标志符(CF/OF/SF/ZF)在运算(ADD/SUB/ADC/SBB)过程中的响应变化

目录各类运算时状态标志的响应变化标志符在各种`ADD`运算下的响应情况标志符在各种`SUB`运算下的响应情况借助标志符实现多位数之间运算`ADC`(add with carry)带进位加法指令`SBB`(subtract with borrow)带借位减法指令 各类运算时状态标志的响应变化 标志符 具体含义 CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。 OF(Overflow F

tzs1328540878的博客 1万+

[计算机组成原理]溢出OF和进位CF标志位的判定

OF = 最高位的进位(符号位) ⊕ 次高位的进位(数值位最高位)【OF = Cn ⊕ Cn-1 = Cout ⊕ Cn-1】CF = 最高位的进位 ⊕ 控制信号op(加0减1)【CF = Cout ⊕ Cin = Cn ⊕ C0】

小源同学的博客 1万+

5.2.4_标志位的生成

计算机组成原理之标志位的生成

人生得意须尽欢 7613

溢出OF和进位CF标志位的判定

CF和OF:机器无法区分有符号和无符号,CF和OF有不同的表达式 我们如何人为判断两个二进制字符串的CF,OF呢? 方法一:根据表达式OF=Cn异或Cn-1 Cn表示第n位的进位 CF=Cout异或Cin Cin等价于Sub的选择控制,为1时表示做减法 加法时,CF为1表示有进位;减法时,CF取反为1表示有借位方法二:人为相加判定CF时,把两者当成无符号数,看是否进位 判定OF

lizong666的专栏 3万+

保姆级教程:用STM32单片机实现国标交流充电桩的CP信号检测(附完整代码)

本文详细介绍了基于STM32单片机实现国标交流充电桩CP信号检测的全流程,包括硬件设计、软件架构和充电控制实现。通过分压电路设计、ADC配置和状态机逻辑,确保充电过程的安全与可靠性,适用于新能源汽车充电桩开发。附完整代码和调试技巧,助力开发者快速掌握关键技术。

weixin_42641998的博客 252

智能家居DIY:用51单片机实现三合一环境监测(温湿度+烟雾+自动灭火)

本文详细介绍了如何利用STC89C52单片机打造智能家居三合一环境监测系统,集成温湿度检测、烟雾报警和自动灭火功能。从硬件选型、电路设计到软件编程,提供完整的DIY方案,帮助读者构建高性价比的家庭安全防护系统,特别适合智能家居爱好者和电子DIY初学者。

yhn4567890的博客 692

汇编--溢出标志 CF与OF

在汇编学习中,个人感觉CF与OF这两个溢出标志还是有点难理解的。笔者也还是一知半解,若有错误之处, 请指正! 一、学习CF与OF,要始终牢记一点。CF是无符号数溢出标志,OF是有符号数溢出标志。 通俗一点说就是,即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1, 则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=...

weixin_30647065的博客 380

windows10下 iperf3测试带宽

客户端输入:"iperf3.exe -u -c 服务器IP地址 -b 5g" //客户端给服务器发送udp数据包,最大带宽为5g。客户端输入:“iperf3.exe -c 服务器IP地址 -P 10“//表示客户端10路并行给服务器发送TCP包;上图可知:带宽是15Gbps(这里不知道为什么下面测试的UDP会比这里TCP慢 按道理UDP不可能比TCP慢的5.)3. 验证是否下载成功,在打开的窗口中输入“iperf3.exe -v”,会出现安装的版本,表示安装成功了。5. iperf3参数。

xiaoqixiaoguai的博客 5895

关于标志信息ZF、OF、SF、CF的理解

带标志加法器结构 零标志ZF 零标志是根据每一位加法器的计算结果FiF_iFi​相或得到的,所以只有在结果的每一位都为0的时候所有位相或才能得到0的输出,但是或门上有取反符号,所以在ZF标志的输出为1时代表结果全零,反之不全为0. 溢出标志OF 注意OF是判断带符号数是否溢出的,对于无符号数OF不能用作溢出的判断,因为如果两个高位为0的数相加,得到的结果高位为1,明显对于无符号数这种情况是可以......

weixin_41515197的博客 6万+

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

《Kubernetes部署篇:基于x86_64+aarch64架构CPU+containerd一键离线部署容器版K8S1.33.3高可用集群》

东城绝神 1369

抖音创作者必备工具!免费一键批量下载无水印视频 + 一键提取抖音视频文案

抖音创作者必备工具!免费一键批量下载无水印视频 + 一键提取抖音视频文案

XiaoqiangClub的博客 3367

OF CF 标志位的判定

OF:最高位进位⊕次高位进位(对带符号数才有意义) 最高位进位:进位出去(溢出去)\color {green}{最高位进位:进位出去(溢出去)}最高位进位:进位出去(溢出去) 次高位进位:进位到最高位(对带符号数来说即符号位)\color {green}{次高位进位:进位到最高位(对带符号数来说即符号位)}次高位进位:进位到最高位(对带符号数来说即符号位) CF: sub⊕C(⊕为异或,CF对无符...

藏经阁 2万+

SpringBoot实战教程-springboot概论

Spring Boot 是一个快速开发框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,以及自动配置。内置web容器,帮助开发者能够实现快速开发,简化了应用系统的初始搭建以及开发过程。

鸟哥哥的专栏 4157

进位标志和溢出标志的含义和理解

进位标志和溢出标志 这次大概总结一下进位标志(Carry Flag, CF)和溢出标志(Overflow Flag, OF)的含义和理解方式 首先明确一点基本认识,处理器本身并不在意也不知道参与算术运算或者逻辑运算的操作数是有符号的还是无符号的。ALU总是为给定的操作数做二进制运算,并根据结果设置相应的标志位。 因此,视参与运算的整数的实际情况,CF或者OF会被独立的置位或者清零。他们的含义是有程...

cmiao-me 2万+

2023华为od机试C卷【启动多任务排序】C++ 实现

一个应用启动时,会有多个初始化任务需要执行,并且任务之间有依赖关系,例如A任务依赖B任务,那么必须在B任务执行完成之后,才能开始执行A任务。现在给出多条任务依赖关系的规则,请输入任务的顺序执行序列,规则采用贪婪策略,即一个任务如果没有依赖的任务,则立刻开始执行,如果同时有多个任务要执行,则根据任务名称字母顺序排序。

MISAYAONE的博客 888

七天征服AutoSAR/SomeIP_01速成配置并代码生成

本文为AutoSAR中SomeIP配置开发的实操指南摘要,重点介绍通过通信矩阵快速构建SomeIP工程的方法。核心内容包括:1)基于Excel通信矩阵生成系统描述文件(arxml);2)在AutoSAR工具中导入文件自动生成协议栈配置,涵盖ETHIF、SoAd等模块;3)关键报错处理(COM/PDUR/SOAD/SD模块的配置修正);4)SomeIPXF的数据编解码配置;5)SWC组件与RTE任务映射。教程强调"先完成再完美"的实践原则,指导开发者快速生成基础代码框架,为后续协议调试奠定

大叔带刺的博客 307

进位/借位标志CF和溢出标志OF

溢出概念与判别方法 什么是溢出? 溢出是指运算结果超过了数的表示范围。通常,称大于机器所能表示的最大正数为上溢,小于机器所能表示的最小负数为下溢。 计算机使用固定长度的机器数来表示数的,其所能表示的范围是有限的。运算结果超过了这个范围就溢出了。 什么情况下会溢出? 两正数相加(或正数减负数)可能产生上溢;两负数相加(或负数减正数)可能产生下溢。 补码定点数加/减运算溢出判断 补码减法...

yqajsj的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

溢出OF和进/借位CF标志位的判定

CF是无符号数溢出标志,OF是有符号数溢出标志。 通俗一点说就是,即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1, 则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=1/0,都不会影响。同理也 可以得出OF对无符号数也无影响。 方法一:根据表达式 OF=Cn异或Cn-1 Cn表示第n位的进位 CF=Cout异或Cin Cin等价于Sub的选择控制,为1时表示做减法 加法时,CF为1表示有进位;减法时,CF取反为1表示有借位 方法二:人

青春苦瓜 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

标志位寄存器与CF、OF标志位的区分

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.youkuaiyun.com/Apollon_krj/article/details/71239549 8086CPU的flag寄存器(16位)各标志位如下(这是32位EFLAG的低十六位图,但是32位与16位是一样的,只不过32位多了16位且高16位没有使用到): 标志位寄存器中保存的是当前指令运算的信息状态,比如进位...

zhangji 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

CF、SF、OF、ZF标志位

OF(overflow flag) 溢出标志位 溢出标志位 OF = 1 表示带符号整数运算时结果发生溢出。对于无符号整数运算,OF没有意义。 对于有符号数的溢出判断方式有: 1)采用一位符号位:思想为:'-'+'-'='+' 或 '+'+'+'='+'则为溢出,其他情况无溢出 2)采用双符号位:s1、s2表示运算结果的两个符号位 ① s1s2 = 00 表示正数,无溢出 ② s1s2 = 01 表示结果正溢出 ,即 '-'+'-'='+',且s2表示当前运算符号'-',s1表示原本正确的符号'+'

weixin_45609535的博客 3万+

微机原理--指令系统--判断状态标志位!尤其是OF和CF!!

如何判断状态标志位??OF和CF到底怎么计算???? 之前,一直被OF和CF这对神仙眷侣搞得云里雾里,总之三个字:看不懂!!! 不过不会也是要整滴~不然越拖越多,今天偶然发现其中的奥秘,不过也可能是以前看书不太仔细吧!哈哈!正文开始: 先给出一个例题 MOV AL , 7EH ADD AL , 5BH 执行完这两条指令后,状态标志位的状态分别为?? 接下来,傻瓜式教学,仔细看一定会: 7EH=0111 1110B 5BH=0101 1011B 两者相加得D9H=1101 1001B 八位数加八位数得到一

YuyaoMINE的博客 1万+

标志寄存器CF,OF,SF,ZF,PF以及相关练习

CF(进位标识):进位标志位。在无符号运算时,记录了运算结果的最高有效位向更高位的进位值或从更高位借位,产生进位或借位时CF=1,否则CF=0; PF(奇偶标识):奇偶标志位。相关指令执行后结果所有bit中1的个数为偶数,那么PF=1,1的个数为奇数则PF=0; ZF(零标识):零标志位。相关指令执行后结果为0那么ZF=1,结果不为0则ZF=0; SF(符号标识):符号标志位。相关指令执行后结果为负那么SF=1,结果非负数则SF=0; OF(溢出标识):溢出标志位。记录了有符号运算的结果是否发生了溢出,如果

qq_43751200的博客 1万+

标志位加法器中四个标志位OF,SF,ZF,CF的判断

在计算机组成原理学习标志位加法器时对OF为什么是Cn异或Cn-1有疑问,解决后记录一下。

m0_75008697的博客 5178

【知识堂】CPU 标志位详解:CF、SF、ZF、OF 及其他重要标志

在计算机系统中,CPU 在执行算术运算和逻辑运算时,会根据运算结果设置一些状态标志(Flags),这些标志存储在 EFLAGS 寄存器中。标志位在程序控制、调试和异常处理中起着至关重要的作用。本文将详细介绍四个常见的标志位(CF、SF、ZF、OF),并补充其他重要标志的作用和使用场景。

IT古董 5898
上一篇: 第一篇 搭建开发环境
下一篇: 第三篇 子程序调用与返回的一点小问题
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值