常用的跳轉(zhuǎn)指令 大集合
2024-07-16 17:44:53
供稿:網(wǎng)友
1、判斷單個(gè)標(biāo)志位狀態(tài)
這組指令單獨(dú)判斷5個(gè)狀態(tài)標(biāo)志之一,根據(jù)某一個(gè)狀態(tài)標(biāo)志是0或1決定是否跳轉(zhuǎn)。
(1)JZ/JE和JNZ/JNE利用零標(biāo)志ZF,判斷結(jié)果是否為零(或相等)
JE指令(相等時(shí)轉(zhuǎn)移)
JZ指令(等于0時(shí)轉(zhuǎn)移)
這是當(dāng)ZF=1時(shí)轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令的兩種助記符。這條指令既適用于判斷無符號(hào)數(shù)的相等,又適用于判斷帶符號(hào)數(shù)的相等。
JNE指令(不相等轉(zhuǎn)移)
JNZ指令(不等于0轉(zhuǎn)移)
這是當(dāng)ZF=0時(shí)能轉(zhuǎn)移到目標(biāo)地址的條件轉(zhuǎn)移指令的兩種助記符。這條指令也是既適用于判斷無符號(hào)數(shù),又適用于判斷帶符號(hào)數(shù)。
(2)JS和JNS利用符號(hào)標(biāo)志SF,判斷結(jié)果是正是負(fù)。
JS指令(為負(fù)轉(zhuǎn)移)——當(dāng)滿足SF=1時(shí),轉(zhuǎn)移到目標(biāo)地址
JNS指令(為正轉(zhuǎn)移)——滿足SF=0時(shí),轉(zhuǎn)移到目標(biāo)地址
(3)JO和JNO利用溢出標(biāo)志,判斷結(jié)果是否產(chǎn)生溢出
JO指令(溢出轉(zhuǎn)移)——OF=1時(shí),轉(zhuǎn)移到目標(biāo)地址
JNO指令(未溢出轉(zhuǎn)移)——OF=0時(shí),轉(zhuǎn)移到目標(biāo)地址
(4)JP/JPE和JNP/JPO利用奇偶標(biāo)志PF,判斷結(jié)果中“1”的個(gè)數(shù)是偶是奇
JP/JPE指令(為偶轉(zhuǎn)移)——滿足PF=1時(shí)轉(zhuǎn)移
JNP/JPO指令(為奇轉(zhuǎn)移)——滿足PF=0時(shí)轉(zhuǎn)移
數(shù)據(jù)通訊為了可靠常要進(jìn)行校驗(yàn)。常用的校驗(yàn)方法是奇偶校驗(yàn),即把字符ASCII碼的最高位用作校驗(yàn)位,是包括校驗(yàn)位在內(nèi)的字符中為“1”的個(gè)數(shù)恒為奇數(shù)(奇校驗(yàn)),或恒為偶數(shù)(偶校驗(yàn))。若采用奇校驗(yàn),在字符ASCII中為“1”的個(gè)數(shù)已為奇數(shù)時(shí),則令其最高位為“0”;否則令最高位為“1”。
(5)JC/JB/JNAE和JNC/JNB/JAE,利用進(jìn)位標(biāo)志CF,判斷結(jié)果是否進(jìn)位或借位,CF標(biāo)志是比較常用的一個(gè)標(biāo)志。
JC——滿足CF=1時(shí)轉(zhuǎn)移 JNC——滿足CF=0時(shí)轉(zhuǎn)移
JB(低于轉(zhuǎn)移) JNB(不低于轉(zhuǎn)移)
JNAE(不高于等于轉(zhuǎn)移) JAE(高于等于轉(zhuǎn)移)
2、用于比較無符號(hào)數(shù)高低
為區(qū)別有符號(hào)數(shù)的大小,無符號(hào)數(shù)的大小用高(Above)、低(Below)表示,它需要利用CF確定高低、利用ZF標(biāo)志確定相等(Equal)。兩數(shù)的高低分成4種關(guān)系:低于(不高于等于)、不低于(高于等于)、低于等于(不高于)、不低于等于(高于);也就分別對應(yīng)4條指令:JB(JNAE)、JNB(JAE)、JBE(JNA)、JNBE(JA)。
JA/JNBE
JA即高于轉(zhuǎn)移,JNBE即不低于且不等于轉(zhuǎn)移,高于則沒有進(jìn)位產(chǎn)生,即CF=0,不等于則ZF=0,所以這兩條指令滿足CF=0且ZF=0時(shí)轉(zhuǎn)移
JAE/JNB
高于或等于轉(zhuǎn)移/不低于轉(zhuǎn)移是當(dāng)CF=0(高于就不產(chǎn)生進(jìn)位)或ZF=1(等于)時(shí)轉(zhuǎn)移。