日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win32ASM学习[17]:条件跳转

發(fā)布時間:2023/12/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win32ASM学习[17]:条件跳转 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

?一.跳轉(zhuǎn)相關(guān)的標(biāo)志位:

11

10

9

8

7

6

5

4

3

2

1

0

OF

DF

IF

TF

SF

ZF

 

AF

 

PF

 

CF


 

 

 








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

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

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

二.條件跳轉(zhuǎn)的分類

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

故單條件跳轉(zhuǎn)指令有10種

jc??????????????????????????????CF=1;則轉(zhuǎn)移

jnc????????????????????????????CF=0;則轉(zhuǎn)移??

?

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).無符號數(shù)條件跳轉(zhuǎn)指令

用于無符號數(shù)的條件跳轉(zhuǎn)指令如下

ja\jnbe?????????????????????大于則跳轉(zhuǎn)????????? ?>??? ?則轉(zhuǎn)移, CF?或 ZF = 0;

jae\jnb???????????????????? 大于等于則跳轉(zhuǎn)??? >=?? 則跳轉(zhuǎn),?? CF = 0;

jna\jbe???????????????????? 小于則跳轉(zhuǎn)????????? <???? ?則轉(zhuǎn)移,? CF?或 ZF = 0;

jb\jnae???????????????????? 小于等于則跳轉(zhuǎn)??? <=?? 則跳轉(zhuǎn),? CF = 1;

(3).帶符號數(shù)的比較

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

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

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

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

?

用帶符號數(shù)和無符號數(shù)的條件轉(zhuǎn)移指令時,必須嚴格加以區(qū)別,否則會得到錯誤的結(jié)果

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

三.無條件跳轉(zhuǎn)

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

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

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

操作碼 偽碼指令 跳轉(zhuǎn)含義 跳轉(zhuǎn)類型 跳轉(zhuǎn)的條件(標(biāo)志位)
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 不是偶數(shù) near (PF=0)
0F 89  cw/cd JNS rel16/32 非負數(shù) 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 偶數(shù) near (PF=1)
0F 8A  cw/cd JPE rel16/32 偶數(shù) near (PF=1)
0F 8B  cw/cd JPO rel16/32 奇數(shù) near (PF=0)
0F 88  cw/cd JS rel16/32 負數(shù) near (SF=1)
0F 84  cw/cd JZ rel16/32 為零(等于) near (ZF=1)

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

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

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

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

?

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

?

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

?

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

?

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

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Win32ASM学习[17]:条件跳转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。