匯編之JCC指令


版權聲明:本文為博主原創文章,轉載請附上原文出處鏈接和本聲明。2019-09-06,21:59:16。
作者By-----溺心與沉浮----博客園

JCC指令決定它跳不跳轉跟別的沒關系,只跟EFLAG標志寄存器有關系!!!

1、JE, JZ      結果為零則跳轉(相等時跳轉)       ZF=1

2、JNE, JNZ      結果不為零則跳轉(不相等時跳轉)     ZF=0

3、JS         結果為負則跳轉            SF=1

4、JNS         結果為非負則跳轉           SF=0

5、JP, JPE      結果中1的個數為偶數則跳轉        PF=1

6、JNP, JPO      結果中1的個數為偶數則跳轉        PF=0

7、JO         結果溢出了則跳轉              OF=1

8、JNO         結果沒有溢出則跳轉               OF=0

9、JB, JNAE      小於則跳轉 (無符號數)         CF=1

10、JNB, JAE      大於等於則跳轉 (無符號數)        CF=0

11、JBE, JNA      小於等於則跳轉 (無符號數)        CF=1 or ZF=1

12、JNBE, JA      大於則跳轉(無符號數)           CF=0 and ZF=0

13、JL, JNGE      小於則跳轉 (有符號數)            SF≠ OF

14、JNL, JGE      大於等於則跳轉 (有符號數)          SF=OF

15、JLE, JNG      小於等於則跳轉 (有符號數)          ZF=1 or SF≠ OF

16、JNLE, JG      大於則跳轉(有符號數)             ZF=0 and SF=OF

有符號無符號的區別:大家有興趣可以去嘗試一下

CMP AL,CL

JG 0x12345678

JA 0x12345678

  這里我也不上圖了,就簡單列舉一下,匯編指令的復習也就暫告一段落了,總算可以舒一口氣了,雖然博文寫了就十來篇,但筆者私底下的功課絕不止這么點,真的是要吐了。匯編的學習沒別的,就是練,也不需要靠你去背,背來的東西遲早都會忘,但是忘的速度會很快。只有練到自己把自己惡心到,才能讓自己把自己的功夫練到位!(當然筆者還沒到那種境界,不然也不會重新來復習匯編了)真的!學匯編一定不要聽信書上說的死記硬背!!!只有一句,忘死里練,練到把自己惡心得想錘爆電腦為止。

  當然我說匯編學習告一段落,也不是說真不去碰匯編了,匯編會長期伴隨着我,因為后面的堆棧圖,C語言逆向,C++逆向,匯編是一直緊隨的,而且還會有新的匯編指令再去學,只是換個方向去了解匯編了。

  上面的JCC指令嘩啦嘩啦一擺一大堆,有人會問,靠!這怎么去記,這記得來么!如果你的英語有一點點底子的話,那恭喜你,完全不用去記了,去找大於,小於,等於,不等於英語單詞就行,這些都是這英文單詞的縮寫。如果你英語差的話,也沒事,反正都是跟if...else相關的,見多了,練多了,不用刻意去記,也會形成自然反射的記住的。

我下面借鑒他人文章,COPY這張表格,這張表格有JCC指令的英文單詞全拼,可以幫助你更好的去理解JCC指令,注意結合我上面列出來的有符號的大於小於,和無符號的大於小於

指令 英文 中文
je Equal 等於
jne Not Equal 不等於
jg Creater  大於
jge Creater or Equal 大於等於
jng Not Greater 不大於
jnge Not Greater or Equal 不大於等於
jl Less 小於
jle Less or Equal 小於等於
jnl Not Less 不小於
jnle Not Less or Equal 不小於等於
ja Above 高於
jae Above or Equal 高於等於
jna Not Above 不高於
jnae Not Above or Equal 不高於等於
jb Below 低於
jbe Below or Equal 低於等於
jnb Not Below 不低於
jnbe Not Below or Equal 不低於等於
jpe Parity Even 校驗為偶
jpo Parity Odd 檢驗為奇

版權聲明:本文為博主原創文章,轉載請附上原文出處鏈接和本聲明。2019-09-06,21:59:16。
作者By-----溺心與沉浮----博客園

 

大家有興趣可以嘗試一下這道題,嘗嘗鮮。對JCC理解會有很好的幫助。

作業:使用匯編指令修改標志寄存器中的某個位的值,實現JCC的十六種跳轉.

條件1、不允許在OD中通過雙擊的形式修改標志寄存器.

條件2、要通過匯編指令的執行去影響標志位,能用CMP和TEST實現的優先考慮.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM