type
status
date
slug
summary
tags
category
icon
password
指令 | 示例 | 含义 | 说明 |
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 0x04001000} | 若ZF为1,则跳转到0x04001000 |
JNE(JNZ) | JNE 04001000 | if(ZF==0){GOTO 0x04001000} | 若ZF为0,则跳转0x04001000 |
JMP | JMP 04001000 | GOTO 0x04001000 | 无条件跳转到0x04001000 |
CALL | CALL main | main() | 调用main函数 |
PUSH | PUSH 00000001 | 压栈(将值送入栈中) | 将00000001入栈 |
POP | POP EAX | 弹栈(将值送出栈外) | 出栈并出栈的值存入EAX |
AND | AND EAX,EBX | 按位与运算 | 1011与0010做与运算(相同1才为1)所以为0010 |
OR | OR EAX,EBX | 按位或运算 | 1011与0010做或运算(有一为一)所以为1011 |
NOT | NOT EAX | 按位非运算 | 1010做非运算(0与1反过来)所以为0101 |
XOR | XOR EAX,EBX | 按位异或运算 | 1011与0010做异或运算(相同为0,不同为1)所以为1001 |
说明
上一次运算结果为0,则ZF寄存器为1(如果运算结果为1,则ZF寄存器为0)