【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系
目錄
無符號跳轉(zhuǎn)表示法
有符號跳轉(zhuǎn)表示法
無符號跳轉(zhuǎn)表示法詳解
有符號跳轉(zhuǎn)表示法詳解
無符號跳轉(zhuǎn)表示法
小于?????????????????
大于等于?????????
小于等于??????????
大于????????????????
有符號跳轉(zhuǎn)表示法
小于?????????????????
大于等于?????????
小于等于????????
大于????????????????
無符號跳轉(zhuǎn)表示法詳解
我在學(xué)習(xí)這部分的最大的困惑點(diǎn)就是??和??并不直接相關(guān),彼此是交錯(cuò)的。
當(dāng)然或許有人會說,不滿足“小于”條件的自然是“大于等于”。既然“小于”是,那“大于等于”就是.然后“小于等于”時(shí)與取“或”就好。
這樣理解自然沒有問題,也方便記憶。只要記住以“小于”為基點(diǎn)就可以推出剩下的關(guān)系式。
但問題就在于為什么是“小于”,而不是“大于”。
原因如下。
在無符號數(shù)減法“a-b”中,“CF=1”一定表示a不夠減,a<b;但"CF=0"不一定表示a>b,還有可能是“a=b”。
更本質(zhì)的關(guān)系可以從下面的推導(dǎo)中看出
| a < b | CF = 1, ZF = 0 |
| a > b | CF = 0, ZF = 0 |
| a = b | CF = 0, ZF = 1 |
在 a < b 中,根據(jù)卡諾圖的規(guī)則,合并第二列的兩項(xiàng),.(在卡諾圖的規(guī)則中,?“CF=1,OF=1" 的 “-”?項(xiàng)可以隨意與 “1” 項(xiàng)合并,即表達(dá)式為 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 中,用卡諾圖得出關(guān)系式,
| CF = 0 | CF = 1 | |
| ZF = 0 | 0 | 1 |
| ZF = 1 | 1 | - |
在 a >=?b 中,用卡諾圖得出關(guān)系式,合并第一列的兩項(xiàng),
| CF = 0 | CF = 1 | |
| ZF = 0 | 1 | 0 |
| ZF = 1 | 1 | - |
有符號跳轉(zhuǎn)表示法詳解
相比于無符號數(shù),有符號數(shù)稍微復(fù)雜,不過差別也只在于“CF”這一項(xiàng)變成了"OF,SF"這兩項(xiàng)。從最開始的關(guān)系式看出與的功能是完全等價(jià)的。換句話說,只要我們能證明一定表示在有符號數(shù)減法“a-b”中,a不夠減即可。
觀察下表
| a < b | a,b都為正,SF = 1, OF = 0, ZF = 0 a,b都為負(fù),SF = 1, OF = 0, ZF = 0 a為負(fù),b為正,SF = 1, OF = 0, ZF = 0(沒溢出) a為負(fù),b為正,SF = 0, OF = 1, ZF = 0(溢出) |
| a > b | a,b都為正,SF = 0, OF = 0, ZF = 0 a,b都為負(fù),SF = 0, OF = 0, ZF = 0 a為正,b為負(fù),SF = 1, OF = 1, ZF = 0(溢出) a為正,b為負(fù),SF = 0, OF = 0, ZF = 0(沒溢出) |
| a = b | SF = 0, OF = 0, ZF = 1 |
可以看出在所有可能的9種情況中,是a<b的充要條件。因此可以用代替無符號中的。
總結(jié)
以上是生活随笔為你收集整理的【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法谜题——三个水壶问题
- 下一篇: java信息管理系统总结_java实现科