第二篇 溢出标志 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根本不知道参与运算的数是有符号的还是无符号的。它只是按照一定的指令、一定的规则来计算,
然后设置标志、运用标志。
第二篇 溢出标志 CF与OF相关推荐
- 【汇编】流程转移——标志寄存器(ZF—零标志、PF—奇偶标志、SF—符号标志、CF—进位标志、OF—溢出标志)、adc进位加法指令、sbb借位减法指令、cmp指令、DF标志、REP指令、std、cld
11.1 标志寄存器 8086CPU中有14个寄存器,在历来文章中已经介绍过大部分,还有一个标志寄存器,在cpu中也担任着重要的位置. 在标志寄存器中是按位来起作用的,也就是说其中每一位的0和1都有着 ...
- 进位/借位标志(CF)和溢出标志(OF)
1. 进位/借位标志CF(Carry Flog) CF变1: 1.运算结果的最高有效位向更高位进位 2.运算结果的最高有效位从更高位借位 CF对有符号数的加减法无意义 表达式判断:CF=Cout异或C ...
- FPGA通信第二篇--UDP
FPGA通信第二篇–UDP 本文通过对以太网通信中的UDP传输协议的理论学习,针对UDP实际应用中的丢包问题,提出一种人为的重发机制完成UDP稳定可靠的传输,并通过实验进行了验证. 1 以太网简介 以 ...
- Android 进阶第二篇——性能优化
Android 进阶第二篇--性能优化 一些Android书籍喜欢把性能优化放在最后的章节,简单提一提作为内容全面的点缀.在这里我将工具使用和性能优化的一些个人经验放在进阶系列博客的开始,因为我认为防 ...
- 贺利坚老师汇编课程54笔记:OF溢出标志OVERFLOW FLAG
指路老师的博客 在进行有符号数运算的时候,如果结果超出了机器所能表示的范围称为溢出 OF记录有符号数操作执行指令后 有溢出,OF = 1,OV/Overflow 无溢出,OF = 0,NV/Not O ...
- 第二篇第一章概述及第二章生产和储存物品的火灾危险性分类 重点在于表格...
2019/1/4 [录播]2018一消精华班-实务-一级消防工程师-环球网校 http://v.edu24ol.com/?type=lesson&id=178923&gid=16157 ...
- 第二篇第六章安全疏散
2019/1/4 [录播]2018一消精华班-实务-一级消防工程师-环球网校 http://v.edu24ol.com/?type=lesson&id=178939&gid=16157 ...
- 软件项目管理第二篇:项目计划 (1)——范围计划
第二篇:项目计划 第四章:软件项目范围计划--需求管理 1.软件需求: (1)定义: 是指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能. (2)包括三个层次: 业务需求 ...
- oracle向上移一行,从底向上第二篇--了解行迁移
请先移步从底向上了解DML操作http://www.itpub.net/thread-1283537-1-1.html 从底向上第一篇--了解DML操作 从底向上第二篇--了解行迁移 从底向上第三篇- ...
最新文章
- 性别从后台获取得值的那点事儿
- Matlab中与复数有关的函数abs()、angle()
- Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?
- 再读《精通css》06:背景图片
- 中国氨纶市场“十四五”规划及未来动态分析报告2021年版
- SAP UI5 Repository and MongoDB Repository
- c语言100位整数乘法,很大的数相乘怎么办?
- 惠普图形计算机游戏,惠普发布Victus by HP 16 - 一款适合PC游戏新人的游戏笔记本...
- java rmi 多ip_在rmi连接中客户端指定一个ip地址,但程序执行中却转换成另一个地址...
- shell 字符串变量比对_Linux Shell 字符串操作(长度/查找/替换)详解
- SFB 项目经验-44-别以为Hyper-V比VMware差太多(仅个人观点,不喜误喷,谢谢)
- java odbc timesten_TimesTen ODBC 链接库差异及相关命令行工具的使用注意事项
- 含本土测量软件的Q-Vision+Kvaser CAN/CAN FD/LIN总线解决方案
- b2c京东流程图_京东商城的商业模式及其运作流程(精)
- C内存分配方式与C++内存分配方式
- 15.编写LED程序及反汇编工具
- 【Designing ML Systems】第 6 章 :模型开发和离线评估
- 微信小程序开发《6 .框架之逻辑层》
- python集合和列表、安从小到大的顺序组合成一个字典_第3章 Python容器:列表、元组、字典与集合...
- 最新最全各大网站收录、搜索引擎的提交入口
热门文章
- 用记事本编写html饮品,教你用记事本写html网页简单html代码
- 如何写好科研论文的摘要
- 微博数据:如何通过西瓜微数平台使用「微博排行榜」功能?
- Webduino STEAM 教育离线版本:Web:bit 筒体版本发布,配合BPI:bit教学硬件学习STEAM图形化编程
- final, finally, finalize的区别
- Java Web环境搭建
- 专访阿里巴巴移动安全负责人陈树华:安全的最高境界是无感知
- python中socket与UDP使用与通信详解
- 2.AIM: Deep Automatic Natural Image Matting
- android开发图片自适应,android中用.9.patch的图片实现图片自适应