019 無符號數條件轉移指令JA JNBE 大於

2021-07-22 15:51:55 字數 4697 閱讀 9496

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進製 整數...