【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系
目录
无符号跳转表示法
有符号跳转表示法
无符号跳转表示法详解
有符号跳转表示法详解
无符号跳转表示法
小于
大于等于
小于等于
大于
有符号跳转表示法
小于
大于等于
小于等于
大于
无符号跳转表示法详解
我在学习这部分的最大的困惑点就是 和
并不直接相关,彼此是交错的。
当然或许有人会说,不满足“小于”条件的自然是“大于等于”。既然“小于”是,那“大于等于”就是
.然后“小于等于”时与
取“或”就好。
这样理解自然没有问题,也方便记忆。只要记住以“小于”为基点就可以推出剩下的关系式。
但问题就在于为什么是“小于”,而不是“大于”。
原因如下。
在无符号数减法“a-b”中,“CF=1”一定表示a不够减,a<b;但"CF=0"不一定表示a>b,还有可能是“a=b”。
更本质的关系可以从下面的推导中看出
a < b | CF = 1, ZF = 0 |
a > b | CF = 0, ZF = 0 |
a = b | CF = 0, ZF = 1 |
在 a < b 中,根据卡诺图的规则,合并第二列的两项,.(在卡诺图的规则中, “CF=1,OF=1" 的 “-” 项可以随意与 “1” 项合并,即表达式为 CF = 1.)
CF = 0 | CF = 1 | |
ZF = 0 | 0 | 1 |
ZF = 1 | 0 | - |
在 a > b 中,, 两边取反,即
CF = 0 | CF = 1 | |
ZF = 0 | 1 | 0 |
ZF = 1 | 0 | - |
在 a <= b 中,用卡诺图得出关系式,
CF = 0 | CF = 1 | |
ZF = 0 | 0 | 1 |
ZF = 1 | 1 | - |
在 a >= b 中,用卡诺图得出关系式,合并第一列的两项,
CF = 0 | CF = 1 | |
ZF = 0 | 1 | 0 |
ZF = 1 | 1 | - |
有符号跳转表示法详解
相比于无符号数,有符号数稍微复杂,不过差别也只在于“CF”这一项变成了"OF,SF"这两项。从最开始的关系式看出与
的功能是完全等价的。换句话说,只要我们能证明
一定表示在有符号数减法“a-b”中,a不够减即可。
观察下表
a < b |
a,b都为正,SF = 1, OF = 0, ZF = 0 a,b都为负,SF = 1, OF = 0, ZF = 0 a为负,b为正,SF = 1, OF = 0, ZF = 0(没溢出) a为负,b为正,SF = 0, OF = 1, ZF = 0(溢出) |
a > b |
a,b都为正,SF = 0, OF = 0, ZF = 0 a,b都为负,SF = 0, OF = 0, ZF = 0 a为正,b为负,SF = 1, OF = 1, ZF = 0(溢出) a为正,b为负,SF = 0, OF = 0, ZF = 0(没溢出) |
a = b | SF = 0, OF = 0, ZF = 1 |
可以看出在所有可能的9种情况中,是a<b的充要条件。因此可以用
代替无符号中的
。
【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系相关推荐
- java 死锁 内存消耗_详解Java中synchronized关键字的死锁和内存占用问题
先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并 ...
- java 拦截指定jsp_详解Struts2中对未登录jsp页面实现拦截功能
struts2中拦截器大家都很经常使用,但是拦截器只能拦截action不能拦截jsp页面.这个时候就有点尴尬了,按道理来说没登录的用户只能看login界面不能够通过输入url进行界面跳转,这显然是不合 ...
- linux中用zip压缩文件,详解Linux中zip压缩和unzip解压缩命令及使用详解
下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩myda ...
- 6.4_[Java 数组]-详解 break/continue 跳转语句
################################################## 目录 详解 break/continue 跳转语句 b/c 跳转语句对二重循环的影响 break ...
- 详解C#中的命名空间
详解C#中的命名空间 命名空间 namespace using using static 命名空间中的规则 名称范围 名称隐藏 重复的命名空间 命名空间别名 命名空间别名限定符 命名空间 C#中使用n ...
- 计算机中常用软件列表,详解win10中常用软件列表不要在任务栏显示的方法
我们在win10系统的使用中,在win10的界面中我们经常使用软件在电脑任务栏中会在电脑中显示,那很多的小伙伴在电脑中是不想要显示的遇到这个问题我们怎么取消这个常用的软件在任务栏一直显示的情况呢,今天 ...
- redis watch使用场景_详解redis中的锁以及使用场景
分布式锁 什么是分布式锁? 分布式锁是控制分布式系统之间同步访问共享资源的一种方式. 为什么要使用分布式锁? 为了保证共享资源的数据一致性. 什么场景下使用分布式锁? 数据重要且要保证一致性 ...
- 详解java中的final关键字
概述 final 简介 final关键字可用于多个场景,且在不同场景具有不同的作用.首先,final是一个非访问修饰符,仅适用于变量,方法或类.下面是使用final的不同场景: 上面这张图可以概括成: ...
- vue路由跳转写法在html,详解vue 路由跳转四种方式 (带参数)
1. router-link 1. 不带参数 //name,path都行, 建议用name // 注意:router-link中链接如果是'/'开始就是从根路由开始,如果开始不带'/',则从当前路由 ...
- 详解OpenCV中的Lucas Kanade稀疏光流单应追踪器
详解OpenCV中的Lucas Kanade稀疏光流单应追踪器 1. 效果图 2. 源码 参考 这篇博客将详细介绍OpenCV中的Lucas Kanade稀疏光流单应追踪器. 光流是由物体或相机的运动 ...
最新文章
- Cell二连发 | 广东CDC/耶鲁大学利用纳米孔测序揭示中/美新冠病毒基因组流行病学传播规律...
- dd linux 格式化u盘启动盘_linux dd命令[用于制作U盘启动盘的神奇的命令]
- python 封装_Python 面向对象三大特性之封装
- windows下安装mysql压缩包版[转]
- Java 多线程(一) 基础知识与概念
- markov chain, MRP MDP
- 教你配置支付宝应用网关和授权回调地址
- 离合器预减振超载造成变速箱怠速异响matlab与python仿真分析
- Flutter项目实战教程分享、基础使用、性能优化、每日积累
- 致命错误: 在类路径或引导类路径中找不到程序包 java.lang_如何提升店铺动态评分 需要提升可以找我...
- nginx 负载均衡+keepalived实现双机热备
- 【操作系统】对换、分页和分段方式-思维导图
- 2021 年产品沉思录精选集 PDF 下载及卷首语合集:像农夫一样耕耘和等待
- Sketch2AE插件(Sketch文件导入AE)最新破解版
- 注册CSE服务中心失败排查步骤
- 二维码:Data Matrix和QRCode
- SpringBoot整合Mybatis出现的错误:At least one base package must be specified
- WeCube开源首周感悟
- 安全狗等级保护建设服务内容有哪些?
- 在ASP.NET开发中一些单词的标准缩写
热门文章
- 一张图理解贝叶斯公式
- redis:CLUSTER cluster is down 解决方法
- setPositiveButton和setNegativeButton的区别
- 月薪11970元的网络运维工程师需要掌握哪些必备技能?
- linux逻辑卷缩减命令,linux命令:resize2fs、lvm逻辑卷lv扩展及缩减
- Kaminari的几个对象
- php猜拳,JavaScript面向对象实现猜拳游戏
- Android studio 4.0 offline mode
- Linux CentOS 大数据集群的基础配置(3) CHD分布式环境搭建
- clamwin + 拖拽查毒+右键查毒