8086 CPU的寄存器结构

8086 CPU内部寄存器

8086 CPU的寄存器结构_第1张图片

1.数据寄存器

数据寄存器用来暂时存放计算过程中所用到的操作数、结果或其他信息,包括累加器AX、基址寄存器BX、计数寄存器CX和数据寄存器DX。16位数据寄存器,它们又可分为8个8位寄存器,即:
AX→AH,AL
BX→BH,BL
CX→CH,CL
DX→DH,DL
(1)AX:累加器。多用于存放中间运算结果。所有I/O指令必须都通过AX与接口传送信息;
(2)BX:基址寄存器。常用于存放访问内存时的偏移地址;
(3)CX:计数寄存器。用于在循环或串操作指令中存放循环次数或重复次数;
(4)DX:数据寄存器。在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。

2.段寄存器

在8086系统中,存储器是分段管理的,访问存储器的地址码由段地址和段内偏移地址两部分组成。段寄存器用来存放段地址,包括4个16位寄存器:代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。
(1)代码段寄存器CS:管理程序段。存放当前正在运行的程序所在段的段地址,段内的偏移地址则由IP提供。
(2)数据段寄存器DS:管理数据段。存放当前程序使用的数据所在段的段地址。
(3)堆栈段寄存器SS:管理堆栈段。存放当前堆栈段的段地址。
(4)附加段寄存器ES:管理扩展段。存放当前程序使用附加段的段地址,附加段是一个附加的数据段,在执行串操作指令时,作为目的串地址使用。

3.地址指针与变址寄存器

地址指针与变址寄存器包括4个16位寄存器:堆栈指针寄存器SP、基址指针寄存器BP、源变址寄存器SI和目的变址寄存器DI。它们一般用来存放主存地址的段内偏移地址,用于形成20位物理地址。另外,它们也可以和数据寄存器一样在运算过程中存放操作数,但只能以字(16位)为单位使用。
(1)堆栈指针寄存器SP:其内容为栈顶的偏移地址。
(2)基址指针寄存器BP:常用于在访问内存时存放内存单元的偏移地址。
注:BX与BP在应用上的区别:
作为通用寄存器,二者均可用于存放数据;
作为基址寄存器,BX通常用于数据段,一般与DS或ES搭配使用;BP则通常用于堆栈段,与SS搭配使用。

(3)变址寄存器SI和DI:在某些间接寻址方式中,用来存放段内偏移量的全部或一部分。在字符串操作指令中,SI用作源变址寄存器,DI用作目的变址寄存器。

4.控制寄存器

控制寄存器包括指令指针寄存器IP和标志寄存器FLAGS。
(1)指针寄存器IP:用来存放下一条将要执行的指令在代码段中的偏移地址,程序员不可以直接使用,但程序控制类指令会用到。它具有自动加1功能,每当执行一次取指令操作,它将自动加1,总是指向下一条要取的指令在现行代码段中的偏移地址。它和CS相结合,形成指向指令存放单元的物理地址。注意每取一个字节后IP内容加1,但取一个字后IP内容加2。
(2)标志寄存器FLAGS:16位标志寄存器,用来存放运算结果的特征。其中7位没有定义,其余9位分成两类:
①状态标志:表示运算后结果的状态特征它影响后面的操作,
有6位:CF、PF、AF、ZF、SF和OF。
②控制标志,用来控制CPU操作,有3个:TF、IF和DF。

D 15 D_{15} D15 D 14 D_{14} D14 D 13 D_{13} D13 D 12 D_{12} D12 D 11 D_{11} D11 D 10 D_{10} D10 D 9 D_9 D9 D 8 D_8 D8 D 7 D_7 D7 D 6 D_6 D6 D 5 D_5 D5 D 4 D_4 D4 D 3 D_3 D3 D 2 D_2 D2 D 1 D_1 D1 D 0 D_0 D0
OF DF IF TF SF ZF AF PF CF

CF - 进位标志:算术运算时有进位CF=1,无进位CF=0
PF - 奇偶标志:运算结果中“1” 的个数为偶数PF=1
AF - 辅助进位标志:第3位向第4位有进位时AF=1
ZF - 零标志:运算结果为“0”则ZF=1
SF - 符号标志:运算结果为负数时SF=1
OF - 溢出标志:运算结果超出规定范围OF=1
IF - 中断允许标志:IF=1中断允许
DF - 方向标志, DF=0地址加1
TF - 跟踪标志,TF=1,为单步工作方式

你可能感兴趣的:(笔记)