Win32ASM學習[17]:條件跳轉

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?一.跳轉相關的標志位:

11

10

9

8

7

6

5

4

3

2

1

0

OF

DF

IF

TF

SF

ZF

 

AF

 

PF

 

CF


 

 

 








?條件碼:
①OF(Overflow Flag)溢出標志。溢出時為1,否則置0。
②SF(Sign Flag)符號標志。結果為負時置1,否則置0.
③ZF(Zero Flag)零標志,運算結果為0時ZF位置1,否則置0.
④CF(Carry Flag)進位標志,進位時置1,否則置0.
⑤AF(Auxiliary carry Flag)輔助進位標志,記錄運算時第3位(半個字節)產生的進位置。有進位時1,否則置0.
⑥PF(Parity Flag)奇偶標志。結果操作數中1的個數為偶數時置1,否則置0.

控制標志位:
⑦DF(Direction Flag)方向標志,在串處理指令中控制信息的方向。

⑧IF(Interrupt Flag)中斷標志。
⑨TF(Trap Flag)陷井標志,單步中斷。

二.條件跳轉的分類

(1).標志寄存器FR中有6個標志是狀態的,它反映運算結果的情況。6個狀態中除AF半進位標志外,其余5個標志可以反映10種不同的條件

故單條件跳轉指令有10種

jc??????????????????????????????CF=1;則轉移

jnc????????????????????????????CF=0;則轉移??

?

je\jz??????????????????????????ZF=1;jmp

jne\jnz??????????????????????ZF=0;jmp

?

js????????????????????????????? SF=1;jmp???????????

jns????????????????????????????SF=0;jmp

?

jo?????????????????????????????OF=1;jmp

jno???????????????????????????OF=0;jmp

?

jp\jpe???????????????????????PF=1;jmp

jnp\jpo???????????????????? PF=0;jmp

(2).無符號數條件跳轉指令

用于無符號數的條件跳轉指令如下

ja\jnbe?????????????????????大于則跳轉????????? ?>??? ?則轉移, CF?或 ZF = 0;

jae\jnb???????????????????? 大于等于則跳轉??? >=?? 則跳轉,?? CF = 0;

jna\jbe???????????????????? 小于則跳轉????????? <???? ?則轉移,? CF?或 ZF = 0;

jb\jnae???????????????????? 小于等于則跳轉??? <=?? 則跳轉,? CF = 1;

(3).帶符號數的比較

JG/JNLE?????????????????大于則跳???????????? >????? 則跳,??????? SF 或 OF 或 ZF = 0則跳?

JGE/JNL?????????????????大于等于則跳????? >=??? 則跳,??????? SF 或 OF = 0 則跳

JL/JNGE???????????????? 小于則跳?????????????<????? 則跳,??????? SF 或 OF = 1 則跳??

JLE/JNG???????????????? 小于等于則跳????? <=??? 則跳,??????? SF 或 OF 或 ZF = 1則跳

?

用帶符號數和無符號數的條件轉移指令時,必須嚴格加以區別,否則會得到錯誤的結果

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

三.無條件跳轉

操作碼 偽碼指令含義
EB  cb
JMP rel8相對短跳轉(8位),使rel8處的代碼位下一條指令
E9  cw
JMP rel16 相對跳轉(16位),使rel16處的代碼位下一條指令
FF  /4
JMP r/m16絕對跳轉(16位),下一指令地址在r/m16中給出
FF  /4
JMP r/m32絕對跳轉(32位),下一指令地址在r/m32中給出
EA  cb
JMP ptr16:16遠距離絕對跳轉, 下一指令地址在操作數中
EA  cb
JMP ptr16:32 遠距離絕對跳轉, 下一指令地址在操作數中
FF  /5
JMP m16:16遠距離絕對跳轉, 下一指令地址在內存m16:16中
FF  /5
JMP m16:32 遠距離絕對跳轉, 下一指令地址在內存m16:32中

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?四.16位/32位尋址方式(fisheep譯 fisheep@sohu.com)

操作碼
偽碼指令
跳轉含義
跳轉類型
跳轉的條件(標志位)
0F 87  cw/cd
JA rel16/32
大于
near
(CF=0 and ZF=0)
0F 83  cw/cd
JAE rel16/32
大于等于
near
(CF=0)
0F 82  cw/cd
JB rel16/32
小于
near
(CF=1)
0F 86  cw/cd
JBE rel16/32
小于等于
near
(CF=1 or ZF=1)
0F 82  cw/cd
JC rel16/32
進位
near
(CF=1)
0F 84  cw/cd
JE rel16/32
等于
near
(ZF=1)
0F 84  cw/cd
JZ rel16/32
為0
near
(ZF=1)
0F 8F  cw/cd
JG rel16/32
大于
near
(ZF=0 and SF=OF)
0F 8D  cw/cd
JGE rel16/32
大于等于
near
(SF=OF)
0F 8C  cw/cd
JL rel16/32
小于
near
(SF<>OF)
0F 8E  cw/cd
JLE rel16/32
小于等于
near
(ZF=1 or SF<>OF)
0F 86  cw/cd
JNA rel16/32
不大于
near
(CF=1 or ZF=1)
0F 82  cw/cd
JNAE rel16/32
不大于等于
near
(CF=1)
0F 83  cw/cd
JNB rel16/32
不小于
near
(CF=0)
0F 87  cw/cd
JNBE rel16/32
不小于等于
near
(CF=0 and ZF=0)
0F 83  cw/cd
JNC rel16/32
不進位
near
(CF=0)
0F 85  cw/cd
JNE rel16/32
不等于
near
(ZF=0)
0F 8E  cw/cd
JNG rel16/32
不大于
near
(ZF=1 or SF<>OF)
0F 8C  cw/cd
JNGE rel16/32
不大于等于
near
(SF<>OF)
0F 8D  cw/cd
JNL rel16/32
不小于
near
(SF=OF)
0F 8F  cw/cd
JNLE rel16/32
不小于等于
near
(ZF=0 and SF=OF)
0F 81  cw/cd
JNO rel16/32
未溢出
near
(OF=0)
0F 8B  cw/cd
JNP rel16/32
不是偶數
near
(PF=0)
0F 89  cw/cd
JNS rel16/32
非負數
near
(SF=0)
0F 85  cw/cd
JNZ rel16/32
非零(不等于)
near
(ZF=0)
0F 80  cw/cd
JO rel16/32
溢出
near
(OF=1)
0F 8A  cw/cd
JP rel16/32
偶數
near
(PF=1)
0F 8A  cw/cd
JPE rel16/32
偶數
near
(PF=1)
0F 8B  cw/cd
JPO rel16/32
奇數
near
(PF=0)
0F 88  cw/cd
JS rel16/32
負數
near
(SF=1)
0F 84  cw/cd
JZ rel16/32
為零(等于)
near
(ZF=1)

注:一些指令操作數的含義說明:
  rel8? ? ? 表示 8 位相對地址
  rel16? ? 表示 16 位相對地址
  rel16/32? 表示 16或32 位相對地址
  r/m16? ? 表示16位寄存器
  r/m32? ? 表示32位寄存器

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?另外有其他的? 在補充?? ^_^

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375347.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375347.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375347.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SUID或SGID程序中能不能用system函數

system()函數的聲明和說明如下&#xff1a; 注意它的描述那里&#xff0c;system()執行一個由command參數定義的命令&#xff0c;通過調用/bin/sh -c命令來實現這個功能。也就是說它的邏輯是這樣的&#xff01; 進程調用system函數&#xff0c;system函數調用fork創建一個子進程…

史上最全的maven pom.xml文件教程詳解

<project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd >; <!-- 父項目的坐標。如果項目中沒有規定某個元素的值&am…

Win32ASM學習[18]:串指令-MOVS*、CMPS*、SCAS*、LODS*、REP、REPE、REPNE

-------------------------------------------------------------------------------------------------------------------------------------------------------- 一.字符串傳送指令 MOVSB/MOVSW/MOVSD 格式: MOVS OPD,OPS 功能: OPD<--OPS. 說明: 1. 其中OPS為源串符…

Xamarin iOS編寫第一個應用程序創建工程

Xamarin iOS編寫第一個應用程序創建工程 在Xcode以及Xamarin安裝好后&#xff0c;就可以在Xamarin Studio中編寫程序了。本節將主要講解在Xamarin Studio中如何進行工程的創建以及編寫代碼等內容XamariniOS編寫第一個應用程序創建工程本文選自Xamarin iOS開發實戰大學霸。 1.3.…

Jade之Extends

Extends jade允許多個jade文件繼承一個jade文件。 jade&#xff1a; //- layout.jade doctype html htmlheadblock titletitle Default titlebodyblock content //- index.jade extends ./layout.jadeblock titletitle Article Titleblock contenth1 My Article html&#xff1…

Win32ASM學習[19]:結構與聯合

結構和聯合分別用 struct、union 定義, 都是 ends 結束定義. 它們使用方法相同, 并可以互相嵌套; 主要區別是后者的各成員共用同一個地址. -------------------------------------------------------------------------------------------------------------------------------…

hdu 1257 最少攔截系統(貪心)

題意&#xff1a; 最少需要多少個攔截系統才能將所有的導彈攔截下來。 思路&#xff1a; 第1枚導彈一定需要第一個攔截系統&#xff0c;第2枚導彈如果比第1個高度高&#xff0c;則需要第二個攔截系統。 考慮第i枚導彈&#xff0c;如果前i-1枚導彈的高度都比它小&#xff0c;則需…

Birt使用總結

把report放到其他服務器要重新建立Data Source ,這是配置&#xff0c;拷貝項目時不會同時拷貝 (1)在EXTJs中利用Report實現報表的刷新 Ext.getCmp("showview").body.update("<iframe idshowviewframe src" "> </iframe>"…

Win32ASM學習[20]:子程序

關于函數調用約定 :函數調用約定 這是以前的一個求和函數的例子 ---------------------------------------------------------------------------------------------------------------- .386 .model flat, stdcall include windows.inc include kernel32.inc include …

Mac聯網恢復系統重新安裝Lion

Mac的Lion系統&#xff0c;雖然不像Windows那樣需要經常重裝&#xff0c;但也難免會有要重置的時候&#xff0c;比如更換硬盤。本文介紹如何利用Mac的聯網恢復系統進行Lion系統的在線恢復。Mac的在線恢復系統只在近幾年的機型上才有&#xff0c;在進行系統恢復前&#xff0c;請…

【線性代數公開課MIT Linear Algebra】 第二十三課 微分方程與exp(At)

本系列筆記為方便日后自己查閱而寫&#xff0c;更多的是個人見解&#xff0c;也算一種學習的復習與總結&#xff0c;望善始善終吧~ 一階常系數微分方程 Aududt 將一階常系數微分方程轉換為線性代數問題的關鍵在于常系數微分方程的解一定是指數形式的。那么我們的需要求解的東西…

Win32ASM學習[21]:宏匯編(1)

-------------------------------------------------------------------------------------------------------------------- 嗯 上個星期到現在 把Win32ASM基礎匯編復習了下 在網上找到了 這個不錯系列 于是就轉載過來了 其中 根據我自己的水平 刪減了一些內容 或…

ubunu安裝軟件的一個錯誤

http://tonychiu.blog.51cto.com/656605/654776/ 由于ubuntu/debian軟件庫中有時候不同的庫更新速度不一致&#xff0c;apt-get 出出現如下的錯誤提示 Some packages could not be installed. This may mean that you have requested an impossible situation or if you are us…

常用的基本Windows數據類型

常用的基本Windows數據類型 --------------------------------------------------------------------------------------------------------------------------------------------------------- 類 型 …

刪除空文件夾 清除CS擴展名文件 bat

刪除空文件夾。刪的干凈。刪的徹底。 將下列代碼復制到txt中保存。并把后綴.txt命成.bat。然后運行即可。 方案&#xff11;.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 刪除指定目錄及其子目錄下的空文件夾.bat 代碼&#xff1a;…

ios 坐標轉換

// 將像素point由point所在視圖轉換到目標視圖view中&#xff0c;返回在目標視圖view中的像素值 - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view; // 將像素point從view中轉換到當前視圖中&#xff0c;返回在當前視圖中的像素值 - (CGPoint)convertPoint:(C…

80X86偽指令

8086 偽指令表 一、數據定義偽操作 偽 指 令 名 稱 語 句 格 式 功 能 定義字節類型的數據存儲區 [變量名] DB 表達式[&#xff0c;…] 定義一個以變量名為首址的字節類型數據存儲區&#xff0c;所含數據元素的個數由其后表達式的個數所決定&#xff0c;數據存儲單元…

jQuery慢慢啃之選擇器(二)

1.$("#myDiv");ID匹配一個元素 <span id"foo[bar]"></span> $("#foo\\[bar\\]);//轉義 2.$("div");//元素標簽名匹配 3.$(".myClass"); css類名匹配 4.$("*") 匹配所有元素&#xff0c;多用于結合上下文…

iOS學習之基本概念

學習iOS最重要的是態度和興趣&#xff0c;如果你對于學習始終抱有不斷的熱情和端正的態度&#xff0c;那么&#xff0c;無論是什么&#xff0c;你總會成功的&#xff01; 有一句話與大家共勉&#xff1a;過程中跌倒多少次都沒有關系&#xff0c;重要的是&#xff0c;跌倒后你能…

Win32ASM代碼基本模塊

;-------------------------------------------------------------------------------- ;程序環境設置 .386 .model flat,stdcall option casemap:none ;-------------------------------------------------------------------------------- ;頭文件與庫文件導入 include windo…