常用x86彙編指令整理

X86彙編指令很多,如果不是專業用匯編語言開發程序,完全沒有必要記憶那麼多指令,若只用於調試軟件只要記住常用的指令就可以了,遇到不常用的到時候先查也來得及,不影響工作。

常用x86彙編指令整理

彙編語言源代碼

MOV

示例:MOV EAX,ECX 含義:EAX=ECX 解釋:將ECX的值儲存到EAX

ADD

示例:ADD EAX,ECX 含義:EAX=EAX+ECX 解釋:將EAX的值加上ECX的值

SUB

示例:SUB EAX,ECX 含義:EAX=EAX-ECX 解釋:將EAX的值減去ECX的值

INC

示例:INC EAX 含義:EAX+1 解釋:將 EAX 的值加 1

DEC

示例:DEC EAX 含義:EAX-1 解釋:將 EAX 的值減 1

LEA

示例:LEA EAX,[ECX+4] 含義:EAX = ECX+4 解釋:將 ECX+4 的值存入 EAX

CMP

示例:CMP EAX,ECX

含義:

if(EAX == ECX){ZF=1} else ZF=0

解釋:對兩個值進行比較並根據結果設置標誌,若 EAX 與 ECX 相同,則 ZF=1,若 EAX 與 ECX 不同,則 ZF=0

TEST

示例:TEST EAX

含義:

if(EAX == 0) ZF=1 else ZF=0

解釋:將值與 0 進行比較並根據結果設置標誌,若 EAX 為 0,則 ZF=1,若 EAX 不為 0,則 ZF=0

JE(JZ)

示例:JE 04001000 含義:if(ZF==1)GOTO 04001000 解釋:若 ZF 為 1,則跳轉到 04001000

JNE(JNZ)

示例:JNE 04001000 含義:if(ZF==0) GOTO 04001000 解釋:若 ZF 為 0,則跳轉到 04001000

JMP

示例:JMP 04001000 含義:GOTO 04001000 解釋:無條件跳轉到 04001000

CALL

示例:CALL lstrcmpW 解釋:調用 lstrcmpW

PUSH

示例:PUSH 00000001 解釋:將 00000001入棧

POP

示例:POP EAX 解釋:出棧並將獲取的值存入EAX

如果還有一些常用的,歡迎大家留言指出,我會繼續補充。


分享到:


相關文章: