1、1,第2章 8086系统结构,2,主要内容:2.1 8086CPU系统结构 2.2 8086CPU的引脚及其功能 2.3 8086存储器组织 2.4 8086系统配置,第2章 8086系统结构,3,2.1 8086CPU结构,8086:Intel系列的16位微处理器,16条数据线、20条地址线,可寻址地址范围220=1MB,8086工作时,只要一个 5V 电源和一个时钟,时钟频率分别有5MHz,8MHz和10MHz 。8088:内部与8086兼容,也是一个16位微处理器,只是外部数据总线为8位,所以称为准16位微处理器。 8088有20条地址线,所以可寻址的地址空间达220即1M字节。 由于制
2、造工艺的原因,使16位处理器基本结构有以下的特点:,4,1.引脚功能复用:由于引脚数量限制,部分引脚设计为功能复用;2.单总线、累加器结构:由于芯片的面积的限制,使内部的寄存器的数量,数据通道的位数受到限制;3.可控三态电路:采用可控三态电路与总线相连,不工作器件所连的三态电路处于高阻状态;4.总线分时复用:由于引脚不够用,地址总线和数据总线使用了相同的引脚。采用总线分时复用技术解决了引脚不够的限制,但是操作时间增加。,5,6,2.1.1 8086CPU的内部结构,1.总线接口部件BIU(Bus Interface Unit)它是8086CPU与外部(存储器和I/O端口)数据交换的接口。它提供
3、了16位双向数据总线和20位地址总线,通过它们完成所有外部总线操作。,7,总线接口部件的组成: (1)四个段地址寄存器CS,16位代码段寄存器;DS,16位数据段寄存器;ES,16位附加段寄存器;SS,16位堆栈段寄存器。 (2)16位指令指针寄存器IP(PC)。 (3)20位的地址加法器。 (4)六字节的指令队列缓冲器。,8,功能: (1)按给定的地址从存储器中取出指令送到指令队列。 (2)CPU执行指令时,到指定的位置取操作数,并将其送至要求的位置单元中。,9,说明: (1)指令队列缓冲器:在执行指令的同时,将取下一条指令,并放入指令队列缓冲器中。CPU执行完一条指令后,可以指向下一条指令
4、(流水线技术)。提高CPU效率。,10,(2)地址加法器:产生20位地址。CPU内无论是段地址寄存器还是偏移量都是16位的,通过地址加法器产生20位地址。,11,2.指令执行部件EU(Execution Unit)指令执行部件EU完成指令译码和指令执行的工作。 作用:(1)从指令队列中取出指令。(2)对指令进行译码,发出相应相应的控制信号。,12,(3)接收由总线接口送来的数据或发送数据至接口。(4)进行算术运算。,13,执行部件的组成: (1)四个通用寄存器AX、BX、CX、DX。四个通用寄存器都是16位或作两个8位来使用。 (2)专用寄存器SP-堆栈指针寄存器BP-基址指针寄存器DI-目的
5、变址寄存器SI- 源变址寄存器,14,(3)算术逻辑单元ALU完成8位或者16位二进制算术和逻辑运算,计算偏移量。 (4)数据暂存寄存器协助ALU完成运算,暂存参加运算的数据。,15,(5)执行部件的控制电路从总线接口的指令队列取出指令操作码,通过译码电路分析,发出相应的控制命令,控制ALU数据流向。 (6)标志寄存器16位寄存器,其中有7位未用。,16,2.1.2寄存器结构,它在计算机中起到重要的作用,寄存器的存取速度比存储器快得多,用于存放运算过程中所需要操作数地址、操作数及中间结果。8086CPU内部含有4组16位寄存器,如图2.2所示。,17,18,1.通用寄存器组,表2.1列出了80
6、86通用寄存器组的特殊用途。见P26。,19,20,2.指针和变址寄存器,这组寄存器存放的内容是某一段内地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。,21,22,3.段寄存器,段寄存器是将1MB的存储空间分成若干逻辑段,每段最长64KB,这些逻辑段在整个存储空间中可浮动。,23,4.指令指针寄存器IP,指令指针寄存器IP是用来存放将要执行的下一条指令在现行代码段中的偏移地址。,5.标志寄存器PSW,标志寄存器PSW是用来存放运算结果的特征,常用作后续条件转移指令的转移控制条件。,24,标志寄存器 16位寄存器,其中有7位未用。,符号表示见P27,25,2.2 8086CPU
7、的引脚及其功能,8086CPU根据它的基本性能,应包括20条地址线,16条数据线,加上控制信号,电源和地线,芯片的引脚比较多。但由于制造工艺的限制,8086 CPU芯片采用40条引脚的双列直插式封装,因此部分引脚采用了分时复用的方式。8086CPU可以在两种工作模式工作:最小模式和最大模式。,26,27,2.2.1 8086CPU在最小模式中引脚定义,1.地址/数据总线AD15-AD0(216,39脚)它是16条地址/数据复用引脚,双向,三态。*(8086/8088)AD15-AD0:16位地址总线A15-A0,输出访问存储器或I/O的地址信息。*(8086)AD15-AD0:16位数据总线D
8、15-D0,与存储器和I/O设备交换数据信息。*(8088)AD7-AD0:8位数据总线D7-D0,与存储器和I/O设备交换数据信息。*地址/数据总线复用,分时工作。,28,2.地址/状态总线A19/S6-A16/S3 (3538脚)它是地址/状态总线复用引脚,输出,三态。作用:输出访问存储器的20位地址的高4位地址A19-A16;输出CPU的工作状态。,29,工作状态:T1状态:输出地址的高4位信息;T2、T3、T4状态:输出状态信息S6-S3。S6:指示8086当前是否与总线相连,S6=0,表示8086当前与总线相连。,S5:表明中断允许标志的状态,若允许可屏蔽中断请求,则S5=1,若S5
9、=0,则禁止一切可屏蔽中断源的中断。,30,S4S3:指出当前使用段寄存器的情况。,31,3./BHE/S7(Bus High Enable/Status) (34脚)高8位数据总线允许/状态复用引脚。在总线周期的T1状态,此引脚输出/BHE信号,表示高8位数据线D15-D8上的数据有效。在T2-T4状态,S7输出状态信息。,4.MN/MX(Minimun/Maximun) (33脚)工作模式选择信号,输入。MN/MX=1,表示CPU工作在最小模式系统; MN/MX=0,表示CPU工作在最大模式系统。,32,5./RD(Read) (32脚)读信号,三态输出,低电平有效。/RD=0,表示当前C
10、PU正在对存储器或I/O端口进行读操作。,33,6./WR(Write) (29脚)写信号,三态输出,低电平有效。/WR=0,表示当前CPU正在对存储器或I/O端口进行读操作。,34,7.M/IO(Memory/Input and Output) (28脚)存储器或IO端口访问信号,三态输出。 M/IO=1,表示CPU正在访问存储器;M/IO=0,表示CPU正在访问IO端口。,8.ALE(Address Latch Enable) (25脚)地址锁存允许信号,输出,高电平有效。用来锁存地址信号A15-A0地址/数据总线。,35,9./DEN(Data Enable) (26脚)数据允许信号,三
11、态输出,低电平有效。作为数据总线上收发器8286的选通信号。10.DT/R(Data Transmit Receive) (27脚)数据发送/接收控制信号,三态输出。此信号控制数据总线上的收发器8286的数据传送方向,DT/R=1,发送数据-写操作;DT/R=0,接收数据-读操作。,36,11.READY(Ready) (22脚)准备就绪信号,输入,高电平有效。READY=1,表示CPU访问的存储器或IO端口已准备好传送数据。若CPU在总线周期T3状态检测到READY=0,表示未准备好,CPU自动插入一个或多个等待状态TW,直到READY=1为止。,37,12.RESET(Reset) (21
12、脚)复位信号,输入,高电平有效。RESET信号至少要保持4个时钟周期。复位时:标志寄存器、IP、DS、SS、ES为0,CS=FFFFH,复位后CPU从FFFF0H处开始执行。,38,13.INTR(Interrupt Request) (18脚)可屏蔽中断请求信号,输入,高电平有效。当INTR=1,表示外设向CPU发出中断请求,CPU在当前指令周期的最后一个T状态去采样该信号,若此时,IF=1,CPU响应中断,执行中断服务程序。14./INTA(Interrupt Acknowledge) (24脚)中断响应信号,输出,低电平有效。表示CPU响应了外设发来的中断申请信号INTR。,39,15.
13、NMI(Non-Maskable Interrupt Request)17脚不可屏蔽中断请求信号,上升沿触发。该请求信号不受IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后立即响应中断。,16./TEST(Test) (23脚)测试信号,输入,低电平有效。当CPU执行WAIT指令时,每隔个时钟周期对/TEST进行一次测试,若/TEST=1,继续等待,直到/TEST=0,40,17.HOLD(Hold Requst) (31脚)总线请求信号,输入,高电平有效。当系统中CPU之外的另一个控制器要求使用总线时,通过它向CPU发一高电平的请求信号。,18.HLDA(Hold Ack
14、nowledge) (30脚)总线请求响应信号,输出,高电平有效。当HLDA有效时,表示CPU对其它控制器的总线请求作出响应,与此同时,所有与三总线相接的CPU的线脚呈现高阻抗状态,从而让出总线。,41,19.CLK(Clock) (19脚)主时钟信号,输入。8086/8088的时钟频率为5MHZ。20.Vcc(+5V),GND(地) (40,1,20脚)CPU所需电源Vcc=+5V。GND为地线。,42,2.2.2 8086CPU在最大模式中引脚定义,8086CPU在最大模式中,2431引脚重新定义。1./S2/S0(Bus Cycle State) (26,27,28脚)总线周期状态信号,
15、三态输出。,43,2./LOCK(Lock) (29脚)总线封锁信号,三态输出,低电平有效。/LOCK=0,CPU不允许其它控制器占用总线。3./RQ/GT0、/RQ/GT1(Request/Grant) (30,31脚)总线请求信号(输入)/总线请求允许信号(输出),双向,低电平有效。,44,4.QS1、QS0(Instruction Queue Status)(24,25脚)指令队列状态信号,输出,高电平有效。,45,2.2.3 8088与8086CPU的不同之处,1.8088CPU指令队列长度是4个字节; (见P33)2.总线接口单元BIU的总线控制电路与外部交换数据的总线宽度是8位;3
16、.8088的外部数据总线只有8位;4.8088中,用IO/M信号代替M/IO信号线; (28脚)5.8088中,/BHE (34脚)信号线不需要了,具体的组合关系见表2.6。,46,47,48,2.3.1 存储器地址的分段,1.存储器地址的分段由于8086/8088有20条地址线,可以寻址多达1MB字节,所以把1MB字节的存储器分为任意数量的段,其中每一段最多可达寻址64KB字节。8086把1MB的存储器空间分成许多逻辑空间,每一个存储段是存储器中可独立寻址的一个逻辑单位,也称逻辑段,每个段的长度为64K字节。,2.3 8086存储器组织,49,特点:起始点可浮动;可分开或重叠;实际地址由段地
17、址+偏移地址;段首地址必须能被16整除。,50,2.物理地址形成逻辑地址:存储器的任一个逻辑地址由段基址和偏移地址组成,程序设计时采用逻辑地址。物理地址:存储器的绝对地址,从00000 FFFFFH,它是由逻辑地址变换而来。即:物理地址=段地址16+偏移地址。,51,3.逻辑地址来源已知:物理地址=段地址16+偏移地址。段地址偏移器:CS,DS,ES,SS;偏移地址寄存器:IP,SI,DI,BX,SP,BP。,52,53,2.3.2、8086存储器的分体结构,8086系统中,1MB的存储器空间分成两个存储体:偶地址和奇地址存储体,各为512KB示意图如图2.10所示。,54,当A0=0时,访问
18、偶地址存储体,它与数据线低8位相连,从低8位数据总线读/写一个字节。当/BHE=0时,访问奇数地址存储体,它与数据总线高8位相连,从高8位数据总线读/写一个字节。,55,存储器中存放的信息称为存储单元的内容。,例如存储单元00100H中的内容为34H,可表示为:(00100H)=34H如:在00100H中存放一个字1234H,可表示为:(00100H)=1234H如:在00103H中存放一个字0152H,表示为:(00103H)=0152H。,注意:字的存放顺序:低位在低地址,高位在高地址,56,存储器在读/写存储单元内容的顺序。如图2.12。,57,图2.13指出了8086系统和8088系统
19、中存储器与总线的连接。下图为8086系统,58,图2.13指出了8086系统和8088系统中存储器与总线的连接。下图为8088系统,59,2.3.3 堆栈的概念,所谓堆栈是在存储器中开辟一个区域,用来存放需要暂时保存的数据。堆栈段是由段定义语句在存储器中定义的一个段,它可以在存储器1MB空间内任意浮动。堆栈段容量小于等于64KB。段基址由堆栈寄存器SS指定,栈顶由堆栈指针SP指定。栈底设在存储器的高地址区,堆栈地址由高向低增长。图2.14为堆栈操作示意图。,60,61,62,堆栈操作的特点:先进后出。注意两点:1.先进入的内容后弹出,保证返回存储器内容不发生错误。例2.5,PUSH AXPUS
20、H BXPUSH CXPOP CXPOP AXPOP BX,PUSH AXPUSH BXPUSH CXPOP CXPOP BXPOP AX,63,注意2:PUSH和POP的指令要成对使用,若不匹配,会造成返回主程序的地址错误。例2.6,PUSH AXPUSH BXPUSH CXPOP CXPOP BXRET,PUSH AXPUSH BXPUSH CXPOP CXPOP BXPOP AXRET,64,2.4 8086系统配置,根据使用的目的不同,8086/8088系统可以有最小模式和最大模式两种系统配置方式,两种方式的配置是由硬件设定的。当8086引脚MN/MX=1时,构成最小方式,当MN/MX
21、=0时,构成最大方式。最小方式为单机系统;最大方式是可以两个以上微处理器工作。,65,最小模式和最大模式的特点:见表2.9。,66,8086/8088两种模式中的引脚名称:见表2.10。,67,2.4.1 最小模式系统,68,1.地址锁存器8282/8283CPU与存储器进行数据交换时,首先要送出地址信号,然后再发出控制信号和数据信号。由于采用复用总线,所以要加入锁存器。见图2-15。,69,2.双向数据总线收发器8286/8287CPU驱动数据的负载能力有限,当挂在数据总线上的部件增加时可用8286/8287来增加驱动能力。图2-16是8286引脚及单元结构图。,70,3.时钟发生器8284
22、CPU的内外部时间基准信号由时钟输入信号CLK提供,CLK是外部8284产生提供的,图2-17给出8284的引脚及内部结构框图。,71,8284时钟发生器的功能包括3部分:时钟发生器;复位生成电路;就绪控制电路。,72,73,图2.20给出8284和8086CPU的连接图。,74,2.4.2 最大模式系统(自看),75,2.4.3 8086CPU时序,8086CPU的操作是在时钟CLK统一控制下进行的,它的时钟频率为5MHz。指令周期:执行一条指令所需的时间。总线周期:8086CPU中,BIU完成一次访问存储器或I/O端口所需要的时间。时钟周期:CPU时钟频率的倒数。也称T状态总线周期至少包括
23、4个时钟周期(T1T4)。,76,8086CPU通过RESET引脚的触发信号引起系统复位和启动,RESET信号至少维持4个时钟周期的高电平。表2.13是复位时各内部寄存器的值。,1.系统的复位和启动,77,在复位后CS为FFFFH,IP为0000H,CPU从内存的FFFF0H处开始执行指令。因此在FFFF0H处放一条无条件转移指令,这样系统启动后就自动进入系统程序。图2.23给出复位操作时的时序。,78,1)读总线周期(图2.24为读取数据的时序),2. 最小模式下的总线操作,79,2)写总线周期(图2.25为写取数据的时序),80,3)总线空操作在空操作周期中,虽然CPU对总线进行空操作,但CPU内部操作仍然进行。例如ALU执行运行,内部寄存器之间数据传输等,即EU部件在工作。所以说,总线空操作是总线接口部件BIU对总线执行部件EU的等待。,81,1)读总线周期(图2.26为读取数据的时序),3.最大模式下的总线操作,82,2)写总线周期(图2.27为写取数据的时序),83,