现在的位置: 首页 > 综合 > 正文

8个32位的常规目的寄存器

2013年12月07日 ⁄ 综合 ⁄ 共 925字 ⁄ 字号 评论关闭
字体变小字体变大

8个32位的常规目的寄存器

 

地址

 

名称

 

描述

 

EAX*

 

累加器

 

计算操作数和存放结果数据

 

EBX

 

基础寄存器

 

指向DS数据段的数据指针

 

ECX*

 

计数寄存器

 

字符串和循环操作的计数器

 

EDX*

 

数据寄存器

 

输入/输出指针

 

ESI

 

源索引

 

字符串操作的源地址指针

 

EDI

 

目的索引

 

字符串操作的目的地址指针

 

ESP

 

栈指针

 

栈指针,不能直接使用

 

EBP

 

基址指针

 

栈的数据指针

 

注意:尽管它们被称为通用寄存器,但只有标了‘*’号的寄存器能在Windows编程中通用。

 

6个16位的段寄存器,定义内存中的段

 

地址

 

名称

 

描述

 

CS

 

代码段

 

存储指令和执行的地方

 

DS, ES, FS, GS

 

数据段

 

数据段

 

SS

 

堆栈段

 

当前程序存储堆栈的地方

 

2个32位的不属于任何种类的寄存器

 

地址

 

名称

 

描述

 

EFLAGS

 

代码段

 

状态、控制和系统标志

 

EIP

 

指令指针

 

下一条将要执行指令的地址

 

 

 

 

基本指令集

 

X86指令非常多,但我们通常都无需全部用到。下面的一些简单指令是你一开始就要掌握的:

 

指令

 

描述

 

ADD* reg/memory, reg/memory/constant

 

将两个操作数作加法运算,并将结果存入到第一个操作数,如果有进位则会设置CF标志。

 

SUB* reg/memory, reg/memory/constant

 

从第一个操作数中减去第二个操作数,并将结果存入到第一个操作数中

 

AND* reg/memory, reg/memory/constant

 

在操作数之间执行逻辑位与运算,并将结果存入到第一个操作数中

 

OR* reg/memory, reg/memory/constant

 

在操作数之间执行逻辑位或运算,并将结果存入到第一个操作数中

 

XOR* reg/memory, reg/memory/constant

 

在操作数之间执行逻辑位异或运算,并将结果存入到第一个操作数中。注意不能XOR两个内存操作数。

 

MUL reg/memory

 

将操作数与累加器(eax)相乘,并将结果存入累加器

 

DIV reg/memory

 

从累加器中除以操作数,并将结果存入累加器

 

INC reg/memory

 

将操作数的值增1,并将结果存回到操作数中

 

DEC reg/memory

 

抱歉!评论已关闭.