EAX、ECX、EDX、EBX寄存器的作用

一般寄存器:AX、BX、CX、DX
AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器

索引暂存器:SI、DI
SI:来源索引暂存器,DI:目的索引暂存器

堆叠、基底暂存器:SP、BP
SP:堆叠指标暂存器,BP:基底指标暂存器

EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元
ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。

比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。

这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。

EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。

EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。

ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。

EDX 则总是被用来放整数除法产生的余数。

ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.

EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:
  
  push ebp ;保存当前ebp
  mov ebp,esp ;EBP设为当前堆栈指针
  sub esp, xxx ;预留xxx字节给函数临时变量.
  ...
  
  这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.

ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。



386部分寄存器:



状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。

这几个寄存器中保存全局性和任务无关的机器状态。

CR0中包含了6个预定义标志,0位是保护允许位PE(Protedted Enable),用于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运行。1位是监控协处理位MP(Moniter coprocessor),它与第3位一起决定:当TS=1时操作码WAIT是否产生一个“协处理器不能使用”的出错信号。第3位是任务转换位(Task Switch),当一个任务转换完成之后,自动将它置1。随着TS=1,就不能使用协处理器。CR0的第2位是模拟协处理器位 EM (Emulate coprocessor),如果EM=1,则不能使用协处理器,如果EM=0,则允许使用协处理器。第4位是微处理器的扩展类型位ET(Processor Extension Type),其内保存着处理器扩展类型的信息,如果ET=0,则标识系统使用的是287协处理器,如果 ET=1,则表示系统使用的是387浮点协处理器。CR0的第31位是分页允许位(Paging Enable),它表示芯片上的分页部件是否允许工作。

CR1是未定义的控制寄存器,供将来的处理器使用。

CR2是页故障线性地址寄存器,保存最后一次出现页故障的全32位线性地址。

CR3是页目录基址寄存器,保存页目录表的物理地址,页目录表总是放在以4K字节为单位的存储器边界上,因此,它的地址的低12位总为0,不起作用,即使写上内容,也不会被理会。

这几个寄存器是与分页机制密切相关的,因此,在进程管理及虚拟内存管理中会涉及到这几个寄存器,读者要记住CR0、CR2及CR3这三个寄存器的内容。


esp:寄存器存放当前线程的栈顶指针
ebp:寄存器存放当前线程的栈底指针

eip:寄存器存放下一个CPU指令存放的内存地址,当CPU执行完当前的指令后,从EIP寄存器中读取下一条指令的内存地址,然后继续执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单的Delegate(委托)例子

今天学习一下好久都不愿意碰的Delegate,虽然不是很明白,还是写了一个小例子(参考园子里的朋友们的),希望加深一下印象.朋友们说它类似于C的函数指针,指向一个函数,运行的时候可以调用这个函数.步骤:1. 声明一个delegate对象。2. 实现和delegate具有相同参数和返回值的函数实现&…

汇编语言——第2次上机实验

实验要求: 求表达式x*yz-200的值 实验步骤: 1.按照实验要求,画出相应的计算流程图 可以看到,先算x*y(保存在dx:cx),然后扩展z为双字节(dx:ax)&am…

【第二届】Erlang Fans交流会(补充事宜)

详细参见:http://erlang-china.org/news/erlang-fans-fair.html 这里做些补充: 考虑到上海到珠海坐春秋航空的飞机有特价机票,本次活动的讲师也可报销上海至珠海来回的飞机票(要求是春秋航空)。 报名(普通参…

Codeforce 189B——Counting Rhombi

题意:给定一个矩形的长和宽,求这个矩形里有多少个菱形(可重叠)。 思路:规律题。小学3年级的练习题,直接找有多少的偶数对角线(横纵相乘),两重循环,暴力即可。…

SQL Server 2005 中附加只有mdf文件的数据库(修复置疑的数据库)

在利用VSTS中,VSTS不能创建团队项目,数据库ReportServer出现置疑现象,数据库无法打开。修复过程中,由于想利用SQL SERVER 2000的功能,先备份了ReportServer库文件和日志文件,然后删除数据库。在此之前先进行…

UVA 473——Raucous Rockers

题意:给定n个数,放到m个容器里,每个容器的容量是t(n个数的累加和不超过t),在不打乱放的顺序的情况下问最多能放多少个数? 思路:多维dp,f[i][j[k]表示前i个数放到第j个容器…

ZOJ 3932——Handshakes

题意:有n个学生分别进入房间,给出他进房间的时候的与他握手的朋友数v[i],求最多的朋友的个数。 思路:水,从最后一个往前递推,求出当i坐下后他与朋友握手的次数,然后加上他刚进房间时握手的次数即可。 code&…

STL中bitset的用法的整理

构造函数bitset<n> b;b有n位&#xff0c;每位都为0.参数n可以为一个表达式.如bitset<5> b0;则"b0"为"00000";bitset<n> b(unsigned long u);b有n位,并用u赋值;如果u超过n位,则顶端被截除如:bitset<5>b0(5);则"b0"为&quo…

想起温习一下JS中的this apply call arguments

很多时候讲到语言入门&#xff0c;大家会认为就是要了解一下语言的语法、数据类型和常用函数。这一课对于所有的计算机专业的毕业生来说都可以自学&#xff0c;然而在最近的实践中&#xff08;带了两个实习生自学js&#xff09;&#xff0c;我发现他们在学习js的时候会被这几个…

BZOJ 2818——Gcd

题意&#xff1a;给定n&#xff0c;求gcd&#xff08;x,y)p 的对数&#xff0c;其中&#xff08;1<x<y<n) 思路&#xff1a; 求(x, y) k, 1 < x, y < n的对数等于求(x, y) 1, 1 < x, y < n/k的对数&#xff01;所以&#xff0c;枚举每个质数p&#xff0…

刚安装Vs2008,安装时它弹出了一个一些常见问题的解决方案页,记录下

以此作为记录&#xff0c;以防出现问题时找不到解决方案 http://download.microsoft.com/download/5/2/6/52681ab9-da31-46bd-aef7-e2cb928f48ca/VSReadme.htm 转载于:https://www.cnblogs.com/hanxianlong/archive/2007/11/02/946392.html

关于资料和总结

ACM常用资料以及速查 数论及数学递推 康托展开 反素数 约数和定理 原根 Lucas定理 中国剩余定理 ploya定理 博弈树 Bell数 搜索以及图论 启发式搜索技术A* DLX精确覆盖 博客2

是否会成为问题——Linq to Sql的执行可能无法复用查询计划

查询计划 Sql Server在执行一条查询语句之前都对对它进行“编译”并生成“查询计划”&#xff0c;查询计划告诉Sql Server的查询引擎应该用什么方式进行工作。Sql Server会根据当前它可以收集到的各种信息&#xff08;例如内存大小&#xff0c;索引的统计等等&#xff09;把一条…

第七届山东省Acm程序设计竞赛赛后总结

其实这次相对来说是比较轻松的&#xff0c;经过差不多2年的磨合&#xff0c;大家的默契度已经配合的足够熟练&#xff0c;而对于考场的压力和紧张感&#xff0c;相比去年前几次要放松许多&#xff0c;说来实在奇怪&#xff0c;去年我们嚷嚷着要拿XXX&#xff0c;到最后一无所获…

再别康桥

轻轻的我走了&#xff0c;正如我轻轻的来&#xff1b;我轻轻的招手&#xff0c;作别西天的云彩。那河畔的金柳是夕阳中的新娘波光里的艳影&#xff0c;在我的心头荡漾。软泥上的青荇&#xff0c;油油的在水底招摇&#xff1b;在康河的柔波里&#xff0c;我甘心做一条水草那树荫…

Java在ACM中的应用

Chapter I. Java的优缺点各种书上都有&#xff0c;这里只说说用Java做ACM-ICPC的特点&#xff1a; (1) 最明显的好处是&#xff0c;学会Java&#xff0c;可以参加Java Challenge :) (2) 对于熟悉C/C的程序员来说&#xff0c;Java 并不难学&#xff0c;找本书&#xff0c;一两…

Lucas定理及组合数取模

首先给出这个Lucas定理&#xff1a; A、B是非负整数&#xff0c;p是质数。AB写成p进制&#xff1a;Aa[n]a[n-1]...a[0]&#xff0c;Bb[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同余 即&#xff1a;Lucas(n,m,p)c(n%p,m%p)*Luc…

系统优化设置-之二

5、关掉不必要的服务 单击“开始”→“设置”→“控制面板”。双击“管理工具”→“服务”&#xff0c;打开后将看到服务列表&#xff0c;有些服务已经启动&#xff0c;有些则没有。右键单击要配置的服务&#xff0c;然后单击“属性”。在“常规”选项卡上选择“自动”、“手动…

CCPC网络赛前一周的充电计划

CCPC大概还有一周左右的时间&#xff0c;在这一周内&#xff0c;要补充一些数学内容&#xff0c;避免出现像去年学长们一样出现的情况&#xff0c;不能出现在碰到相关题目的时候面面相嘘不知所以然。 所以这几天的计划大体是&#xff1a; 1. Lucas定理 : 题库 2. 中国剩余定…

解决手机死机之锦囊妙计

引言 不久前买的586W我的是T版的英文说明书,只见说明书中介绍说如果死机的话只须拔掉电池重新安回即可.当时我就郁闷了拔电池呀?多伤机器呀?有一次下载了个JAVA游戏,刚运行就死机了(游戏BUG).于是我便想到了说明书中说道的拔电池.思前想后还是没拔,怕伤了机器;我抱着试试…