1.通用数据传送指令

指令名称 功能 备注
mov(MOV) 传送赋值 英文(move)      例子:mov a,b 把b的值传给a
push(PUSH) 压栈 英文(Push noto the stack)
pop(POP) 出栈 英文(pop from the stack)    例子: 由于堆栈平衡原理,所以有push就有pop
xchg(XCHG) 交换 英文(Exchange)

2.标志寄存器传送指令

指令名称 功能 备注
pushf(PUSHF) 标志进栈 英文(push the flag)
popf(POPF) 标志出栈 英文(pop the flag)

3.条件跳转(一般配合cmp使用)

指令名称 指令英文全拼 功能 备注
jmp(JMP) jump 无条件跳转 强制跳转
jz(JZ)/je(JE) jump if zero,or equal 结果为0(相等)跳转 检测Z位
jnz(JNZ)/jne(JNE) jump if not zero,or not equal 结果不为0(不相等)跳转 检测Z位
js(JS) jump if sign 结果为负跳转 检测S位
jns(JNS) jump if not sign 结果为正跳转 检测S位
jb(JB) jump below 比较小于跳转 检测C位
jnb(JNB) jump not below 比较大于或者等于跳转 检测C位

What is Z位 S位 C位?

0x01认识OD中在寄存器窗口中认识了标志寄存器,如图:
\"标志寄存器\"

这里用jnz去举例,jnz的判断检查Z位,当Z位是0的时候就跳转,在Z位是1的时候就不跳转

\"Z=1\"

\"Z=0\"

4.子程序

指令名称 指令英文全拼 功能
call(CALL) CALL 调用子程序或者函数
ret(RET) return 返回到

5.循环指令

LOOP loop

6.算数指令

指令名称 功能
add(ADD) 加法
sub(SUB) subr(SUBR) 减法
mul(MUL) 乘法
div(DIV) divr(DIVR) 除法

6.空指令

空指令:nop

7.比较指令

比较指令:cmp

例如:cmp x,y      比较x,y是否相等

收藏 打印