首页 > 编程知识 正文

计算机的层次结构(寄存器是由什么组成的)

时间:2023-05-05 21:48:56 阅读:74700 作者:2042

[来自]

该寄存器也用于与AX/EAX:累加器、算术通用寄存器和端口通信。

BX/EBX:基地址寄存器。

CX/ECX:计数器与串行处理指令组合使用。

DX/EDX:算术通用寄存器。 与累加器组合表示两个字长的数量。 其中,累加器用于存储低位数。

[ from ] http://blog.csdn.net /黄圩1024/archive/2007/01/29/1496560.aspx

2.1寄存器组

寄存器是CPU内部的重要数据存储资源,是汇编程序员直接可用的硬件资源之一。 寄存器的访问速度比内存快,因此用汇编语言编写程序时,必须充分利用寄存器的内存功能。

寄存器一般用于存储程序的中间结果,为后续指令快速提供操作数,避免将中间结果保存在存储器中后读取存储器的操作。 在C/C语言等高级语言中,也有定义变量为寄存器型的,这是提高寄存器利用率的一种可能方法。

另外,寄存器的个数和容量有限,不能将所有的中间结果存储在寄存器中,所以适当地对寄存器进行调度。 如何根据指令要求配置合适的寄存器,避免操作数过多的传输操作是一项细致周密的工作。 后续课程《编译原理》将详细介绍“寄存器分配策略”。

16位/32位CPU是微机CPU的两个重要代表,因此这里只介绍它们内部寄存器的名称及其主要功能。

1、16位寄存器组

16位CPU中包含的寄存器如下。 (见图2.1的16位寄存器部分) :

4个数据寄存器(AX、BX、CX、DX ) )。

两个索引和指针寄存器(SI和DI ) )。

两个指针寄存器(SP和BP )。

4个段寄存器(ES、CS、SS、DS ) )。

1指令指针寄存器(IP ) )。

1个标志寄存器(Flags ) )

2、32位寄存器组

32位CPU包括以前CPU的所有寄存器,除了将通用寄存器、指令指针和标志寄存器从16位扩展到32位之外,还增加了两个16位段寄存器: FS和GS。

32位CPU中包含的寄存器如下。 (请参照图2.1的寄存器。

4个数据寄存器(EAX、EBX、ECX、EDX ) )。

两个索引和指针寄存器(ESI和EDI ) )。

两个指针寄存器(ESP和EBP ) )。

6个段寄存器(ES、CS、SS、DS、FS、GS ) ) )。

1指令指针寄存器(EIP ) )。

1个标志寄存器(EFlags ) )

图2.1 CPU寄存器组示意图

2.1.2、通用寄存器的作用

通用寄存器可以用于数据的传输和临时保存,可以参与算术逻辑运算,也可以保存运算结果。 除此之外,它们还分别具有一些特殊的功能。 汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途。 只有这样,才能在程序中正确合理地使用它们。

表2.1通用寄存器的主要用途

寄存器的分类

寄存器

主要用途

说得通

使用

发送

能储蓄

器皿

数据

寄存器

AX

乘法、除法、字输入输出、中间结果的缓存

阿尔

字节乘法、除法、字节输入输出、十进制算术运算

AH

存储字节的乘法、除法、中断的功能编号

BX

存储器指针

CX

串行操作、循环控制的计数器

CL

换档操作的计数器

DX

的乘法、除法、间接输入输出

地址变更

寄存器

SI

内存指针,串行命令中的源操作数指针

DI

内存指针,串行命令中的目标操作数指针

地址变更

寄存器

BP

内存指针,访问堆栈指针

存储处理器

堆栈的堆栈顶部指针

指令指针

IP/EIP

标志寄存器

标志/标志

32位

CPU的

分段寄存器

16位CPU的

分段寄存器

ES

附加段寄存器

CS

代码段寄存器

SS

装载码头寄存器

DS

数据段寄存器

新添加的

分段寄存器

FS

附加段寄存器

GS

附加段寄存器

有关详细信息,请单击。

2.1.3、专用寄存器的作用

16位CPU内部有一个包含9个标志位的16位标志寄存器。 这些标志位主要用于反映处理器的状态和运算结果的特征。 各标记

志位在标志寄存器内的分布如图2.2所示。

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

OF

DF

IF

TF

SF

ZF

AF

PF

CF

31

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

VM

RF

NT

IOPL

OF

DF

IF

TF

SF

ZF

AF

PF

CF

图2.2 16位/32位标志寄存器的示意图

上面9个标志位可分为二组:运算结果标志位(有背景色的标志位)和状态控制标志位。前者受和结果的影响,后者受一些控制指令执行的影响。

更详细的内容请点击:。

有些指令的执行会改变标志位(如:算术运算指令等),不同的指令会影响不同的标志位,有些指令的执行不改变任何标志位(如:MOV指令等),有些指令的执行会受标志位的影响(如:条件转移指令等),也有指令的执行不受其影响。

程序员要想熟练运用这些标志位,就必须掌握每个标志位的含义、每条指令的执行条件和执行结果对标志位的作用。

注意:虽然知道每个标志位在标志寄存器内的具体位置是有好处的,但通常情况下,没有这个必要。在使用第5.2.9节中的“”时,系统会自动引用相应标志位的值来决定是否需要“转移”的,所以,不必过分强调标志位在标志寄存器内的具体位置。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。