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
如果還有一些常用的,歡迎大家留言指出,我會繼續補充。
閱讀更多 老霍工作室 的文章