寄存器的作用有哪些
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
寄存器的作用有哪些?
寄存器用途
1.可将寄存器内的数据执行算术及逻辑运算;
2.存于寄存器内的地址可用来指向内存的某个位置,即寻址;
3.可以用来读写数据到电脑的周边设备。
AX 累加器,得名原因是最初常使用ADD AX,n这样的指令
CX 计数器,得名原因是最常使用CX的值作为重复操作的次数
BX 常用作地址寄存器,如MOV AX,[BX],把BX所指地址中的数取到AX中去
DX 通用寄存器
都是16位寄存器
E前缀是他们的32位版本
他们的地位都是平等的,也不仅限于规定的作用,很多时候可以通用,爱用哪个用哪个。
今天看了几个关于cpu寄存器一些帖子,感觉上他们所说的好象没有说明cpu寄存器的作用。
我从我现在所了解的知识,与大家讲一讲,共同学习一下吧。
先讲CPU的一些分类。
第一,从cpu的种类来分寄存器来分的话。
有Motorola 68x00、Intel IA-32、SUN Sparc、Vax和IB M-370等,不同种类的cpu,都有与其对应的寄存方法与方式。
对我们来说,一般都x86的,即我常说的英特尔公司与AMD公司生产的cpu,这可能占世界上个人PC的90%多吧。
第二,从这一条起,我们所讲的寄存器都是以x86为基础的,那么这种CPU内,寄存器可分为以下几种。
其一,是EAX、EBX、ECX、EDX等通用寄存器。
其二呢,是CS、SS、ES等段寄存器。
其三呢,是EIP,也称为指令指针。
其四呢,EFLAGS寄存器,俗称为标志寄存器。
其五,浮点单元,这里面之所以只浮点单元,是因为在它里面还有一些小的寄存分类,主要是数学上的浮点上的计算。
其六呢,MMX
指令使用的8个64位寄存器。
其七呢,单指令、多数据操作(SIMD,single-instruction,multiple-data)使用的8个128位XMM寄存器。
以上是CPU的一些分类的常用知识,其中,对我们大多数人来讲,需要了解与知道的是x86这类的,也就是我们所说的IA-32系列CPU。
也许有人会说AMD的CPU,这不用担心,它是兼容INTEL的,这不用我们担心的事情,那么我们主要了解的是IA-32这一类的结构,这些方面需要我们花一些时间去了解。
如果我们只是需要一般的编程的话,我们了解上面这些就可以了。
因为在C/C++、Java、Perl等这些编程的话,寄存器的使用一般不需要。
但是如果进行汇编语言编程的话,那我们还需要对更加深入的了解。
好了,下面我开始讲解一些与汇编语言编程有关寄存器的作用与结构粗陋地讲解一些,不过先要说明一些,我对这些不是很精通,我也只是一般的了解,如果大家深入的学习的话,我介绍二本书给大家。
不过很难买到,只要大家用心去买,还是可以买到的,第一本是《Intel汇编语言程序设计》,我买的是第四版。
第二本是Intel微系统结构与汇编语言,具体的名字我记不清,是一本厚的书。
它是第一本的基础,但是它显得有点旧,但是它286开始介绍的。
很值得去看看。
如果说仅仅用一个帖子把寄存器的作用与使用说明,我则只能说我不行,但是从它的一般的使用与了解的话,我想也只是几句话而已。
从结构上看CPU的寄存器,它实际上是CPU的一部分。
这包括后来,也是现在所流行的64位双核CPU,都是如此。
从内存的使用角度上来讲的话,CPU的寄存器,它是内存的一部分,但是从快速的角度上来,寄存器它似乎不存在着地址的问题,因为是它是CPU的操作的最近的一部分,也是CPU执行时第一个要访问的第一个地方,但是它作用是存储用的。
只是存储的内容不一定是指令,还有可能是地址,或者说是一些标志。
这都是有可能的。
说上二句所谓的题外话,CPU的寄存器,从最基本上来讲,它只是一个个容器而已。
那么依据它的
分类,可分为通用寄存器,从通用上来讲,它所存储的东西,只要它的容积所容许的话,什么都是可以存储的,而段寄存器呢,它所存储的只能是地址,它的作用是从寻址上可以体现出来,而标志寄存器呢,那么所存储的是与CPU的每一个执行的指令有关。
是关系到CPU每一个指令的执行相关内容与特殊的关联,即CPU所执行的指令是否违规,它的指令是否有进位,它的指令是否有溢出,都是在标志寄存器中能表现与表达出来。
所有这些细则,只有通过学习后才能知道的。
好了,我只能说这些了,如果有说错的地方,还高人指出,加以指正与批评,谢谢。
专用寄存器的作用
16位CPU内部有一个16位的标志寄存器,它包含9个标志位。
这些标志位主要用来反映处理器的状态和运算结果的某些特征。
各标志位在标志寄存器内的分布如图2.2所示。
1514131211109876543210
OFDFIFTFSFZF AF PF CF
31 (17161514131211109876543210)
……VMRF NTIOPLOF DFIFTFSFZF AFPFCF
图2.2 16位/32位标志寄存器的示意图
上面9个标志位可分为二组:运算结果标志位和状态控制标志位。
前者受算术运算和逻辑运算结果的影响,
后者受一些控制指令执行的影响。
更详细的内容标志位的说明。
有些指令的执行会改变标志位,不同的指令会影响不同的标志位,有些指令的执行不改变任何标志位,有些指令的执行会受标志位的影响,也有指令的执行不受其影响。
程序员要想熟练运用这些标志位,就必须掌握每个标志位的含义、每条指令的执行条件和执行结果对标志
位的作用。
注意:虽然知道每个标志位在标志寄存器内的具体位置是有好处的,但通常情况下,没有这个必要。
在使用第5.2.9节中的“条件转移指令”时,系统会自动引用相应标志位的值来决定是否需要“转移”的,所以,
不必过分强调标志位在标志寄存器内的具体位置。