CPU中有哪些主要寄存器?简述这些寄存器的功能?

如题所述

1、通用寄存器组

通用寄存器组包括AX、BX、CX、DX4个16位寄存器,用以存放16位数据或地址。也可用作8位寄存器。用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。

2、段寄存器

采用分段技术来解决。将1MB的存储空间分成若干逻辑段,每段最长64KB,这些逻辑段在整个存储空间中可浮动。

3、指针和变址寄存器

这组寄存器存放的内容是某一段内地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。

4、指令指针寄存器IP

用来存放将要执行的下一条指令在现行代码段中的偏移地址。程序运行中,它由BIU自动修改,使IP始终指向下一条将要执行的指令的地址,因此它是用来控制指令序列的执行流程的,是一个重要的寄存器。

扩展资料:

寄存器工作原理

寄存器应具有接收数据、存放数据和输出数据的功能,它由触发器和门电路组成。只有得到“存入脉冲”(又称“存入指令”、“写入指令”)时,寄存器才能接收数据;在得到“读出”指令时,寄存器才将数据输出。 

寄存器存放数码的方式有并行和串行两种。并行方式是数码从各对应位输入端同时输入到寄存器中;串行方式是数码从一个输入端逐位输入到寄存器中。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-08-18
不同架构的CPU寄存器是不一样的,即使是同一架构,不同型号的CPU也有差别。这里以80386的CPU为例,寄存器分为6类。其中可供应用程序员使用的为通用寄存器(EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI)、段寄存器(CS、DS、SS、ES、FS、GS)和标志和控制寄存器(EIP、EFLAGS)。各寄存器介绍如下:

1、通用寄存器(32位)

EAX:一般用作累加器

EBX:一般用作基址寄存器(Base)

ECX:一般用来计数(Count)

EDX:一般用来存放数据(Data)

ESP:一般用作堆栈指针(Stack Pointer)

EBP:一般用作基址指针(Base Pointer)

ESI:一般用作源变址(Source Index)

EDI:一般用作目标变址(Destinatin Index)

可以指定任何通用寄存器的内容作为操作数的地址,以及在形成地址的过程中作如加法或减法这样简单的算术运算。但像串的运算和双精度的乘法和除法操作这类较复杂的操作,必须要从固定的寄存器中取一个或多个操作数。

2、段寄存器(16位)

CS:代码段寄存器

DS:数据段寄存器

SS:堆栈段寄存器

ES、FS 及GS:附加数据段寄存器

这些段寄存器中存放的不再是某个段的基地址,而是某个段的选择符(Selector)。因为16 位的寄存器无法存放32 位的段基地址,段基地址只好存放在段的描述符(Descriptor)中。

3、标志和控制寄存器(32位)

标志寄存器 EFLAGS

指令指针 EIP

机器状态字 CR0

Intel 预留 CR1

页故障地址 CR2

页目录地址 CR3

指令指针寄存器(EIP)中存放下一条将要执行指令的偏移量(offset ),这个偏移量是相对于目前正在运行的代码段寄存器(CS)而言的。偏移量加上当前代码段的基地址,就形成了下一条指令的地址。

4、系统地址寄存器

全局描述符表寄存器GDTR(Global Descriptor Table Register ),是48 位寄存器,用来保存全局描述符表(GDT)的32 位基地址和GDT 的大小(16位)。

中断描述符表寄存器IDTR(Interrupt Descriptor Table Register),是48 位寄存器,用来保存中断描述符表(IDT)的32 位基地址和IDT 的大小(16位)。

局部描述符表寄存器LDTR(Local Descriptor Table Register ),是16 位寄存器,保存局部描述符表LDT 段的选择符。

任务状态寄存器TR(Task State Register)是16 位寄存器,用于保存任务状态段TSS 段的16 位选择符。

5、调试寄存器和测试寄存器(32位)

6、测试寄存器

TR6:测试命令寄存器,其内存放测试控制命令。

TR7:数据寄存器,其内保存转换旁路缓冲器测试的数据。
第2个回答  2013-05-27
寄存器部件。包括通用寄存器、专用寄存器和控制寄存器。通用寄存器又可分定点数和浮点数两类,它们用来保存指令中的寄存器操作数和操作结果。通用寄存器是中央处理器的重要组成部分 ,大多数指令都要访问到通用寄存器。
第3个回答  2013-05-27
寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。
由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。
寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级语言(如:C/C++语言)中,也有定义变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。

另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一项细致而又周密的工作。
有关“寄存器的分配策略”在《编译原理》中会有详细的介绍。
1、 16位寄存器组

16位CPU所含有的寄存器有(见图2.1中16位寄存器部分):

4个数据寄存器(AX、BX、CX和DX)
2个变址和指针寄存器(SI和DI) 2个指针寄存器(SP和BP)
4个段寄存器(ES、CS、SS和DS)
1个指令指针寄存器(IP) 1个标志寄存器(Flags)

2、 32位寄存器组

32位CPU除了包含了先前CPU的所有寄存器,并把通用寄存器、指令指针和标志寄存器从16位扩充成32位之外,还增加了2个16位的段寄存器:FS和GS。

32位CPU所含有的寄存器有(见图2.1中的寄存器):

4个数据寄存器(EAX、EBX、ECX和EDX)
2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)
6个段寄存器(ES、CS、SS、DS、FS和GS)
1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)本回答被网友采纳
相似回答