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
如果还有一些常用的,欢迎大家留言指出,我会继续补充。
,