OllyDbg---汇编指令

汇编指令

NOP 无操作

  • 运行这条指令时,不会对寄存器、内存以及堆栈造成任何影响,也就是无操作。

  • 当用一个短指令来替换一个长指令时,如果处理器没有错误,多余的空间将会被NOP填充。

  • 适当数目的NOP指令可以将其他指令完全替换掉。

PUSH

  • 将操作数压入到堆栈顶部,新压入的值总是在堆栈的顶部,不会改变下边的数据。
  • 注意:PUSH 401008、PUSH [401008]的含义是不同的。
    • PUSH 401008是把数值401008压入到堆栈顶部
    • PUSH [401008]是将内存单元401008中存储的内容,压入到堆栈中,而且被倒序放置。

POP

  • 出栈,取出栈顶部的第一个值,然后存放到指定的目标地址内存单元中,比如,POP EAX,从栈顶中取出第一个值存放到EAX中, 随后的一个值就会变为栈顶。

PUSHAD

  • 把所有通用寄存器的内容按顺序压入到堆栈中

POPAD

  • 与PUSHAD相反,从堆栈中取值,并将取到的内容放到相应的寄存器中
PUSHAD 等价于 'PUSH AX, CX, DX, BX, SP, BP, SI, DI'。
POPAD 等价于  'pop DI, SI, BP, SP, BX, DX, CX, AX'。

MOV

  • 将第二个操作数赋值给第一个操作数

MOVSX

  • 第二个操作数可能是一个寄存器,也可能是一个内存单元,第一个操作数的位数可能比第二个操作数多,第二个操作数的符号位将会填充第一个操作数的剩余部分。

MOVZX

  • 和MOVSX类似,但是第一个操作数的剩余部分将会用0填充。

LEA取地址指令

  • 类似于MOV指令,第一个操作数是一个寄存器,第二个操作数是一个内存单元,将指定地址存放到寄存器中。

XCHG交换

  • 将两个操作数的值进行交换
原文地址:https://www.cnblogs.com/KX-Lau/p/12928752.html