读《有趣的二进制》了解的常用汇编指令

提醒

作者指出此处以通俗易懂为主,相应的失去了准确性,如需深入了解,务必深入查询

指令 示例 含义 说明
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

猜你喜欢

转载自blog.csdn.net/weixin_45759668/article/details/107351122