汇编寄存器列表

通用寄存器 
下面介绍通用寄存器及其习惯用法。顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,

修改他们的值通常不会对计算机的运行造成很大的影响。通用寄存器最多的用途是计算。

EAX 
32-bit宽 
 通用寄存器。相对其他寄存器,在进行运算方面比较常用。在保护模式中,也可以作为内存偏移指针(此

时,DS作为段 寄存器或选择器)  
EBX 
32-bit宽 
 通用寄存器。通常作为内存偏移指针使用(相对于EAX、ECX、EDX),DS是默认的段寄存器或选择器。在

保护模式中,同样可以起这个作用。  
ECX 
32-bit宽 
 通用寄存器。通常用于特定指令的计数。在保护模式中,也可以作为内存偏移指针(此时,DS作为 寄存

器或段选择器)。  
EDX 
32-bit宽 
 通用寄存器。在某些运算中作为EAX的溢出寄存器(例如乘、除)。在保护模式中,也可以作为内存偏移

指针(此时,DS作为段 寄存器或选择器)。 

上述寄存器同EAX一样包括对应的16-bit和8-bit分组。

ESI 
32-bit宽 
 通常在内存操作指令中作为“源地址指针”使用。当然,ESI可以被装入任意的数值,但通常没有人把它

当作通用寄存器来用。DS是默认段寄存器或选择器。  
EDI 
32-bit宽 
 通常在内存操作指令中作为“目的地址指针”使用。当然,EDI也可以被装入任意的数值,但通常没有人

把它当作通用寄存器来用。DS是默认段寄存器或选择器。  
EBP 
32-bit宽 
 这也是一个作为指针的寄存器。通常,它被高级语言编译器用以建造‘堆栈帧'来保存函数或过程的局部

变量,不过,还是那句话,你可以在其中保存你希望的任何数据。SS是它的默认段寄存器或选择器。 

注意,这三个寄存器没有对应的8-bit分组。换言之,你可以通过SI、DI、BP作为别名访问他们的低16位,

却没有办法直接访问他们的低8位。

特殊寄存器(指向到特定段或内存的偏移量):

EIP 这个寄存器非常的重要。这是一个32位宽的寄存器 ,同CS一同指向即将执行的那条指令的地址。不能

够直接修改这个寄存器的值,修改它的唯一方法是跳转或分支指令。(CS是默认的段或选择器) 

ESP 这个32位寄存器指向堆栈中即将被操作的那个地址。尽管可以修改它的值,然而并不提倡这样做,因

为如果你不是非常明白自己在做什么,那么你可能造成堆栈的破坏。对于绝大多数情况而言,这对程序是

致命的。(SS是默认的段或选择器) 

IP: Instruction Pointer, 指令指针 
SP: Stack Pointer, 堆栈指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值