JCC


JCC

EIP的值決定cpu即將執行的指令

JMP指令

JMP指令

直接修改EIP

MOV EIP,R/IMM
;以上指令功能由JMP表示為
JMP R/IMM

CALL指令

跳轉前將下一指令的地址壓入棧

PUSH M1
MOV EIP,M2/R
;以上指令功能由CALL表示為
CALL M2/R

RET指令

與CALL指令相匹配,將EIP修改為棧頂所存地址

LEA ESP,[ESP+4]
MOV EIP,[ESP-4]
;簡寫為
RET

比較指令

CMP指令

該指令是比較兩個操作數,實際上,它相當於SUB指令,但是相減的結構並不保存到第一個操作數中

只是根據相減的結果來改變零標志位的,當兩個操作數相等的時候,零標志位置1

格式:

CMP R/M,R/M/IMM	;數據寬度相同,兩邊不同時為內存

例:

MOV EAX,0x100
MOV ECX,0x100
CMP EAX,ECX	;觀察Z位

MOV EAX,0x100
MOV ECX,0x200
CMP EAX,ECX	;觀察S位,不相同時根據S位判斷大小關系

TEST指令

該指令在一定程序上和CMP指令時類似的,兩個數值進行與操作,結果不保存,但是會改變相應標志位

常用來確定某個寄存器是否等於0

格式:

TEST R/M,R/M/IMM

例:

TEST EAX,EAX	;觀察Z位

JCC

序號 指令 描述 英文原意 標志
1 JE
JZ
結果為零則跳轉(相等時跳轉) jump if zero
jump if equal
ZF=1
2 JNE
JNZ
結果不為零則跳轉(不相等時跳轉) jump if not zero
jump if not equal
ZF=0
3 JS 結果為負則跳轉 jump if sign SF=1
4 JNS 結果為非負則跳轉 jump if not sign SF=0
5 JP
JPE
結果中1的個數為偶數則跳轉 jump if parity(even) PF=1
6 JNP
JPO
結果中1的個數為奇數則跳轉 jump if not parity(odd) PF=1
7 JO 結果溢出了則跳轉 jump if overflow OF=1
8 JNO 結果沒有溢出則跳轉 jump if not overflow OF=0
9 JC
JB
JNAE
小於則跳轉(無符號數) jump if carry
jump if below
jump if not above equal
CF=1
10 JNC
JNB
JAE
大於等於則跳轉(無符號數) jump if not carry
jump if not below
jump if above equal
CF=0
11 JBE
JNA
小於等於則跳轉(無符號數) jump if below equal
jump if not above
CF=1 or ZF=1
12 JNBE
JA
大於則跳轉(無符號數) jump if not below equal
jump if above
CF=0 and ZF=0
13 JL
JNGE
小於則跳轉(有符號數) jump if less
jump if not greater equal
SF≠OF
14 JNL
JGE
大於等於則跳轉(有符號數) jump if not less
jump if greater equal
SF=OF
15 JLE
JNG
小於等於則跳轉(有符號數) jump if less equal
jump if not greater
ZF=1 or SF≠OF
16 JNLE
JG
大於則跳轉(有符號數) jump if not less equal
jump if greater
ZF=0 and SF=OF


免責聲明!

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



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