zoukankan      html  css  js  c++  java
  • 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交换

    • 将两个操作数的值进行交换
  • 相关阅读:
    HTML DOM 教程Part5 [DOM 冷门对象] 摘录自W3C School
    Javascript DOM 的节点操作示例
    CSS 教程Part2 [背景、文本、字体](摘录自 W3C School)
    Stream Part.1
    Thread.Join() 方法
    CSS 教程Part3 [列表、表格、轮廓](摘录自 W3C School)
    使用委托异步调用方法让程序并行运行
    JSON 数据格式
    C# WinForm 程序中获取本机IP地址
    微软示例代码 for ManualResetEvent
  • 原文地址:https://www.cnblogs.com/KX-Lau/p/12928752.html
Copyright © 2011-2022 走看看