iT邦幫忙

0

旗標功能

smit 11 月前804 瀏覽

不好意思 我想請問一下 旗標這個功能是在做什麼的
又要怎麼使用呢?
我有看一些文章 可是看不太懂

看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 11 月前 檢舉
旗標暫存器?
smit iT邦新手 5 級 ‧ 11 月前 檢舉
fillano iT邦超人 1 級 ‧ 11 月前 檢舉
什麼地方不懂?
smit iT邦新手 5 級 ‧ 11 月前 檢舉
我不知道該怎麼去使用他,我現在在實習當中,工程師提示我這個可以幫助我達成我的目標,可是完全沒有頭緒...
0
fillano
iT邦超人 1 級 ‧ 11 月前
最佳解答

先確認一下,你說的是x86架構的cpu?

先參考wiki大神

他每一個位元代表一種狀態,各自用法也不同。

例如zero flag會在計算結果是零時被設定,計算完畢之後jnz時,你不必去確認結果,他自己會去判斷結果是否為零,然後結果不為零時就jump。

(話說組語快忘光了,講的不知道有沒有錯XD)

0
WilliamHuang
iT邦大師 1 級 ‧ 11 月前

DPTR書上有寫啊
離開學生有點久了
記得是存指令的暫存器
類似堆疊
就是~~~
程式的指令丟進去後
在拿出來RUN

口<~~~
問股歌會有完整解答

smit iT邦新手 5 級 ‧ 11 月前 檢舉

喔喔 所以它是類似堆疊的功能? 一個完成之後才能觸發下一個的意思?

0
ttii
iT邦新手 5 級 ‧ 1 月前

旗標暫存器 存放了 運算指令的副產物
例如 加法指令 add eax ebx
不過就是把 eax+ebx的值存回到eax上, 結果ebx沒變, eax變成新的值了
那副產物是什麼呢?
想一想兩個值相加會不會爆掉(溢位)? eax的值最大只能放0xFFFFFFFF(ebx也是)
所以eax+ebx爆掉後, 要如何知道? 答案就在 旗標暫存器內的溢位旗標(CF)
除了溢位旗標, 還有零旗標(ZF)
因為寫程式, 經常在判斷是否為0, 所以藉由判斷ZF很好用
還有很多好用的旗標(SF,OF), 也有很雞肋的旗標如(PF,AF)
也有與運算副產物無關的旗標(DF,IF,DF)

我要發表回答

立即登入回答