在學習的時候發現標誌位很容易搞的很亂,簡直難受,特記下來這其中的注意事項
所有標誌位的注意點:
1、所有的標誌位只有在運算的時候才會發生改變,即mov push pop等移動指令都不影響標誌位
2、所有標誌位的改變都是根據運算的位數來計算的,使用8位暫存器時只看8位暫存器結果,使用16位暫存器時只看16位暫存器結果
cf carry flag 進製標誌符,這個是最簡單的:
1、cf是進行無符號數運算,即00h add 80h會被當作 0+128
2、cf只要在運算時發生進製,即ff加到00或者 00減到ff都會使cf為1
3、cf為1時顯示為cy(carry yes)為0時顯示為nc(not carry)
sf sign flag 符合標誌符
1、符號標誌符把運算結果作符號數運算,把7fh看作 127 把 80h看作 -128
2、sf只要二進位制的首位為1,則為1,首位為0則為0
3、sf為1時顯示為ng(negative),為0時顯示為pl(postive)
zf zero flag標誌位
1、zf不分是符號數還是無符號數
2、zf只要計算結果為0,就為1
3、zf為1時顯示為zr(zero),為0時顯示為nz(not zero)
pf parity flag 奇偶標誌位
1、pf並不是計算數學意義上的奇偶性,如08h並不能看作是偶數
2、pf是計算二進位制中1的個數的奇偶性,如08h的二進位制為 0000 1000b,1的個數為1,所以為奇數,pf為0
3、pf為1時(偶數)顯示為pe(parity even),pf為0時(奇數)顯示為po(parity odd)
of overflow flag 溢位標誌位 (尤其注意)
1、of判斷的是符號數的計算,注意 80h add 80h時並不是從80h加到0而是 -127 - 127 結果溢位
2、of只要從正數加到負數,或者是負數減到正數時就為1,其餘結果為0
3、of為1時顯示為ov(overflow),of為0時,顯示為nv(not overflow)
彙編指令對標誌位的影響
mov lea xchg push pop in out 傳送類指令不影響標誌位 add adc sub sbb cmp 加減法指令影響全部標誌位 inc dec 增一減一指令不影響cf neg 求補指令影響除cf外的5個標誌位,對cf位置1 mul imul 乘法指令只影響of位和cf位,對其他位...
8086彙編中的條件碼,控制標誌位
看雪論壇 條件碼 of overflow flag 溢位標誌。溢位時為1,否則置0。sf sign flag 符號標誌。結果為負時置1,否則置0.zf zero flag 零標誌,運算結果為0時zf位置1,否則置0.cf carry flag 進製標誌,進製時置1,否則置0.af auxiliary...
關於內聯彙編的幾個技巧
關於內聯彙編的幾個技巧 有時我們的程式需要一些很高的執行效率或者執行系統底層的功能模組,這些關鍵的部分我們可以採用內聯彙編直接插入彙編指令來達到我們的要求,以下是幾個技巧與大家共同 在vc中內聯彙編非常方便,只需要按照如下格式 asm 請看如下示例 void calcmemdlg onbutton3...