首页 » 科学 » 8086 CPU内部寄存器结构_存放器_标记

8086 CPU内部寄存器结构_存放器_标记

萌界大人物 2025-01-20 13:29:58 0

扫一扫用手机浏览

文章目录 [+]

因此,在程序实行过程中,寄存器相称于存储单元,可用来存放运算过程中所须要的操作数、操作数地址和中间结果等。

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

8086 CPU内部寄存器结构_存放器_标记 科学

CPU内部寄存器

(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这4个通用寄存器只能用作16位寄存器,常日用于存储器寻址时供应偏移地址,也可用作数据寄存器。

SP称为堆栈指针(Stack Pointer),也称为堆栈指示器,必须与SS堆栈段寄存器联用。
用于指示栈底或栈顶的偏移地址。

BP称为基址指针(Base Pointer),常被用做偏移地址访问堆栈段。

源变址寄存器SI(Source Index)和目的变址寄存器DI(Destination Index),常日与DS数据段寄存器一起利用,

用来确定数据段中某一存储单元的地址,DI用于存放目的操作数的偏移地址,SI与DI联用寻址数据段,DI与ES联用附加数据段。

(2)段寄存器

8086 CPU可以直接寻址容量为1MB的存储器,因此须要20位地址码。

8086 CPU内部所有寄存器都是16位的,采取寄存器间接寻址都只能寻址64KB的存储空间,因此CPU对存储器采取分段技能,将1MB的存储空间分为多少逻辑段,

每段存储容量最大为64KB。
8086CPU内部设有4个16位段寄存器,这些段寄存器的内容与段内偏移地址组成20位物理地址,

段内偏移地址可能存放在寄存器中,也可能存放在存储器中。

1)代码段寄存器CS

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

2)数据段寄存器DS

数据段也是一个随机存取存储区,用来保存程序实行过程中所利用的数据及存放程序运行后的结果。
数据段寄存器DS定义了数据段的起始地址,其最大的存储空间也是64KB。

3)附加段寄存器ES

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

4)堆栈段寄存器SS

堆栈段是一个分外的随机存取存储区,用来零食保存程序实行过程中有关寄存器的内容、程序的地址信息及通报参数等。

堆栈寄存器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中标志位的符号表示

相关文章

本土芯片分销商做对了什么?_客户_华南

近日,慕尼黑华南电子展在深圳国际会展中央盛大召开。本次展会立足粤港澳大湾区,辐射华南、西南及东南亚市场,聚焦新能源汽车、储能、数据...

科学 2025-01-20 阅读0 评论0

8086 CPU内部寄存器结构_存放器_标记

因此,在程序实行过程中,寄存器相称于存储单元,可用来存放运算过程中所须要的操作数、操作数地址和中间结果等。8086 CPU内包含4...

科学 2025-01-20 阅读 评论0