第二章8086系统结构由于制造工艺的原因,微处理器的结构受到几个方面的限制:1.引脚数限制2.芯片面积限制3.器件速率限制由于上述限制,使16位微处理器基本结构具有如下特点:2.单总线、累加器结构3.可控三态电路4.总线分时复用1.引脚功能复用12345678910111213141516171819208086CPU3130292827262524232221403938373635343332AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDGNDAD14AD13AD12AD11AD10AD9AD8AD7HOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREDAYRESETVCCAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRD总线分时复用12345678910111213141516171819208086CPU3130292827262524232221403938373635343332AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDGNDAD14AD13AD12AD11AD10AD9AD8AD7HOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREDAYRESETVCCAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRD引脚功能复用Intel8086CPU是16位微处理器,外型为双列直插式,有40个引脚。8086型微处理器的时钟频率为5MHz;它有16根数据线和20根地址线,直接寻址空间为220Byte,即为1MB。8088CPU内部结构与8086基本相同,但对外数据总线只有8根,称为准16位微处理器。12345678910111213141516171819208086CPU3130292827262524232221403938373635343332AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDGNDAD14AD13AD12AD11AD10AD9AD8AD7HOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREDAYRESETVCCAD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRD低16位地址/16位数据总线高4位地址12345678910111213141516171819208088CPU3130292827262524232221403938373635343332AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDGNDA14A13A12A11A10A9A8AD7HOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)IO/M(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREDAYRESETVCCA15A16/S3A17/S4A18/S5A19/S6SS0(HIGH)MN/MXRD高12位地址低8位地址/8位数据总线2-18086CPU结构微型计算机工作时,总是先存储器中取指令,需要的话再取操作数,然后执行指令,送结果。8086CPU由总线接口部件BIU和指令执行部件EU组成,BIU和EU是并行工作的。总线接口部件BIU完成取指令,读操作数、送结果,所有与外部的操作由其完成。而指令执行部件EU从BIU的指令队列中取出指令,并且读出指令,不必直接访问存储器或I/O端口。一、8086CPU的内部结构1.总线接口部件BIU(BusInterfaceUnit)总线接口部件BIU是8086CPU与外部(存储器和I/O端口)的接口,它提供了16位双向数据总线和20位地址总线,完成所有外部总线操作。BIU具有下列功能:地址形成、取指令、指令排队、读/写操作数和总线控制。它由下列各部分组成:(1)4个16位段地址寄存器0121514…CSDSSSES代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器(2)16位指令指针寄存器IP:存放下一条要执行指令的偏移地址。(3)20位物理地址加法器:将16位逻辑地址变换成20位物理地址,实际上完成加法操作。(4)6字节指令队列:预放6个字节的指令代码。(5)总线控制逻辑:发出总线控制信号。2.指令执行部件EU(ExecutionUnit)指令执行部件EU完成指令译码和执行指令。它由下列各部分组成:(1)算术逻辑运算单元ALU:完成8位或16位的二进制运算,16位暂存器可暂存参加运算的操作数。(2)标志寄存器PSW:存放ALU运算结果特征。(3)寄存器组。0121514…SPBPSIDI堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器指针和变址寄存器071514…AHBHCHDH累加器基址寄存器计数寄存器数据寄存器通用寄存器组ALBLCLDLAXBXCXDX8…(4)EU控制器:取指令控制和时序控制部件。3.8086CPU的工作过程第一步:先执行读操作,根据CS:IP在地址加法器中形成20位物理地址:CS*16+IP,再从中取出指令=》先进先出的6字节指令队列中,等待执行。第二步:EU从指令队列中取出指令,并分析译码,向各部件发出控制命令,以完成执行指令的功能。EU对指令译码,分析和执行时,此时EU不需要用总线,BIU乘机可将后续指令=》指令队列,将队列填满。第三步:当指令队列已满,EU未向BIU申请读/写存储器或I/O操作时,BIU处于空闲周期。如EU执行8位乘法操作时,需70~77个T周期,取指令占2个总线周期(8个T),这段时间内,BIU就可去取指令将指令队列填满,而后续的62~69个T周期内,就处于空闲状态。第四步:在指令的执行过程中,若需要对存储单元或I/O端口进行存取数据,EU就要求BIU去完成相应的总线周期。例如:从内存中取数据指令:MOVAX,[BX]从I/O端口取数据指令:INAL,30H第五步:若在指令的执行过程中,遇到JMP或CALL指令时,将队列中的内容作废,按新的转移地址去取指令,除这种情况外,取指和执行指令都能同时进行,大大提高了CPU的利用率。流水线:在执行指令的同时,预取下一条指令的技术。二、寄存器结构寄存器结构在计算机中起了重要的作用,它的存取速度比存储器快得多,这样可以相当于存储单元,用来存放运算过程中所需要的操作数地址、操作数及中间结果。8086微处理器内部包含有4组16位寄存器,它们分别是通用寄存器组,指针和变址寄存器,段寄存器,指令指针及标志位寄存器。1.通用寄存器组(特殊用途见书表2-1)8086/8088CPU在指令执行部件EU中有4个16位通用寄存器,它们是AX,BX,CX,和DX,用以存放16位数据或地址。也可分为8个8位寄存器来使用,低8位是AL、BL、CL和DL,高8位为AH、BH、CH和DH,只能存放8位数据,不能存放地址。071514…AHBHCHDH累加器基址寄存器计数寄存器数据寄存器通用寄存器组ALBLCLDLAXBXCXDX8…2.指针和变址寄存器8086/8088CPU中,有一组4个16位寄存器,它们是基址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI。这组寄存器存放的内容是某一段内地址偏移量,用来形成操作数地址,主要在堆栈操作和变址运算中使用。0121514…SPBPSIDI堆栈指针寄存器基址指针寄存器源变址寄存器目的变址寄存器指针和变址寄存器3.段寄存器0121514…CSDSSSES代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器8086/8088CPU可直接寻址1MB的存储器空间,直接寻址需要20根地址线,而所有的内部寄存器都是16位的,只能直接寻址64KB,因此采用分段技术来解决。将1MB的存储器空间分成若干个逻辑段,每段最长64KB,这些逻辑段在整个存储空间中可浮动。4个段寄存器给出相应逻辑段的首地址,称为“段基址”。例2-1若当前SS=3500H,SP=4000H,说明堆栈段在存储器中的20位物理地址。解:物理地址=SS*16+SP=39000H4.指令指针寄存器IP8086/8088CPU中设置了一个16位指令指针寄存器IP,用来存放将要执行的下一条指令现行代码段中的偏移地址。程序运行中,它由BIU自动将其修改,使IP始终指向下一条将要执行的指令的地址,因此它是用来控制指令序列的执行流程的,是一个重要的寄存器。8086程序不能直接访问IP,但可以通过某些指令修改IP的内容。┊MOVBX,CXMOVAX,[BX]ADDAX,DX┊正在执行IP指向下一条5.标志寄存器PSW16位标志寄存器PSW用来存放运算结果的特征,常用作后续条件转移指令的转移控制条件。其中7位没有用,9个标志位分成两类:一类是状态标志,表示运算后结果的状态特征,它影响后面的操作。状态标志有6个:CF、PF、AF、ZF、SF和OF。另一类是控制标志,用来控制CPU操作,控制标志有3个:TF、IF和DF。OFDFIFTFSFZFAFPFCF1511109876420状态标志,反映运算结果特征。OFDFIFTFSFZFAFPFCF1511109876420控制标志,控制CPU操作。OFDFIFTFSFZFAFPFCF1511109876420CF:进位标志。本次运算中最高位有进位或借位时,CF=1;否则CF=0。例2-2800AH与800BH两数相加。1000000000001010+100000000000101110000000000010101CF=1PF:偶校验标志。本次运算结果低8位中有偶数个“1”时,PF=1;否则PF=0。例2-3810AH与800BH两数相加。1000000100001010+100000000000101110000000100010101CF=1,PF=0AF:辅助进位标志。本次运算结果,若最低4位向较高4位有进位或借位时,AF=1;否则AF=0。例2-4810AH与800BH两数相加。1000000100001010+100000000000101110000000100010101CF=1,PF=0,AF=1ZF:全零标志。本次运算结果为0时,ZF=1;否则ZF=0。例2-5810AH与800BH两数相加。1000000100001010+100000000000101110000000100010101CF=1,PF=0,AF=1,ZF=0SF:符号标志。本次运算结果的最高位为1时,SF=1;否则SF=0。它反映了本次运算结果是正还是负(通常“1”:负)例2-6810AH与800BH两数相加。1000000100001010+100000000000101110000000100010101CF=1,PF=0,AF=1,ZF=0,SF=0OF:溢出标志。本次运算结果超出范围而产生溢出时,OF=1;否则OF=0。例2-7810AH与800BH两数相加。1000000100001010-----负数+1000000000001011-----负数10000000100010101-----正数?CF=1,PF=0,AF=1,ZF=0,SF=0,OF=1TF:单步标志。调试程序时可实现跟踪。IF:中断标志。IF=1,允许CPU响应可屏蔽中断;否则不允许响应。DF:方向标志。在串操作指令中,用于控制内存地址是自动增加还是减小。2-28086CPU的引脚及其功能8086/8088CPU根据它的基本性能,应包括20条地址线,16根数据线,加上控制信号,电源和地线,芯片的引脚比较多。但由于制造工艺的限制,8086/8088CPU芯片采用40条引脚的双列直插式封装,因此部分引脚采用了分时复用的方式。另外8086/8088CPU可以工作在两种工作模式:最小模式