首页天道酬勤CPU寄存器种类(cpu的寄存器包括)

CPU寄存器种类(cpu的寄存器包括)

admin 12-02 18:43 587次浏览

中央处理器的内部寄存器在计算机中起着重要的作用,是微处理器的重要组成部分之一,其存取速度比存储器快得多。

因此,在程序执行过程中,寄存器相当于存储单元,可以用来存储操作数、操作数地址、中间结果等。操作过程中需要。

8086 CPU包含四组16位寄存器:通用寄存器组、段寄存器、指令指针寄存器和标志寄存器。

中央处理器内部寄存器

(1)通用寄存器组

包括8个16位通用寄存器,其中4个寄存器AX、BX、CX和DX也称为数据寄存器,可以存储16位数据或地址。

每个16位寄存器可以分为两个8位寄存器。

当用作8位寄存器时,高8位寄存器名为AH、BH、CH和DH,低8位寄存器名为AL、BL、CL和DL。

每个寄存器都有自己的特殊场合,其中AX被称为累加器,使用频率最高。它在算术运算、逻辑运算和输入输出指令等中用作数据寄存器。

BX称为基址寄存器,在间接寻址中用作基址寄存器,经常用作访问数据段的偏移地址;

CX称为计数器寄存器,在循环和串行操作等指令中用作隐式计数器。

DX称为数据寄存器,常用于存储双字数据的高8位或外设端口的地址。

四个通用寄存器SP、BP、SI和DI只能用作16位寄存器,通常用于为内存寻址提供偏移地址,也可以用作数据寄存器。

SP称为堆栈指针,也称为堆栈指示符,必须与SS堆栈段寄存器一起使用。用于指示堆栈底部或顶部的偏移地址。

BP称为基本指针,通常用作访问堆栈段的偏移地址。

源索引寄存器SI(源索引)和目的索引寄存器DI(目的索引)通常与数据段寄存器一起使用。

用于确定数据段中存储单元的地址,DI用于存储目的操作数的偏移地址,SI和DI用于寻址数据段,DI和ES用于添加附加数据段。

(2)段寄存器

8086 CPU可以直接寻址1MB容量的内存,所以需要20位地址码。

8086 CPU中的所有寄存器都是16位的,只有64KB的存储空间可以通过寄存器的间接寻址来寻址。因此,CPU使用分段技术将1MB的存储空间分成几个逻辑段。

每个数据段的最大存储容量为64KB。8086CPU中有四个16位段寄存器。这些段寄存器的内容和段中的偏移地址形成一个20位物理地址。

段内偏移地址可以存储在寄存器或存储器中。

1)代码段寄存器CS

代码段是一个随机存取存储器区域,用于存储微处理器使用的程序代码。在8086系统中,代码段寄存器CS定义代码段的起始地址。代码段的最大存储空间为64KB。

2)数据段寄存器DS

数据段也是随机存取存储区,用于存储程序执行过程中使用的数据和程序运行后的结果。数据段寄存器DS定义了数据段的起始地址,其最大存储空间也是64KB。

3)附加段寄存器

附加段是为存储某些字符串操作指令的操作数而附加的数据段。与数据段类似,附加段寄存器ES定义了附加段的起始地址,其最大存储空间为64KB。

4)堆栈段寄存器SS

align-justify">堆栈段是一个特殊的随机存取存储区,用来零食保存程序执行过程中有关寄存器的内容、程序的地址信息及传递参数等。

堆栈寄存器SS与堆栈指针SP共同确定堆栈段内的存取地址。其最大存储空间为64KB。

(3)指令指针寄存器

8086 CPU中设置了一个16位指令指针IP。IP用来存放将要执行的下一条指令在当前代码段中的偏移地址,它与代码段寄存器CS联用,

以确定下一条指令的物理地址。8086 CPU利用CS:IP取得下一条要执行的指令的物理地址。顺序执行程序时,CPU每取一个指令字节,IP自动加1,

指向代码段中下一个要读取的字节;当IP单独改变时,会发生段内的程序转移;当CS和IP同时改变时,会产生段间的程序转移。

(4)标志位寄存器

标志寄存器(FLAGS)用于保存部分指令(例如,算术运算指令或逻辑运算指令)执行结果的状态,常用作后续条件转移指令的转移控制条件。

标志寄存器为16位,实际使用了其中的9位。

标志寄存器(FLAGS)

标志寄存器(FLAGS)详细图

根据标志位的功能,可将9个标志位分成两类:

【1】状态标志,表示运算后的状态特征,它影响后面的操作。状态标志位有6位:CF、PF、AF、ZF、SF和OF;

【2】控制标志,用来控制CPU的操作,控制标志有3位:TF、IF和DF。

六种状态标志的含义:

1)CF(Carry Flag),进位标志位。运算中最高位有进位或借位时,CF=1,否则CF=0;

2)PF(Parity Flag),奇偶校验位。运算结果中的低8位中1的个数为偶数时,PF=1,否则PF=0;

3)AF(Auxiliary Flag),辅助进位标志位。运算结果低4位向高4位有进位或借位时,AF=1,否则AF=0.通常用于对BCD算术运算结果的调整。

4)ZF(Zero Flag),零标志位。若运算结果为0时,ZF=1,否则,ZF=0;

5)SF(Sign Flag),符号标志位。若运算结果的最高位为1,则SF=1,否则SF=0,即与运算结果的最高位相同。

6)OF(Overflow Flag),溢出标志位。

——对于加法运算,判断溢出的方法:

若两个加数的最高位为0,而和的最高位为1,则产生上溢出。

若两个加数的最高位为1,而和的最高位为0,则产生下溢出。

当两个加数的最高位不相同时,不产生溢出。

——对于减法运算,判断溢出的方法:

若被减数的最高位为0,减数的最高位为1,而差的最高位为1,则产生上溢出。

若被减数的最高位为1,减数的最高位为0,而差的最高位为0,则产生下溢出。

被减数及减数的最高位相同时,不产生溢出。

溢出是指补码运算后的结果超出了所选字长能表示数的范围。例如,8位补码所能表示数的范围是-128~+127,16位补码所能表示数的范围是-32768~+32767.

三种控制标志的含义:

1)TF(Trap Flag),陷进标志位,也常称为单步标志位。调试程序时,可设置单步工作方式,TF=1时,8086 CPU每执行完一条指令就自动产生一个内部中断。

在DEBUG调试程序中,通过单步执行操作,CPU运行单步中断服务程序,会把当前CPU中各寄存器的值在屏幕上显示出来。当TF=0时,8086 CPU能连续执行指令。

2)IF(Interrupt Flag),中断允许标志位。该标志用于控制外部可屏蔽中断是否可以被8086 CPU响应。若IF=1,则允许CPU响应可屏蔽中断请求;若IF=0,则禁止。

3)DF(Direction Flag),方向标志位。用于控制串操作指令中地址指针的变化方向。

如果DF=0,每次串操作后的存储器地址就自动增加,若DF=1,每次串操作后的存储器地址就自动减少。

FLAGS中标志位的符号表示

FLAGS中标志位的符号表示

IaC 自动化配置与编排神器 - Terraform 深度解析JAVA外观模式怎么实现MySQL日志之redo log和undo log实例分析优惠后最低每月仅1.5美元起云数据库快速上手 PostgreSQL UDB将数据添加到FlatList总是显示第一个孩子热升级 云主机 UHost
嵌入式开发为什么用linux(嵌入式为什么要学linux) 信息熵等于1(高中地理知识点)
相关内容