彙編語言標誌位 含義 NV UP EI NG NZ AC PE CY

clip_image001縮寫原意: app

Overflow of = OV NV [No Overflow] jsp

Direction df = DN (decrement) UP (increment) post

Interrupt if = EI (enabled) DI (disabled) spa

Sign sf = NG (negative) PL (positive) .net

Zero zf = ZR [zero] NZ [ Not zero] 指針

Auxiliary Carry af = AC NA [ No AC ] 調試

Parity pf = PE (even) PO (odd) orm

Carry cf = CY [Carry] NC [ No Carry] xml

============== blog

The individual abbreviations appear to have these meanings:

OV = OVerflow, NV = No oVerflow. DN = DowN, UP (up).

EI = Enable Interupt, DI = Disable Interupt.

NG = NeGative, PL = PLus; a strange mixing of terms due to the

fact that 'Odd Parity' is represented by PO (rather than

POsitive), but they still could have used 'MI' for MInus.

ZR = ZeRo, NZ = Not Zero.

AC = Auxiliary Carry, NA = Not Auxiliary carry.

PE = Parity Even, PO = Parity Odd. CY = CarrY, NC = No Carry.

 

調試程序DEBUG如何表達標誌狀態?

溢出OVoverflowOF1

無溢出NVno overflowOF0

減量DNdirection downDF1

增量UPdirection upDF0

容許中斷EIenable interruptIF1

進制中斷DIdisable interruptIF0

NGnegativeSF1

PLplusSF0

ZRzeroZF1

非零NZno zeroZF0

輔助進位ACauxiliary carryAF1

無輔助進位NAno auxiliary carryAF0

偶校驗PEeven parityPF1

奇校驗POodd parityPF0

進位CYcarryCF1

無進位NCno carryCF0

 

 

AH&ALAX(accumulator):累加寄存器
BH&BL
BX(base):基址寄存器
CH&CL
CX(count):計數寄存器
DH&DL
DX(data):數據寄存器
SP
Stack Pointer):堆棧指針寄存器
BP
Base Pointer):基址指針寄存器
SI
Source Index):源變址寄存器
DI
Destination Index):目的變址寄存器
IP
Instruction Pointer):指令指針寄存器
CS
Code Segment)代碼段寄存器
DS
Data Segment):數據段寄存器
SS
Stack Segment):堆棧段寄存器
ES
Extra Segment):附加段寄存器
OF overflow flag
溢出標誌 操做數超出機器能表示的範圍表示溢出,溢出時爲1.
SF sign Flag
符號標誌 記錄運算結果的符號,結果負時爲1.
ZF zero flag
零標誌 運算結果等於0時爲1,不然爲0.
CF carry flag
進位標誌 最高有效位產生進位時爲1,不然爲0.
AF auxiliary carry flag
輔助進位標誌 運算時,3位向第4位產生進位時爲1,不然爲0.
PF parity flag
奇偶標誌 運算結果操做數位爲1的個數爲偶數個時爲1,不然爲0.
DF direcion flag
方向標誌 用於串處理.DF=1,每次操做後使SIDI減少.DF=0時則增大.
IF interrupt flag
中斷標誌 IF=1,容許CPU響應可屏蔽中斷,不然關閉中斷.
TF trap flag
陷阱標誌 用於調試單步操做

設置 nv(清除) ov(溢出)

  方向 dn() up()

  中斷 ei(啓用) di(禁用)

  正負 ng() pl()

  零 zr(0) nz(0)

  輔助進位 ac(進位) na(不進位)

  奇偶校驗 pe(偶校驗) po(奇校驗)

  進位 cy(進位) nc(不進位)

  如:

  OV DN EI NG ZR AC PE CY依次表示OF DF IF SF ZF AF PF CF都爲1;

NV UP DI PL NZ NA PO NC依次表示OF DF IF SF ZF AF PF CF都爲0.

 

 

of

df

if

sf

zf

af

pf

cf

標誌位爲1

ov

dn

ei

ng

zr

ac

pe

cy

標誌位爲0

nv

up

di

pl

nz

na

po

nc

 

 

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0100   NV UP EI PL NZ NA PO NC
1392:0100 28C0          SUB     AL,AL
-t

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0102   NV UP EI PL ZR NA PE NC
1392:0102 B010          MOV     AL,10
-t

AX=0010  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0104   NV UP EI PL ZR NA PE NC
1392:0104 0490          ADD     AL,90
-t

AX=00A0  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0106   NV UP EI NG NZ NA PE NC
1392:0106 B080          MOV     AL,80
-t

AX=0080  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0108   NV UP EI NG NZ NA PE NC
1392:0108 0480          ADD     AL,80
-t

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=010A   OV UP EI PL ZR NA PE CY
1392:010A B0FC          MOV     AL,FC
-t

AX=00FC  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=010C   OV UP EI PL ZR NA PE CY
1392:010C 0405          ADD     AL,05
-t

AX=0001  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=010E   NV UP EI PL NZ AC PO CY
1392:010E B07D          MOV     AL,7D
-t

AX=007D  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0110   NV UP EI PL NZ AC PO CY
1392:0110 040B          ADD     AL,0B
-

AX=0080  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1392  ES=1392  SS=1392  CS=1392  IP=0108   NV UP EI NG NZ NA PE NC
1392:0108 0480          ADD     AL,80
-
另外有人在網上作了很好的總結

http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=19481&kindLevel=1&kindId=34937&postId=39398&readSg=1 

 

補碼運算時的溢出判斷

clip_image003

這裏我作個腳註:即兩數原碼數值部分是什麼意思

10000101

11111011 分別是同一個數的原碼與補碼,去掉最高位的符號位,相加即得128

當兩個以補碼錶示的負數相加時,會遇到兩個問題。第一是兩個負數的符號位相加,1+1後,本位爲零,彷佛負數相加變成了正數;其二是兩個負數的數值部分之和,若是不向符號位進位,是否是就說明運算結果沒有溢出?但不進位最終將致使兩個負數相加成了正數,顯然是錯誤的,這該怎麼解釋?若是兩個以補碼錶示的負數的數值部分之和向符號位進位,會使運算結果依然爲負數,那麼這個運算結果是正確的嗎?下面咱們分析一下這個問題: 

①只有真正意義上的相加纔可能溢出,好比: 

   
+正,負+負,正-負,負- 

   
純粹的減法是不可能溢出的,這一點僅需常識便可做出判斷,因此遇到不是真正意義上的加法運算(固然,包括乘法和左移等)要你判斷是否有溢出,直接就能夠回答:OF=0 

②兩正數之和的數值部分向符號位進位,顯然是運算結果超過了指定位數的帶符號數的表示範圍,這就是典型的溢出; 

③兩負數之和的溢出判斷是咱們討論的重點。咱們先考察一下負數原碼和補碼數值部分之間的關係:以8位補碼爲例,負數原碼和補碼數值部分之和始終等於128(見上圖)。因爲這種關係,當原碼數值大時對應的補碼數值就小,反之也同樣。因此,當兩補碼錶示的負數的數值部分之和沒有向符號位進位,說明兩負數的原碼之和必然向符號位進位,即發生溢出;反之,當兩補碼錶示的負數的數值部分之和向符號位進位,那麼對應兩負數原碼的數值之和就不可能向符號位進位,即運算結果沒有溢出;而且在這種情形下補碼之和的數值部分向符號位的進位,修正了兩負數符號位相加本位爲零的問題,使得兩負數之和依然是個負數。 
   
下面看兩個負數補碼相加溢出判斷的實例: 
例一:085h + 9ch
   = 10000101b + 10011100b
  
兩數相加,數值部分不會向符號位進位,這是否是就說明沒有溢出呢?但因爲計算結果爲正,顯然不對。咱們仍是看看兩個數的原碼之和再說: 
    10000101b
的原碼 = 11111011b(-123)
    10011100b
的原碼 = 11100100b(-100)
   
顯然,原碼之和的數值部分將向符號位進位,顯然是溢出無疑。 

例二:0e7h + 0b3h
    =11100111b + 10110011b
   
兩數相加,數值部分會向符號位進位,這進位是溢出嗎?仍是看看原碼吧!
    11100111b
的原碼 = 10011001b(-25)
    10110011b
的原碼 = 11001101b(-77)
   
容易看出,兩數原碼之和沒有向符號位進位,即沒有發生溢出。 
   
其實歸結起來,補碼的溢出判斷規則就一句話: 

   
同號數相加若是結果的符號位和兩加數不一樣,既是溢出。 

   
這天然說明了: 
   
⑴不是同號數相加,則不可能溢出; 
   
⑵同號數相加有可能溢出; 
   
⑶同號數相加若是結果的符號位和兩加數不一樣,既是溢出。

評論次數(7)  |  瀏覽次數(3316)  |  類型(彙編語言) |  收藏此文  |

younggay   發表於  2009-07-22 09:59  ]

up

zhonghuade   發表於  2009-10-18 19:23  ]

老師!我以爲能夠加一些實際的例子來講明補碼溢出,好比說:8位機器數運算表示範圍-128大於等於x小於等於127,發生溢出的具體狀況?用實例來講明能讓咱們更深入理解溢出的含義!請您指點!謝謝!

release_lag   發表於  2009-12-31 16:48  ]

呵呵,沒想到我和樓主想到一塊兒去了。 
=============================
回樓上的 
若是是兩個8位數據相加 
第一個加數的範圍是:0ffH~80H(負數的範圍) 
第二個加數的範圍是:0H~79H(正數的範圍) 
那麼他們永遠不會溢出 
緣由是他們符號不一樣,樓主已經說過:不一樣符號的兩數相加,結果不可能溢出 
同符號相加時,就檢查結果的符號,若是符號與兩個數據的符號不一樣時,則溢出 
例如mov al,0e0h
   add al,95H
結果是(al)=75H      75H爲正數,運算溢出

遊客   發表於  2011-01-01 21:53  ]

遊客   發表於  2011-12-17 22:33  ]

文章很不錯,但是還有不少地方不太明白。 

1
(八位補碼溢出判斷圖示)是根據什麼原理推斷出來的啊?負數原碼和補碼數值部分之和始終等於128,爲何? 

2
、只有真正意義上的相加纔可能溢出,什麼是真正意義上的相加? 

3
、請問什麼是溢出?文中提到:兩正數之和的數值部分向符號位進位,顯然是運算結果超過了指定位數的帶符號數的表示範圍,這就是典型的溢出。運算結果超過了指定位數的帶符號數的表示範圍——這句話如何理解?不是同號數相加,則不可能溢出,超不超出範圍如何判斷?

842460904   發表於  2012-09-03 23:38  ]

理論是應該負數原碼和補碼數值之和等於128,可爲何。fc和它的補碼-4相加,即252+-4=?好像不在128-127之間。爲何,能解答下嗎。謝謝

scuzg   發表於  2012-12-20 19:05  ]

0fch展開成二進制數: 
11111100
,其中最高位是符號位,因此: 
7ch+4=80h=128
際原碼和補碼數值部分之和是128.

相關文章
相關標籤/搜索