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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

汇编跳转指令总结

發(fā)布時間:2024/4/11 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编跳转指令总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?雖然jmp指令提供了控制轉(zhuǎn)移,但是它不允許進(jìn)行任何復(fù)雜的判斷。80x86條件跳轉(zhuǎn)指令提供了這種判斷。條件跳轉(zhuǎn)指令是創(chuàng)建循環(huán)和實現(xiàn)其他條件執(zhí)行語句條件跳轉(zhuǎn)指令檢查一個或多個標(biāo)志位,判斷它們是否匹配某個特殊條件(就像setcc指令):如果標(biāo)志匹配成功,該指令就將控制轉(zhuǎn)移到目標(biāo)位置;如果匹配失敗,CPU忽略該條件跳轉(zhuǎn)指令而繼續(xù)執(zhí)行下一條指令。條件跳轉(zhuǎn)指令有一個限制:目標(biāo)標(biāo)號的位置必須在跳轉(zhuǎn)指令本身附近32768字節(jié)范圍內(nèi),這通常對應(yīng)著800032000條機(jī)器指令。一般情況下不會超過這種限制。


用自己的話總結(jié):條件跳轉(zhuǎn)指令是指jz,jg..等等指令,這些指令跳轉(zhuǎn)方式是根據(jù)標(biāo)志位的狀態(tài)進(jìn)行跳轉(zhuǎn),而設(shè)置這些標(biāo)志的常見指令為cmptest指令,所以他們經(jīng)常搭配使用(應(yīng)該是必須的)。即跳轉(zhuǎn)指令前一行要嗎有cmp指令要嗎有test指令。

匯編標(biāo)志位:

標(biāo)志名??????????????????????????標(biāo)志?1??????????????標(biāo)志?0

OF?(溢出標(biāo)志)?????????????????OV??????????????????NV

DF??(方向標(biāo)志) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UP??????????????????DN

IF?(中斷標(biāo)志)?????????????????DI??????????????????EI

SF?(符號標(biāo)志位)???????????????PL??????????????????NG

ZF?(零標(biāo)志)???????????????????NZ??????????????????ZR

AF?(輔助進(jìn)位標(biāo)志位)???????????NA??????????????????AC

PF?(奇偶標(biāo)志)?????????????????PO??????????????????PE

CF?(進(jìn)位標(biāo)志)?????????????????NC??????????????????CY


反匯編窗口,對應(yīng)的標(biāo)志位(雙擊后面的數(shù)字可改變其狀態(tài)



Test和cmp指令的區(qū)別
test屬于邏輯運(yùn)算指令
Test對兩個參數(shù)(目標(biāo),源)執(zhí)行AND邏輯操作,并根據(jù)結(jié)果設(shè)置標(biāo)志寄存器,結(jié)果本身不會保存。
舉例:
Test的一個非常普遍的用法是用來測試一方寄存器是否為空:
test ecx, ecx
jz somewhere
如果ecx為零,設(shè)置ZF零標(biāo)志為1,Jz跳轉(zhuǎn)
--------------------------------------------
CMP屬于算術(shù)運(yùn)算指令
CMP比較.(兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果).?
cmp實際上是只設(shè)置標(biāo)志不保存結(jié)構(gòu)的減法,并設(shè)置Z-flag(零標(biāo)志).
舉例:
Cmp eax, 2; ? ? ? 如果eax-2=0即eax=2就設(shè)置零標(biāo)志為1
Jz ****; ? ? ? ? ?如果設(shè)置了零標(biāo)志就跳轉(zhuǎn)

============================================

得出的結(jié)論
test邏輯與運(yùn)算結(jié)果為零,就把ZF(零標(biāo)志)置1;
cmp 算術(shù)減法運(yùn)算結(jié)果為零,就把ZF(零標(biāo)志)置1.

指?令

描?述

條?件

別?名

相?反?指?令

JC

如果進(jìn)位位被置位則跳轉(zhuǎn)

進(jìn)位標(biāo)志=1

JB,JNAE

JNC

JNC

如果進(jìn)位位沒有置位則跳轉(zhuǎn)

進(jìn)位標(biāo)志=0

JNB,JAE

JC

JZ

如果0標(biāo)志被置位則跳轉(zhuǎn)

0標(biāo)志=1

JE

JNZ

JNZ

如果0標(biāo)志沒有置位則跳轉(zhuǎn)

0標(biāo)志=0

JNE

JZ

指?令

描?述

條?件

別?名

相反指令

JS

如果符號位被置位則跳轉(zhuǎn)

符號標(biāo)志=1

?

JNS

JNS

如果符號位沒有被置位則跳轉(zhuǎn)

符號標(biāo)志=0

?

JS

JO

如果溢出標(biāo)志置位則跳轉(zhuǎn)

溢出標(biāo)志=1

?

JNO

JNO

如果溢出標(biāo)志沒有置位則跳轉(zhuǎn)

溢出標(biāo)志=0

JO

?

JP

如果奇偶校驗位被置位則跳轉(zhuǎn)

奇偶校驗標(biāo)志=1

JPE

JNP

JPE

如果奇偶校驗位為偶校驗則跳轉(zhuǎn)

奇偶校驗標(biāo)志=1

JP

JPO

JNP

如果奇偶校驗位沒有被置位則跳轉(zhuǎn)

奇偶校驗標(biāo)志=0

JPO

JP

JPO

如果奇偶校驗位為奇校驗則跳轉(zhuǎn)

奇偶校驗標(biāo)志=0

JNP

JPE

使用無符號數(shù)比較的JCC指令

指?令

描?述

條?件

別?名

相反指令

JA

如果超過(>)則跳轉(zhuǎn)

進(jìn)位標(biāo)志=0,0標(biāo)志=0

JNBE

JNA

JNBE

如果不低于或等于(不?<=)則跳轉(zhuǎn)

進(jìn)位標(biāo)志=0,0標(biāo)志=0

JA

JBE

JAE

如果超過或等于(>=)則跳轉(zhuǎn)

進(jìn)位標(biāo)志=0

JNC,JNB

JNAE

JNB

如果不低于則跳轉(zhuǎn)(不?<)

進(jìn)位標(biāo)志=0

JNC,JAE

JB

JB

如果低于(<)則跳轉(zhuǎn)

進(jìn)位標(biāo)志=1

JC,JNAE

JNB

JNAE

如果不超過或等于(不>=)則跳轉(zhuǎn)

進(jìn)位標(biāo)志=1

JC,JB

JAE

JBE

如果低于或等于(<=)則跳轉(zhuǎn)

進(jìn)位標(biāo)志=1或0標(biāo)志=1

JNA

JNBE

JNA

如果不超過(不>)則跳轉(zhuǎn)

進(jìn)位標(biāo)志=1或0標(biāo)志=1

JBE

JA

JE

如果相等(=)則跳轉(zhuǎn)

0標(biāo)志=1

JZ

JNE

JNE

如果不相等(<>)則跳轉(zhuǎn)

0標(biāo)志=0

JNZ

JE

使用有符號數(shù)比較的JCC指令

指?令

描?述

條?件

別?名

相反指令

JG

如果大于(>)則跳轉(zhuǎn)

符號標(biāo)志=溢出標(biāo)志或0標(biāo)志=0

JNLE

JNG

JNLE

如果小于或等于(<=)則跳轉(zhuǎn)

符號標(biāo)志=溢出標(biāo)志或0標(biāo)志=0

JG

JLE

JGE

如果大于或等于(>=)則跳轉(zhuǎn)

符號標(biāo)志=溢出標(biāo)志

JNL

JGE

JNL

如果不小于(不<)則跳轉(zhuǎn)

符號標(biāo)志=溢出標(biāo)志

JGE

JL

JL

如果小于(<)則跳轉(zhuǎn)

符號標(biāo)志<>溢出標(biāo)志

JNGE

JNL

JNGE

如果大于或等于(>=)跳轉(zhuǎn)

符號標(biāo)志<>溢出標(biāo)志

JL

JGE

JLE

如果小于或等于(<=)跳轉(zhuǎn)

符號標(biāo)志<>溢出標(biāo)志或0標(biāo)志=1

JNG

JNLE

JNG

如果不大于(不>)則跳轉(zhuǎn)

符號標(biāo)志<>溢出標(biāo)志或0標(biāo)志=1

JLE

JG

JE

如果等于(=)則跳轉(zhuǎn)

0標(biāo)志=1

JZ

JNE

JNE

如果不等于(<>)則跳轉(zhuǎn)

0標(biāo)志=0

JNZ

JE



總結(jié)

以上是生活随笔為你收集整理的汇编跳转指令总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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