先確認一下,你說的是x86架構的cpu?
他每一個位元代表一種狀態,各自用法也不同。
例如zero flag會在計算結果是零時被設定,計算完畢之後jnz時,你不必去確認結果,他自己會去判斷結果是否為零,然後結果不為零時就jump。
(話說組語快忘光了,講的不知道有沒有錯XD)
旗標暫存器 存放了 運算指令的副產物
例如 加法指令 add eax ebx
不過就是把 eax+ebx的值存回到eax上, 結果ebx沒變, eax變成新的值了
那副產物是什麼呢?
想一想兩個值相加會不會爆掉(溢位)? eax的值最大只能放0xFFFFFFFF(ebx也是)
所以eax+ebx爆掉後, 要如何知道? 答案就在 旗標暫存器內的溢位旗標(CF)
除了溢位旗標, 還有零旗標(ZF)
因為寫程式, 經常在判斷是否為0, 所以藉由判斷ZF很好用
還有很多好用的旗標(SF,OF), 也有很雞肋的旗標如(PF,AF)
也有與運算副產物無關的旗標(DF,IF,DF)