l ja (> 時轉移)
l jnbe(<=時不轉移)
l ja與jg的區別
l標誌暫存器
psw
標誌暫存器psw(程式狀態字暫存器
psw)
標誌暫存器psw是乙個16為的暫存器。它反映了cpu運算的狀態特徵並且存放某些控制標誌。8086使用了16位中的9位,包括6個狀態標誌位和3個控制標誌位。
1514
1312
111098
7654
3210
ofdf
iftf
sfzf
afpfcf零
標誌 cf(進製標誌位):當執行乙個加法(減法)運算時,最高位產生進製(或借位)時,cf為1,否則為0。
zf零標誌位:若當前的運算結果為零,則zf為
1,否則為0。
sf符號標誌位:該標誌位與運算結果的最高位相同。即運算結果為負,則sf為
1,否則為
0。of溢位標誌位:若運算結果超出機器能夠表示的範圍稱為溢位,此時of為
1,否則為
0。判斷是否溢位的方法是:進行二進位制運算時,最高位的進製值與次高位的進製值進行異或運算,若運算結果為
1則表示溢位
of=1
,否則of=0
pf奇偶標誌:當運算結果的最低16位中含1的個數為偶數則pf=1否則pf=0
af輔助進製標誌:乙個加法(減法)運算結果的低4位向高4位有進製(或借位)時則af=1否則af=0
另外還有三個控制標誌位用來控制cpu的操作,可以由程式進行置位和復位。
tf跟蹤標誌:該標誌位為方面程式除錯而設定。若tf=1,8086/8088cpu處於單步工作方式,即在每條指令執行結束後,產生中斷。
if中斷標誌位:該標誌位用來控制cpu是否響應可遮蔽中斷。若if=1則允許中斷,否則禁止中斷。
df方向標誌:該標誌位用來控制串處理指令的處理方向。若df=1則串處理過程中位址自動遞減,否則自動遞增。
條件轉移指令
助憶符
檢測的轉移條件
功能描述
je
/jz
zf=1
j
ump
equal == 跳轉
j
ump
zero
!=不跳轉
jne/
jnz
zf=0
j
ump
not
equal != 跳轉
j
umpn
ot z
ero ==不跳轉
有符號條件轉移
jg
/jnle
zf=0&&sf=of
j
ump
greater >跳轉
j
umpnotl
ess or
equal
<=不跳轉
jge
/jnl
sf=of
j
ump
greater
equal >=跳轉
j
ump
not
less
<
不跳轉
jl
/jnge
sf!=of
j
umpl
ess
《跳轉
j
ump
not
greater or
equal >=不跳轉
jle
/jng
zf=1 || sf!=of
j
umpl
ess or
equal
<=跳轉
j
ump not
greater >不跳轉
無符號條件轉移
ja
/jnbe
cf=0 &&zf=0
j
ump
above >跳轉
j
ump
not
below or
equal
<=不跳轉
jnb
/jae/jnc
cf=0
j
ump
above or
equal >=跳轉
j
ump
not
below
<
不跳轉
jb
/jnae/jc
cf=1
j
ump
below
《跳轉
j
ump
not
above or
equal >=不跳轉
jbe
/jna
cf=1 or af=1
j
umpb
elow or
equal <=
j
ump not
above >不跳轉
a
bove
高於
b
elow
低於
一、無符號大於轉移指令ja
/jnbe
ja :高於
時跳轉// >
時跳轉
jnbe:不低於等於
時跳轉//<=
時不跳轉
ja與jg區別:
jg是帶符號數比較
> ja
是無符號數比較
>
二、**測試
//cf(進製標誌位)
printf("begin\n");
inta=3,b=-5;
unsigned
inta2=a,b2=b;
if (a2
<=b2)//
無符號的生成
ja
不夠減借位
if (a
<=b) ///
<=
時不跳轉
>
時跳轉帶符號的生成
jg指令
printf("do if\n");
}
有符號數與無符號數
關於有符號數和無符號數的一些重要知識點,包括它們在記憶體中的儲存方式 互相轉換 越界計算等。大家肯定都知道,對於有符號數,資料型別的最高位用於標示資料的符號,最高位為1表示負數,最高位為0表示正數,那麼今天我們主要就此討論乙個問題 在計算機內部具體是如何表示有符號數呢?在計算機內部是通過補碼的方式來...
有符號數和無符號數
有符號和無符號整數 1.通常情況下,大多數字預設的是有符號數,比如 4,5 要想寫乙個無符號數必須在後面加u 比如 4u,5u 2.在計算機中有符號數是用補碼的形式來表示的,最高位是符號位。無符號數就是正數唄 正數的補碼和原碼相同。比如 1 在計算機中表示為 11111111 11111111 11...
無符號數和有符號數
人有十個手指頭,習慣了逢十進一,於是十進位製成了生活中的標準。程式的世界只有高低電平兩種狀態,更適合用二進位制來表示,於是二進位製成了程式世界的標準。對與無符號數來說,我們更喜歡談他們之間的轉化,十進位制是我們最習慣的進製,於是十進位制轉為r進製,r進製轉為十進位制變尤為重要。十進位制 r進製 整數...