1.4.1 沒必要記住所有的組譯指令

  • 實際上我們需要掌握的指令只有20~50條左右,以作者主觀偏見選出常用的組譯指令:
指令 範例 含義 說明
MOV MOV EAX, ECX EAX = ECX 將ECX的值存入EAX
ADD ADD EAX, ECX EAX += ECX 將EAX的值加上ECX的值
SUB SUB EAX, ECX EAX -= ECX 將EAX的值減去ECX的值
INC INC EAX EAX++ 將EAX的值加1
DEC DEC EAX EAX-- 將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, 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

results matching ""

    No results matching ""