CF、SF、OF、ZF标志位

这篇具有很好参考价值的文章主要介绍了CF、SF、OF、ZF标志位。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

没学汇编,这种题我真是做一道错一道:-(

OF(overflow flag) 溢出标志位

溢出标志位 OF = 1 表示带符号整数运算时结果发生溢出。对于无符号整数运算,OF没有意义。
对于有符号数的溢出判断方式有:
1)采用一位符号位:思想为:'-'+'-'='+' 或 '+'+'+'='-'则为溢出,其他情况无溢出
2)采用双符号位:s1、s2表示运算结果的两个符号位
	① s1s2 = 00 表示正数,无溢出
	② s1s2 = 01 表示结果正溢出 ,即 '-'+'-'='+',且s2表示当前运算符号'-',s1表示原本正确的符号'+'
	③ s1s2 = 10 表示结果负溢出 ,即 '+'+'+'='-',且s2表示当前运算符号'+',s1表示原本正确的符号'-'
	④ s1s2 = 11 表示结果为负数,无溢出
3)采用一位符号位,根据数据位的进位情况判断溢出
	Cs 表示两数之间符号位运算的进位
	C1 表示最高数值位
	V = Cs⊕C1 ,若 V=0 表示无溢出;V=1 表示有溢出
注:最高位产生进位不一定有溢出,可参考【图三】-(3 第三问

ZF(zero flag) 零标志位

ZF = 1表示结果为0,无论是有符号数还是无符号数,ZF都有意义

CF(carry flag) 进/借位标志位

表示无符号整数数加/减运算时的进位/借位。
	含义:
		加法时,CF = 1表示无符号数加法溢出。
		减法时,CF = 1表示有借位,即不够减。
	计算:(ALU运算逻辑)
		加法时:SUB = 0
		减法时:SUB = 1
		CF = 最高位进位 ⊕ SUB
		--可参考【图二】中右边四个运算式子 或【图四】
对于有有符号数的整数运算没有意义
	但是真要看的话,CF=最高位进位输出,具体见下方题型归纳。
		--可参考【图三】(2)、(3)问

注:
1)数据存放在内存或CPU寄存器中都统一使用有符号数的补码。
2)ALU中运算无视有无符号,统一使用一套逻辑,只会根据输入信号进行逻辑运算
若为加法: [x]补+[y]补
若为减法: [x]补-[y]补 = [x]补+[y]求补
3) 一个数的补码与对一个数求补的区别:
补码是对于有符号数而言的
求法:对除符号位外全部取反,末尾+1
如: -5 原码 = 1101 ->除符号位取反:1010 ->末尾+1->1011=-5的补码( 红色为符号位)
求补则无视符号位,这就对于了上面说的:“ALU无视有无符号,统一使用一套逻辑”
求法:全部位数取反,末尾+1;见【图二】ALU电路图
如: 对 -5 求补 :-5 原码=1101->全部位取反:0010->末尾+1->0011
注:正数补码=原码,但 无论正负都可以求补。

SF(symbol flag) 符号标志位

结果为负,即符号位为1时SF=1,否则为0.
注意:当产生溢出时,说明符号标志位置出错,可参看OF-2)-②与③

以上来自王道课本

放两张wd上的相关视频截图吧

标志位cf,sf.of,zf,计算机组成原理,后端,数据结构,操作系统

【图一】
标志位cf,sf.of,zf,计算机组成原理,后端,数据结构,操作系统

1)“由加法器的原理图,加法器的方式控制MUX用于控制加减法,如上图,当M=1时进行S=A+B操作,当M=0时进行S=A-B操作。当M=0(减法)时,各个异或门对B的各位进行求反,并将1作为初始进位加入结果,也就是执行对B的求反加1,即求补操作。” 也就是说!B是有符号数时,无论符号位是0还是1,只要M=0, 就统统对B执行求补操作。
2)CPU只会根据输入信号进行逻辑运算,在硬件级别是没有有符号无符号的概念,运算结束会根据运算前的信号和输出信号来设置一些标志位,是不是有符号由写程序的人决定,标志位要看你把操作数当有符号还是无符号来选择。
大多数计算机内部的有符号整数都是用补码,就是说无论正负,这个计算机内部只用补码来 编码。
以上摘自有符号数的加减法 和无符号数的加减法,和,系统是如何识别有符号数和无符号数的

【图二】


本文着重研究CF标志位

题型总结

虽说总结,但是王道上相关的题目也就两道:-(
待我见识多几道题目再更好完善,如果有大佬能点拨一二更好

其一,题目显示给出这为有符号数

上面提到,机器是无法分辨现在正在执行的是有符号还是无符号数的运算,有无符合是程序给的定义,这也因此让一些标志位变得有意义:如CF。
既然题目人为的定义为了负数,那么我们就可以人为的“将减法转换为加法指令”(当然,如果如果要求的是加法那就不用管了),再然后由于是求CF位,那么我们需要将其视为无符号数,进行相加。
总结就是:使用补码规则将减法转化为加法,判断逻辑为无符号数的加法(具体见上面)。

标志位cf,sf.of,zf,计算机组成原理,后端,数据结构,操作系统
【图三】

其二:数值以位串形式存放在寄存器中

寄存器中的数值运算是用ALU进行的。上面提到,ALU无视有无符号数统一使用一套逻辑,再结合开头提到的 注2) 以及无符号数的运算逻辑,即可得计算方法:

若为加法:[X]+[Y] 直接运算,
CF=最高位进位⊕0
若为减法:[X]-[Y] 对[Y]求补,后有:[X]-[Y]=[X]+[Y]求补
CF=上式最高位进位⊕1
标志位cf,sf.of,zf,计算机组成原理,后端,数据结构,操作系统

【图四】

一张放错位置的图:
标志位cf,sf.of,zf,计算机组成原理,后端,数据结构,操作系统文章来源地址https://www.toymoban.com/news/detail-540310.html

到了这里,关于CF、SF、OF、ZF标志位的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用

    对 $ZF(-4,1) 的调用将标注库 inputlibrary.dll 和 outputlibrary.dll 加载到虚拟内存中,并为其返回系统定义的库 ID 。 对 $ZF(-4,3) 的调用使用库 ID 和函数名称来获取库函数的 ID 。返回的函数 ID 实际上是 ZFEntry 表序列号(请参阅上一章中的“创建 ZFEntry 表”)。 第一个循环使用 $ZF(-5

    2024年01月16日
    浏览(45)
  • 基于瑞丽多径信道的无线通信信道均衡算法matlab仿真,对比MMSE,ZF-DFE,MMSE-DFE

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 matlab2022a仿真结果如下:         信道均衡(Channel equalization)是指为了提高衰落信道中的通信系统的传输性能而采取的一种抗衰落措施。它主要是为了消除或者是减弱宽带通信时的多径时延带

    2024年02月05日
    浏览(44)
  • 【MATLAB源码-第36期】matlab基于BD,SVD,ZF,MMSE,MF,SLNR预编码的MIMO系统误码率分析。

    1. MIMO (多输入多输出):这是一个无线通信系统中使用的技术,其中有多个发送和接收天线。通过同时发送和接收多个数据流,MIMO可以增加数据速率和系统容量,同时提高信号的可靠性。 2. BD (块对角化):这是一种MIMO预编码策略,用于消除多用户干扰。它的目标是使每个用户

    2024年04月15日
    浏览(36)
  • 编译 FastDFS 时报错 fatal error: sf/sf_global.h: No such file or directory 解决办法

    编译 FastDFS 时,报错如下 原因: 需要先编译和安装 libserverframe,新引入的网络框架库,下载地址:https://github.com/happyfish100 编译安装完后即可正常编译安装 FastDFS

    2024年02月21日
    浏览(45)
  • Cadence仿真报错:【SF-23】解决方法

    cadence仿真时,偶尔会遇到报错信息 SF-23 。 这里一般有以下几种解决方法: 1. 在ams中,未添加有效的view / lib 需要在蓝色框内添加有效的库文件,使得红色框内没有报错信息 2. 器件命名错误 调用器件时,编辑器件特性时 Model name必须和调用的仿真库中的名字一致 3. 跑完后仿

    2024年02月11日
    浏览(46)
  • 传奇SF刷元宝之迷失版本刷叠加材料

    传奇迷失版本刷材料漏洞教学 迷失版本 其他单职业部分版本也可尝试使用,大多都出在迷失版本 漏洞条件 刷的材料要有叠加显示效果、 游戏中 要有 “全身特修” 功能 NPC 漏洞原理 GOM引擎中 物品叠加的显示数 就是和 装备的 持久数变量相同的! 所以当我们特修全

    2024年02月11日
    浏览(50)
  • Android下SF合成流程重学习之onMessageInvalidate

    虽然看了很多关于Android Graphics图形栈的文章和博客,但是都没有形成自己的知识点。每次学习了,仅仅是学习了而已,没有形成自己的知识体系,这次趁着有时间,这次必须把这个事情干透彻了! 本篇引用的代码,主要是Android R的。 并且Android下Graphics图形栈牵涉的点,太多

    2024年02月19日
    浏览(35)
  • caused by: net.sf.jsqlparser.parser.parseexception

    net.sf.jsqlparser.parser.ParseException: Encountered unexpected token 错误通常表示 SQLParser 在解析 SQL 语句时遇到了一个意外的标记。这通常是由以下原因导致的: SQL 语法错误:SQLParser 遵循标准的 SQL 语法规则,如果您的 SQL 语句存在语法错误,例如拼写错误、缺少、不正确的标点符

    2024年02月07日
    浏览(56)
  • SF授权系统源码 V3.7全开源无加密版本

    🎉 有需要的朋友记得关+赞+评,文章底部来交流!!! 🎉 ✨ 源码介绍 2023全新SF授权系统源码 V3.7全开源无加密版本。网站搭建很简单,大致看来一下应该域名解析后上传源码解压,访问域名/install就能直接安装。 程序功能简介: 1.盗版入库(26种) 2.快捷登录 3.采用layuiadmin框

    2024年02月09日
    浏览(32)
  • Android下SF合成流程重学习之Refresh流程

    在前面初步分析完成了Android下SF合成流程重学习之Invalidate流程,我们接下来继续下面的分析。当有事务的更新或者有Buffer的更新便会触发后面刷新的流程,即Refresh流程! 前面主要搜集需要送显的layer的情况,封装成compositionengine::CompositionRefreshArgs参数传递给CompositionEngine做进一

    2024年02月19日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包