寄存器详解

寄存器
注:名字以字母‘E’开头的寄存器表示32位,如EAX 32位,AX 16位,AL是低8位,AH是8-15位

32位CPU的8个通用寄存器:EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI
数据寄存器EAX, EBX, ECX, EDX
EAX:累加寄存器,是很多加法乘法指令的缺省寄存器
EBX:基址寄存器,在内存寻址时存放基地址
ECX:计数寄存器,是重复(REP)前缀指令和LOOP指令的内定计数器
EDX:数据寄存器,总是被用来放整数除法产生的余数

段寄存器
DS: 段寄存器,指向当前运行着的程序的数据段。
ES: 额外的段寄存器
SS: 栈段寄存器,指向栈段

索引寄存器ESI, EDI
ESI:源索引寄存器
EDI:目的索引寄存器
在很多字符串操作指令中,DS:ESI指向源串,而ES:EDI指向目标串

指针寄存器
IP:指令指针寄存器,存储的是CPU下次要执行的指令的地址,CS:IP用来指示当前运行的指令地址,不能直接访问CS,也不能直接访问IP
BP:基址指针寄存器,也叫栈基址寄存器,存储的是栈的栈底指针,经常被用作高级语言函数调用的“框架指针”(frame pointer)。
一个标准的函数起始代码如下:
push ebp;保存当前ebp
mov ebp, esp;EBP设为当前堆栈指针
sub esp, xxx;预留xxx字节给函数临时变量
这样一来,EBP构成了该函数的一个框架,在EBP上放分别是原来的EBP,返回地址和参数。EBP下方则是临时变量,函数返回时作mov esp,ebp/pop ebp/ret即可
SP:ESP寄存器存储的栈的栈顶指针,始终指向栈顶。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值