目录
无符号跳转表示法
小于
大于等于
小于等于
大于
有符号跳转表示法
小于
大于等于
小于等于
大于
无符号跳转表示法详解
我在学习这部分的最大的困惑点就是 和
并不直接相关,彼此是交错的。
当然或许有人会说,不满足“小于”条件的自然是“大于等于”。既然“小于”是,那“大于等于”就是
.然后“小于等于”时与
取“或”就好。
这样理解自然没有问题,也方便记忆。只要记住以“小于”为基点就可以推出剩下的关系式。
但问题就在于为什么是“小于”,而不是“大于”。
原因如下。
在无符号数减法“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的充要条件。因此可以用
代替无符号中的
。