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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【debug】汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

發布時間:2024/3/12 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【debug】汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

匯編跳轉指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

2017年11月12日 15:01:09?zmmycsdn?閱讀數 19334

轉自:http://www.cnblogs.com/del/archive/2010/04/16/1713886.html

http://pan.baidu.com/s/1gVTSi

跳轉指令分三類:

一、無條件跳轉:

JMP ;無條件跳轉


二、根據CX、ECX寄存器的值跳轉:

? JCXZ ;CX 為 0 則跳轉 JECXZ;ECX 為 0 則跳轉


三、根據EFLAGS寄存器的PSW標志位跳轉, 這個太多了.

根據標志位跳轉的指令:

?


? JE ;等于則跳轉 同JZ JNE ;不等于則跳轉 同JNZ JA ;無符號大于則跳轉 JNA ;無符號不大于則跳轉 JAE ;無符號大于等于則跳轉 同JNB JNAE ;無符號不大于等于則跳轉 同JB

?

JB ;無符號小于則跳轉 JNB ;無符號不小于則跳轉 JBE ;無符號小于等于則跳轉 同JNA JNBE ;無符號不小于等于則跳轉 同JA ? JG ;有符號大于則跳轉 JNG ;有符號不大于則跳轉 JGE ;有符號大于等于則跳轉 同JNL JNGE ;有符號不大于等于則跳轉 同JL ? JL ;有符號小于則跳轉 JNL ;有符號不小于則跳轉 JLE ;有符號小于等于則跳轉 同JNG JNLE ;有符號不小于等于則跳轉 同JG

?

JZ ;為零則跳轉 JNZ ;不為零則跳轉JS ;為負則跳轉 JNS ;不為負則跳轉JC ;進位則跳轉 JNC ;不進位則跳轉JO ;溢出則跳轉 JNO ;不溢出則跳轉 ?

JP ;為偶則跳轉

? JNP ;不為偶則跳轉 JPE ;奇偶位置位則跳轉 同JP JPO ;奇偶位復位則跳轉 同JNP
?


跳轉相關的PSW標志位:

11109876543210OFDFIFTFSFZF?AF?PF?CF













影響標志位的匯編指令:

?

加法指令:ADD、ADC、INC、XADD除了INC不影響CF標志位外,都影響條件標志位。CF、ZF、SF、OFCF最高位是否有進位DF若兩個操作數符號相同而結果符號與之相反OF=1,否則OF=0.減法指令:SUB、SBB、DEC、NEG、CMP、CMPXCHG、CMPXCHG8B前六種除了DEC不影響CF標志外都影響標志位。CMPXHG8B只影響ZF。CF說明無符號數相減的溢出,同時又確實是被減數最高有效位向高位的借位。OF位則說明帶符號數的溢出無符號運算時,若減數>被減數,有借位CF=1,否則CF=0.OF若兩個數符號相反,而結果的符號與減數相同則OF=1.否則OF=0.乘法指令:MUL、IMULMUL:如果乘積高一半為0,則CF和OF位均為0,否則CF和OF均為1.IMUL:如果高一半是低一半符號的擴展,則CF位和OF位均為0,否則就均為1.除法指令:DIV、IDIV對所有條件位均無定義。邏輯指令:AND、OR、NOT、XOR、TESTNOT不影響標志位,其余4種CF、OF、置0,AF無定義,SF、ZF、PF位看情況而定。定位掃描指令:BSF正向位掃描、BSR反向位掃描影響ZF位。

?

指令類型

助記符

對標志寄存器的影響

備注

ZF

CF

PF

SF

OF

AF

DF

IF

TF

?

?

?

?

?

數據傳送類

通用

MOV

?

?

?

?

?

不影響標志位

?

交換

XCHG

?

堆棧操作

PUSH

?

POP

?

?

地址傳送

LEA

?

LDS

?

LES

?

?

累加器專用

IN

?

OUT

?

XALT

?

?

標志寄存器

LAHF

?

SAHF

標志寄存器低八位的內容由AH的值決定

CF,AF,ZF,SF,PF的值會被影響

PUSHF

不影響標志位

?

POPF

標志寄存器的內容由裝入的具體值決定

可能影響所有標志位

?

?

?

?

?

?

?

算術運算類

?

?

加法

ADD

?

?

?

?

ADC

?

?

?

?

INC

?

?

?

?

INC指令不影響CF

AAA

?

?

?

?表示不確定或者未定義

DAA

?

?

?

?

?

?

減法

SUB

?

?

?

?

SBB

?

?

?

?

DEC

?

?

?

?

DEC指令不影響CF

AAS

?

?

?

?

DAS

?

?

?

DAA指令不影響OF

?

乘法

MUL

?

?

?

?

IMUL

?

?

?

?

AAM

?

?

?

?

?

除法

DIV

?

此指令可能會產生中斷,故影響IF,TF

IDIV

?

同上

AAD

?

?

?

?

符號位擴展

CBW

不影響標志位

?

CWD

不影響標志位

?

比較

CMP

由計算結果確定標志位的值

不會影響到DF,IF,TF

?

?

邏輯運算類

?

?

求反

NOT

不影響標志位

?

?

移位

SAL

?

?

?

?

OF標志位只在移位次數是1時有效

AF未定義

SHL

?

?

?

SAR

?

?

?

SHR

?

?

?

?

循環

移位

ROL

?

?

?

?

?

?

?

循環移位指令影響OF和CF

AF未定義

ROR

?

?

?

?

?

?

RCL

?

?

?

?

?

?

RCR

?

?

?

?

?

?

?

AND

置0

置0

?

?

?

?

?

OR

置0

置0

?

?

?

?

?

異或

XOR

置0

置0

?

?

?

?

?

檢測

TSET

置0

置0

?

?

?

?

?

字符串操作

傳送

MOVS

不影響標志位

?

比較

CMPS

由計算結果確定標志位的值

不會影響DF,IF,TF

搜索

SCAS

由計算結果確定標志位的值

不會影響DF,IF,TF

裝入

LODS

不影響標志位

?

填充

STOS

不影響標志位

?

前綴

REP

不影響標志位

?

?

?

?

?

?

?

?

?

程序控制類

無條件轉移

JMP

?

?

?

?

?

不影響標志位

?

?

?

?

?

單個

標志

JS/JNS

SF=1/0,則轉移到目的地址

JZ/ JNZ

ZF=1/0,則轉移到目的地址

JP/JNP

PF=1/0,則轉移到目的地址

JB/JNB

CF=1/0,則轉移到目的地址

JO/JNO

OF=1/0,則轉移到目的地址

若干

標志

位的

邏輯

組合

JA

兩個無符號數比較,A>B

JBE

兩個無符號數比較,A <=B

JG

兩個帶符號數比較,A>B

JGE

兩個帶符號數比較,A>=B

JL

兩個帶符號數比較,A<B

JLE

兩個帶符號數比較,A <=B

?

?

循環控制

LOOP

?

?

不影響標志位

?

LOOPE

?

LOOPNE

?

JCXZ

?

JECXZ

?

?

中斷控制

INT

不影響標志位

?

INTO

?

IRET

影響所有標志位

標志位到恢復中斷以前的狀態

?

?

?

CPU控制指令

?

?

?

標志位操作

CLC

?

?

?

?

?

?

?

?

此指令置CF=0

CMC

?

?

?

?

?

?

?

?

此指令CF取反

STC

?

?

?

?

?

?

?

?

此指令置CF=1

CLD

?

?

?

?

?

?

?

?

此指令置DF=0

STD

?

?

?

?

?

?

?

?

此指令置DF=1

CLI

?

?

?

?

?

?

?

?

此指令置IF=0

STI

?

?

?

?

?

?

?

?

此指令置IF=1

空操作

NOP

?

?

不影響標志位

?

暫停

HLT

?

等待

WAIT

?

交權

ESC

?

總線鎖定前綴

LOCK

?

?




JMP 測試


? ; Test28_1.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? jmp @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main ;測試結果應該是: ;1 ;4 ;以下都應該是這樣.
?


JE 測試


? ; Test28_2.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? mov eax, 123 ? cmp eax, 123 ? je @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JZ 測試


? ; Test28_3.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? xor eax, eax ? jz @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JS 測試


? ; Test28_4.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? xor eax, eax ? dec eax ? js @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JC 測試


? ; Test28_5.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? mov al, 0FFh ? add al, 1 ? jc @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JO 測試


? ; Test28_6.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? mov al, -128 ? sub al, 1 ? jo @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JA 測試


? ; Test28_7.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? mov eax, 22 ? cmp eax, 11 ? ja @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JG 測試


? ; Test28_8.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? mov eax, 1 ? cmp eax, -1 ? jg @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JP 測試


? ; Test28_9.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? mov al, 00001110b ? inc al ? jp @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main
?


JECXZ 測試


? ; Test28_10.asm; .386 .model flat, stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .code main proc ? PrintText '1' ? xor ecx, ecx ? jecxz @F ? PrintText '2' ? PrintText '3' @@: PrintText '4' ? ret main endp end main

總結

以上是生活随笔為你收集整理的【debug】汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。