一个CPU有几个寄存器

Posted 奋斗的码农mj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个CPU有几个寄存器相关的知识,希望对你有一定的参考价值。

寄存器是中央处理机的一个不可分割的一部分。该寄存器是一个有限的存储器容量的高速存储的部件,它们可以被用于临时存储的指令,数据和地址。在中央处理机的控制部分,包含在指令寄存器(IR)和程序计数器(PC)中的寄存器。中央处理器的算术和逻辑组件,该寄存器包含累加器(ACC)。
注册的内存层次结构的顶部,也是最快的方式运行数据系统。注册,例如,他们可以节省数位,通常是衡量一个8位寄存器“或”32位寄存器“。注册登记文件来实现,但它们也可能使用一个单独的触发器来实现的高速的核心内存,薄膜内存以及几台机器上,否则
注册通常意指的输出或输入的指令直接索引到注册组。适当的给他们打电话“的架构寄存器。
例如,x86指令的集合,8个32位寄存器的定义,但执行x86指令集的CPU可以超过8个寄存器。
寄存器CPU内部组件,寄存器具有非常高的识字率,所以非常快速的数据传输寄存器之间进行。
[编辑本段]寄存器使用
寄存器中的数据进行算术和逻辑运算;
地址存储在寄存器可以用来指向内存中的一个位置,即解决; /> 3可用于读取和写入数据的计算机外围设备。
[编辑本段]数据寄存器
8086 14个16位寄存器,14个寄存器按其用途可以分为(1)通用寄存器,(2)指令指针(3)标志寄存器和(4)段寄存器4。
(1)通用寄存器8和可分为两组,一组数据寄存器(4),另一组指针寄存器和变址寄存器(4)。
数据寄存器分为:
AH&AL = AX(累加器):累加器寄存器用来存储操作数的计算中,常用的乘法和除法指令中指定的,所有的I / O指令的使用注册设备传输数据以外
BH&BL = BX(基地):基址寄存器,常用的地址索引;
CH和CL = CX(计数):计数寄存器,常用的计数;通常用于保存所计算的值,如在移位指令,环路(环路),和串行处理指令所暗示计数器。
生署&DL = DX(数据):数据寄存器,常用的数据传输中。
他们的特点是4个16位寄存器,可分为八个高:AH,BH,CH,DH。以及低八:AL,BL,CL,DL。 2个组的8位寄存器可以是单独可寻址的,并且单独使用。
另一组指针寄存器和索引寄存器,包括:
SP(堆栈指针):堆栈指针,与SS配合使用,可以指向当前堆栈位置;
BP(基址指针):基址指针寄存器,可以作为一个相对基地址的SS
SI(指数):源变址寄存器可用来存放相对于DS段的源索引指针;
DI(目的地指数):指数在寄存器的目的,可以使用相对到ES段指针的目的存储索引。
这4个16位寄存器只能进行16位的存取操作,主要用来形成操作数的地址,并使用计算有效地址的操作数堆栈操作和索引操作。
(2)指令指针IP(指令指针)
指令指针IP是一个16位专用寄存器,它指向需要删除当前指令字节BIU删除一个指令字节自动从记忆体IP加1点到下一个指令字节。注意IP点的指令的地址的地址的段内的偏移量的偏移地址(偏移地址)或有效地址(EA和有效地址),也被称为。
(3)标志寄存器FR(标志寄存器)
8086有一个18位的标志寄存器FR和9 FR有意义的,六个状态位和3个控制位。
作者:溢出标志,是用来反映加法和减法的有符号数溢出的结果。如果计算结果超过,可以表示在当前的算术中位数称为溢出作者在值的范围内被设置为1,否则,该值。被清除为0。
DF:方向标志DF位被用来确定的字符串操作指令的执行指针寄存器调整的方向。
IF:中断允许标志IF位是用来决定是否发出的CPU可屏蔽中断响应CPU外部中断请求。然而,无论标志值,CPU必须响应非屏蔽中断的问题,外部中断请求的CPU,以及CPU内部生成的中断请求。具体规定如下:
(1),当IF = 1,CPU响应可屏蔽中断CPU发出中断请求,
(2)IF = 0,CPU不响应CPU外部可屏蔽中断的中断请求发出。
TF:跟踪旗TF。此标志可用于调试。 TF标志没有专门的指令来设置或清除。
如果TF = 1(1)中,CPU是一个单步执行指令每执行的指令对每个寄存器的当前值和CPU将在CPU中执行的下一条指令。
(2)如果TF = 0,在连续模式。
SF:符号标志SF符号位是用来反映该操作的结果,它是相同的操作的结果的MSB。在微计算机系统中,用于补充符号的符号的数目,所以,SF也反映操作结果的符号。的操作的结果是肯定的,则SF有一个值,该值是0,否则,它的值是1。
ZF:零标志ZF用来反映操作的结果是0。如果结果为0,1的值,否则它的值是0。在操作结果是否为0的判断,可以使用这个标志位。
AF:在下列情况下,辅助进位标志AF的值设置为1,否则它的值是0:
(1)低字节到高字节的二进制字操作发生或借用; BR />(2),低4字节的操作中,发生进位或借。
PF:奇偶标志PF用于反映的奇偶校验计算的数字“1”的结果。如果“1”的数目为偶数时,PF值1,否则它的值是0。
CF:进位标志CF主要用来反映操作者是否进位或借。如果MSB操作的结果产生进位或借,那么它的值是1,否则其值为0。为了使用所有的内存空间)
4)段寄存器(段寄存器)
8086套4段寄存器,保存段地址:
CS(代码段):验证码段寄存器;
DS(数据段):数据段寄存器;
SS(堆栈段):堆栈段寄存器;
附加段(ES):附加段寄存器。
时要被执行的一个程序,它是必要的决定的程序代码,数据和堆栈存储器中的什么位置,每次使用指向这些起始位置,通过设置段寄存器CS,DS,SS。一般的DS是固定的,同时可根据需要CS。因此,该程序可以是小于在可寻址空间中被写入的64K的情况下在任何规模的。因此,组合的程序和数据,有限的DS所指的64K的大小,这是COM文件不得大于64K的原因。 8086内存当作战场,注册一个军事基地,以加快工作。
以上是8086寄存器的整体形象,自80386启动PC进入32位时代的寻址模式,寄存器的大小,功能的改变。
=============================下面是一些信息========= 80386寄存器= ============================
寄存器是32位的。
A,通用寄存器
这里是通用寄存器和成语。正如它的名字所暗示的,通用寄存器的寄存器,你可以根据自己的意愿,并它们的值?通常不会造成很大的影响的计算机上运行。最普遍使用的通用寄存器的计算方法。
EAX:通用寄存器。相对于其他寄存器进行评估。在保护模式下,也可以用来作为存储器偏移指针(在这种情况下,DS作为段寄存器或选择器)
EBX:一般用途寄存器。通常作为内存偏移指针的使用(相对的EAX,ECX,EDX),DS是默认的段寄存器的选择。在保护模式下,也可以扮演这个角色。
ECX:通用寄存器。通常是使用一个特定指令的计数。在保护模式下,也可以用来作为存储器偏移指针(在这种情况下,DS寄存器或段选择)。
EDX:通用寄存器。在某些操作中EAX的溢出寄存器(例如乘,除)。在保护模式下,也可以用来作为一个存储器偏移指针(DS段寄存器或选择器)。
AX分为AH&AL上述寄存器包括分组的相应的16 - 位和8位的数据包。在特殊寄存器
ESI
B,作为一个内存指针:通常在内存操作指令的源地址指针的使用。当然,ESI可以装入的任何值,但通常没有人正在使用它作为一个通用寄存器。 DS是默认的段寄存器的选择。
EDI作为目的地址指针内存操作指令通常使用。当然,EDI也可以被加载到任何值,但通常没有人使用它作为一个通用寄存器。 DS是默认的段寄存器的选择。
EBP:这是一个寄存器作为指针。通常情况下,它是一种高级语言编译器的建设的“堆栈帧”来保存局部变量的函数或过程,但是,还是那句话,您可以在其中保存任何您想要的数据。 SS是默认的段寄存器或选择器。
注意,三个寄存器没有相应的8位数据包。换句话说,你可以通过SI,DI,BP作为别名来访问他们的低16位,但有没有办法直接访问的低8。
C,段选择:
实模式下,段寄存器保护模式的选择摇身一变就成了。 ,实时模式下,段寄存器是16位和32位保护模式的选择。
CS代码段,或代码选择。的地址指向到当前正在执行的相同的IP寄存器(后述)。点从该寄存器中,当处理器执行的段(实模式),或存储器(保护模式下),以获得指示。除了跳转或分支指令外,您不能该寄存器的内容。
DS数据段或数据选择器。该寄存器的低16位处理内存与ESI点指令。在同一时间,所有的内存操作指令默认情况下,使用其指定的经营分部(实模式)或内存(作为选择,这个寄存器可以被加载到保护模式中的任何值,但是,必须要小心这样做,首先,将数据发送到AX,然后转移从AX到DS的(当然,也可以通过堆栈)
ES附加段,或额外选择低16位的寄存器同样,该寄存器可以被加载到任何值,类似的方法和DS,连同EDI点的指令来处理与内存。的
FS f片段或F选择器(大概F是免?)可以使用该寄存器默认的段寄存器选择器可装载任何值,相似的方法和DS的替代品。
GS G或G选择器(G和F的意义,没有任何文件对英特尔解释),它几乎完全是相同的,FS。
SS堆栈段或堆栈选择低16位寄存器一起ESP指向下一个堆栈操作(push和pop)堆栈地址。寄存器可以也可装入任何数值,你可以推和弹出操作要分配给他,但栈中的许多操作具有非常重要的意义,因此,不正确的可能会导致损坏的堆栈。<BR / *注意一定不在初学阶段,在迷宫中迷路了,这些寄存器进行编译。他们是非常重要的,一旦你掌握了它们,你可以做任何操作的段寄存器,或选择不指定,使用默认的这些话,可能现在看来,可能有点稀里糊涂的情况下,你很快就会知道如何做到这一点在后面的指令指针寄存器。

EIP寄存器,非常这是一个32位宽的寄存器,点该指令一起执行CS地址不能直接该寄存器的值,跳转或分支指令,它是唯一的方法。(CS默认的段或选择器)
以上的基本寄存器。有一些其他寄存器,你可能不会甚至听说过他们。(包括32-bit宽):
CR0,CR2,CR3(控制寄存器)。给你举个例子,CR0的作用是切换到实模式和保护模式。
有一些其他的寄存器,D0,D1,D2,D3,D6和D7(调试寄存器)。他们作为调试器硬件支持,可以设置条件断点。
TR3,TR4 ,TR5,TR6和TR注册为一定条件下的测试(测试寄存器)。

以上是关于一个CPU有几个寄存器的主要内容,如果未能解决你的问题,请参考以下文章

cpu中都有哪些寄存器资源,他们的初始值分别是多少

Verilog中reg寄存器位宽[1:0]和[WIDTH-1:0]的区别?

第2章 寄存器(CPU工作原理)(下)

第2章 寄存器(CPU工作原理)(下)

关于arm板上的 spi控制器 的工作原理

关于寄存器的总结