OllyICE 反汇编教程及汇编命令详解[转]
2009-02-11 08:09
OllyICE 反汇编教程及汇编命令详解
内容目录
计算机寄存器分类简介
计算机寄存器常用指令
一、常用指令
二、算术运算指令
三、逻辑运算指令
四、串指令
五、程序跳转指令
------------------------------------------
计算机寄存器分类简介:
32位 CPU 所含有的寄存器有:
4个数据寄存器(EAX、EBX、ECX 和 EDX)
2个变址和指针寄存器(ESI 和 EDI) 2个指针寄存器(ESP 和 EBP)
6个段寄存器(ES、CS、SS、DS、FS 和 GS)
1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)
1、数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访
问存储器的时间。
32位 CPU 有4个32位的通用寄存器 EAX、EBX、ECX 和 EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX 和 DX,它和先前的 CPU 中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、
DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器 EAX 通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用
于乘、 除、输入/输出等操作,使用频率很高;
寄存器 EBX 称为基地址寄存器(Base Register)。它可作为存储器指针来使用;
寄存器 ECX 称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用 CL 来指
明移位的位数;
寄存器 EDX 称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数
参与运算,也可用于存放 I/O 的端口地址。
在16位 CPU 中,AX、BX、CX 和 DX 不能作为基址和变址寄存器来存放存储单元的地址,
在32位 CPU 中,其32位寄存器 EAX、EBX、ECX 和 EDX 不仅可传送数据、暂存数据保存
算术逻辑运算结果,
而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
2、变址寄存器
32位 CPU 有2个32位通用寄存器 ESI 和 EDI。
其低16位对应先前 CPU 中的 SI 和 DI,对低16位数据的存取,不影响高16位的数据。
寄存器 ESI、EDI、SI 和 DI 称为变址寄存器(Index Register),它们主要用于存放存储单元在
段内的偏移量,