1、8086CPU8086CPU内部结构内部结构 :有两个独立的工作部件,执行部件有两个独立的工作部件,执行部件 EU EU 和总和总线接口部件线接口部件 BIUBIU。1. 1. 执行部件(执行部件(EUEU)任务:任务:只负责指令的执行。只负责指令的执行。组成:算术逻辑单元组成:算术逻辑单元 ALU (ALU (运算器运算器) )、通用、通用寄存器、标志寄存器和寄存器、标志寄存器和 EU EU 控制器控制器 。 8086 微处理器内部结构(1) (1) 通用数据寄存器通用数据寄存器 AXAX,BXBX,CXCX,DXDX,既可以作,既可以作 16 16 位寄存器使用,也可以分成高、低位寄存器使
2、用,也可以分成高、低 8 8 位分别作两个位分别作两个8 8 位寄存器使用。专用数据寄存器位寄存器使用。专用数据寄存器 BPBP,SPSP,SISI,DIDI都是都是 16 16 位寄存器,一般用来寻访地址信息。位寄存器,一般用来寻访地址信息。(2) ALU (2) ALU 的核心是的核心是 16 16 位二进制加法器。其功能:一位二进制加法器。其功能:一是进行算数是进行算数/ /逻辑运算,二是按指令的寻址方式给出逻辑运算,二是按指令的寻址方式给出所需要操作对象的所需要操作对象的 16 16 位(偏移)地址,提供给位(偏移)地址,提供给 BIUBIU,让让 BIU BIU 进行对外部内存储器或
3、进行对外部内存储器或 I/O I/O 空间的寻址,传空间的寻址,传输操作对象。输操作对象。(3) 16 (3) 16 位状态标志寄存器(位状态标志寄存器(7 7 位未用)存放操作后的位未用)存放操作后的状态特征和设置的控制标志。状态特征和设置的控制标志。(4) EU (4) EU 控制器是执行指令的控制电路,实现从队列中控制器是执行指令的控制电路,实现从队列中取指令、译码、产生取指令、译码、产生 控制信号等。控制信号等。 2. 2. 总线接口部件(总线接口部件(BIUBIU) 任务任务:负责负责CPUCPU与存储器、与存储器、I IO O接口之间的接口之间的信息传送。信息传送。组成组成:它由段
4、寄存器、指令指针寄存器、指:它由段寄存器、指令指针寄存器、指令队列、地址加法器以及总线控制逻辑。令队列、地址加法器以及总线控制逻辑。特点特点: (1)(1)指令队列是由指令队列是由6 6个字节的寄存器组成个字节的寄存器组成(80888088指令队列由指令队列由4 4字节组成)。采用字节组成)。采用“先进先出先进先出”原则,暂时存放原则,暂时存放 BIU BIU 从存从存储器中预取的指令。储器中预取的指令。(2) (2) 地址加法器是用来产生地址加法器是用来产生 20 20 位存储器物理位存储器物理地址的。地址的。 物理地址(物理地址(2020位)位) = = 段基址(段基址(1616位)位)1
5、616偏移地址(偏移地址(1616位)位) (3) 8086(3) 8086分配分配 20 20 条引脚线分时传送条引脚线分时传送 20 20 位位地址、地址、16 16 位数据和位数据和 4 4 位状态信息。总线位状态信息。总线控制逻辑的功能,就是以逻辑控制方法实控制逻辑的功能,就是以逻辑控制方法实现分时把这些信息与外部传输。现分时把这些信息与外部传输。 3. 8086CPU3. 8086CPU指令的流水线指令的流水线 BIU BIU 和和 EU EU 并行工作,并行工作,8086 8086 指令的流指令的流水线体现在下面几个方面:水线体现在下面几个方面:(1) 每当 BIU “空闲”且指令
6、队列中有 2 个以上空字节(8088 是 1 个以上空字节),BIU 就会自动把所跟踪的指令从存储器预取到指令队列中。 (2) (2) 每当每当 EU EU 准备执行一条指令时,它会准备执行一条指令时,它会按按“先进先出先进先出”原则,从原则,从 BIU BIU 的指令队的指令队列中取出指令,进行译码,然后去执行。列中取出指令,进行译码,然后去执行。 (3) (3) 当指令队列已满,而且当指令队列已满,而且 EU EU 又无访问请又无访问请求时,求时,BIU BIU 便进入空闲状态。便进入空闲状态。(4) (4) 当执行转移指令、调用指令或返回指令当执行转移指令、调用指令或返回指令时,时,BI
7、U BIU 接着按新的跟踪取指令装入指接着按新的跟踪取指令装入指令队列。令队列。 综上所述,综上所述,8086/8088 8086/8088 中指令的取指和中指令的取指和执行是分别由执行是分别由 BIU BIU 和和 EUEU完成的,总线完成的,总线控制逻辑和指令执行逻辑之间既互相独控制逻辑和指令执行逻辑之间既互相独立又互相配合。立又互相配合。 4. 8086CPU 4. 8086CPU的内部寄存器的内部寄存器 (1)(1)段寄存器和存储器分段段寄存器和存储器分段 80868086有有 4 4 个个 16 16 位段寄存器:位段寄存器:代码段寄存器代码段寄存器 CSCS,数据段寄存器,数据段寄
8、存器 DSDS,堆栈段寄存器堆栈段寄存器 SS SS 和附加数据寄存器和附加数据寄存器 EXEX。内存中存放三类信息:内存中存放三类信息:代码,即指令操作码,指出代码,即指令操作码,指出CPUCPU执行什么操作;执行什么操作;数据,即数值和字符等,程序加工对象;数据,即数值和字符等,程序加工对象;堆栈,即临时保存的返回地址和中间结果。堆栈,即临时保存的返回地址和中间结果。 所谓存储器分段技术就是把所谓存储器分段技术就是把 1MB 1MB 空空间分成若干逻辑段,每个逻辑段的容间分成若干逻辑段,每个逻辑段的容量量64KB64KB。段内地址是连续的,段与。段内地址是连续的,段与段之间是相互独立的。逻
9、辑段可以在段之间是相互独立的。逻辑段可以在整个存储空间浮动,即段的排列可以整个存储空间浮动,即段的排列可以连续、分开、部分重叠或全重叠,非连续、分开、部分重叠或全重叠,非常灵活。这里所谓的重叠是指存储单常灵活。这里所谓的重叠是指存储单元可以分属于不同的逻辑段。元可以分属于不同的逻辑段。 8086 8086 要求各逻辑段首地址的最低要求各逻辑段首地址的最低 4 4 位是全位是全 0 0(即首地址是(即首地址是 16 16 的整倍),段首地址的高的整倍),段首地址的高 16 16 位位称做段基址。段基址存放在段寄存器称做段基址。段基址存放在段寄存器 DSDS,ESES,SS SS 或或 CS CS
10、 中,并表明了相应逻辑段的性质。段内存储中,并表明了相应逻辑段的性质。段内存储单元距离段首地址的偏移量(以字节数计算),叫单元距离段首地址的偏移量(以字节数计算),叫做偏移地址(做偏移地址(EAEA)。偏移地址可以存放在)。偏移地址可以存放在 IPIP,SPSP,BPBP,SISI,DIDI,BX BX 中,或者是通过计算给出的一个中,或者是通过计算给出的一个 16 16 位偏移量。位偏移量。 : 2000H 2000H:2000H 2000H 就是就是 22000H 22000H 物理地址的逻辑地址描述物理地址的逻辑地址描述 存储器逻辑分段和物理地址形成l物理地址物理地址8086:20根地址
11、线,可寻址根地址线,可寻址220(1MB)个存储单元个存储单元CPU 送到送到 AB 上的上的 20 位的地址称为位的地址称为物物理地址理地址 物理地址物理地址.60000H 60001H 60002H 60003H 60004H.12HF0H1BH08H存储器的操作完全基于存储器的操作完全基于物理地址。物理地址。问题:问题:80888088的内部总线和内部的内部总线和内部寄存器均为寄存器均为1616位,如何位,如何生成生成2020位地址?位地址?解决:存储器分段解决:存储器分段高地址高地址低地址低地址段基址段基址段基址段基址段基址段基址段基址段基址最大最大64KB段i-1段i段i+1l段基地
12、址段基地址和和段内段内偏移偏移组成了组成了逻辑地址逻辑地址 段地址段地址 偏移地址偏移地址(偏移量偏移量) 格式为:段地址格式为:段地址:偏移地址偏移地址 物理地址物理地址 = 段基地址段基地址16 + 偏移地址偏移地址60002H00H12H60000H0 0 0 0段基地址(段基地址(16位)位)段首地址段首地址 lBIU中的地址加法器用来实现逻辑地址到物理地址的变换l8088 可同时访问4个段,4个段寄存器指示了每个段的基地址段基址段基址段内偏移物理地址物理地址+16位20位0000l已知已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H, DS段有一操作数,其偏
13、移地址段有一操作数,其偏移地址=0204H, 1)画出各段在内存中的分布画出各段在内存中的分布 2)指出各段首地址指出各段首地址 3)该操作数的物理地址该操作数的物理地址=?10550H250A0H2EF00H8FF00HCSSS CSDSES解:解: 各段分布及段首址见右图各段分布及段首址见右图 操作数的物理地址为:操作数的物理地址为:250AH10H+0204H = 252A4Hl含含 14 个个 16 位寄存器,按功能可分位寄存器,按功能可分为三类为三类l 8个通用寄存器个通用寄存器 4个段寄存器个段寄存器 2个控制寄存器个控制寄存器 数据寄存器(数据寄存器(AX,BX,CX,DX)地址
14、指针寄存器(地址指针寄存器(SP,BP)变址寄存器(变址寄存器(SI,DI)l8086含含4个个16位数据寄存器,它们又位数据寄存器,它们又可分为可分为8个个8位寄存器,即:位寄存器,即:AX AH,ALBX BH,BLCX CH,CLDX DH,DL常用来存放参与运算的操作数或运算结果常用来存放参与运算的操作数或运算结果lAX:累加器。多用于存放中间运算结果。所有:累加器。多用于存放中间运算结果。所有 I/O指令必须都通过指令必须都通过AX与接口传送信息;与接口传送信息;lBX:基址寄存器。在间接寻址中用于存放基地址;:基址寄存器。在间接寻址中用于存放基地址;lCX:计数寄存器。用于在循环或
15、串操作指令中存:计数寄存器。用于在循环或串操作指令中存 放循环次数或重复次数;放循环次数或重复次数;lDX:数据寄存器。在:数据寄存器。在32位乘除法运算时,存放位乘除法运算时,存放 高高16位数;在间接寻址的位数;在间接寻址的I/O指令中存放指令中存放 I/O端口地址。端口地址。lSP:堆栈指针寄存器,其内容为栈:堆栈指针寄存器,其内容为栈顶的偏移地址;顶的偏移地址;lBP:基址指针寄存器,常用于在访:基址指针寄存器,常用于在访问内存时存放内存单元的问内存时存放内存单元的偏移地址。偏移地址。l作为通用寄存器,二者均可用于存作为通用寄存器,二者均可用于存放数据;放数据;l作为基址寄存器,作为基
16、址寄存器,BX通常用于寻址通常用于寻址数据段;数据段;BP则通常用于寻址堆栈段。则通常用于寻址堆栈段。lBX一般与一般与DS或或ES搭配使用搭配使用lSI:源变址寄存器:源变址寄存器lDI:目标变址寄存器:目标变址寄存器l变址寄存器常用于指令的间接寻址变址寄存器常用于指令的间接寻址或变址寻址。特别是在串操作指令或变址寻址。特别是在串操作指令中,用中,用SI存放源操作数的偏移地址,存放源操作数的偏移地址,而用而用DI存放目标操作数的偏移地址。存放目标操作数的偏移地址。用于存放逻辑段的段基地址用于存放逻辑段的段基地址(逻辑段的概念后面逻辑段的概念后面将要介绍将要介绍) CS:代码段寄存器:代码段寄
17、存器 代码段用于存放指令代码代码段用于存放指令代码 DS:数据段寄存器:数据段寄存器 ES:附加段寄存器:附加段寄存器 数据段和附加段用来存放操作数数据段和附加段用来存放操作数 SS:堆栈段寄存器:堆栈段寄存器 堆栈段用于存放返回地址,保存寄存器内堆栈段用于存放返回地址,保存寄存器内容,容, 传递参数传递参数lIP:指令指针寄存器,其内容为下一条:指令指针寄存器,其内容为下一条 要执行的指令的偏移地址要执行的指令的偏移地址lFLAGS:标志寄存器:标志寄存器状态标志:存放运算结果的特征状态标志:存放运算结果的特征控制标志:控制某些特殊操作控制标志:控制某些特殊操作 6个状态标志位个状态标志位(CF,SF,AF,PF,OF,ZF) 3个控制标志位个控制标志位(IF,TF,DF)