《微机原理及应用》第二章8086/8088微处理器及其体系结构一、8086/8088CPU的编程结构二、8086/8088的存储器组织三、8086/8088的I/0组织四、8086/8088CPU的引脚功能和工作方式五、8086/8088的操作及其时序作业一、8086/8088CPU的编程结构1、8086/8088CPU的内部结构2、8086/8088CPU的寄存器结构二、8086/8088的存储器组织1、存储器组织2、存储器的分段和物理地址的形成三、8086/8088的I/0组织由于I/O设备的工作速度远远低于CPU,所以I/O设备不能直接和CPU总线相连,必须通过I/O接口芯片。每个I/O接口芯片都有一个或几个端口,一个端口对应一个I/O地址,就象存储单元地址一样。8086/8088设有输入指令IN和输出指令OUT用于访问I/O端口。四、8086/8088CPU的引脚功能和工作方式8086/8088CPU是采用40条引脚DIP(双列直插式)封装。1、8086/8088CPU两种工作方式2、两种工作方式的公用引脚3、最小工作方式引脚4、最大工作方式引脚120191817161514131211109876543240212223242526272829303132333435363738398088地地CLKINTRNMIAD0AD1AD2AD3AD4AD5AD6AD7A8A9A10A11A12A13A14Vcc(5V)RESETREADYTESTINTA(QS1)ALE(QS0)DEN(S0)DT/R(S1)M/IO(S2)WR(LOCK)HLDA(RQ/GT1)HOLD(RQ/GT0)RDMN/MXSSO(HIGH)A19/S6A18/S5A17/S4A16/S3A15CPU工作方式1、最小工作方式系统中只有一个微处理器8088(或8086),所有的总线控制信号都直接由8088(或8086)产生,这种方式适合较小规模的应用。2、最大工作方式系统中可以只有一个处理器,也可以有两个或以上的微处理器,其中一个作为主处理器,其他作为后援处理器,用来协助主处理器处理某些方面的工作,这种方式是在需要8088构成中等或较大系统。五、8086/8088的操作及其时序1、时钟周期(ClockCycle)8086/8088CPU的所有操作均是在时钟脉冲CLK的统一控制下进行的。由外部的一片8284A芯片提供;若时钟频率为5MHz(也称主频),则时钟周期或一个T状态是200ns。2、指令周期执行一条CPU指令所需的时间,称为一个指令周期。一个指令周期是由若干个总线周期组成。五、8086/8088的操作及其时序3、总线周期(BusCycle)CPU执行指令过程中,执行访问存储器或I/O端口的操作都统一交给BIU的外部总线完成,进行一次访问(存取一个字节)所需的时间称为一个总线周期(分“读”和“写”)。一个基本的总线周期有四个T状态组成。在第一个T状态(T1)CPU发送20位地址,并产生地址锁存信号,把地址装入地址锁存器;五、8086/8088的操作及其时序3、总线周期(BusCycle)在第二个T状态(T2),CPU从总线上撤销地址,并将总线低16位输出设置成高阻,为读入数据作准备,或在低16位总线上送出写数据,准备进行写操作。在总线的高4位,输出总线周期状态(S6——S3),这些状态信息主要用于诊断监视。五、8086/8088的操作及其时序3、总线周期(BusCycle)在T3状态,CPU高4位继续提供状态信息;在低16位地址/数据线上,或者连续发出写数据,或者采样读入数据。如果被选中的存储器或I/O不能以CPU的最大传送速率传送数据,则该设备必须通知CPU“未准备好”,迫使CPU在T3状态后插入等待状态TW。CPU在T3的上升沿采样READY信号,是低电平,就插入等待状态TW。五、8086/8088的操作及其时序3、总线周期(BusCycle)当选中的设备完成它的读写操作时,它就发出“准备就绪(READY)”信号,迫使CPU脱离TW状态并继续工作。如果执行的总线周期是读周期,CPU则在最后一个等待状态的结束读取数据。总线周期在T4状态结束,选中的设备在逻辑上与总线脱离。五、8086/8088的操作及其时序4、CPU时序一个微机系统要完成各种任务,需要执行许多操作,这些操作也是在时钟周期的同步下,按时序一个状态一个状态地执行,这样,就构成了CPU的操作时序。系统复位和启动操作;总线操作;中断操作;暂停操作;总线保持或总线请求/允许操作。最小方式下的读总线周期最小方式下的写总线周期最小方式下的读总线周期高4位和BHE低16位T1T2T3(TW)T4读总线周期地址,BHES7~S3地址输出读数据高阻最小方式下的写总线周期高4位和BHE低16位T1T2T3(TW)T4写总线周期地址,BHES7~S3地址输出写数据1、8086/8088CPU的内部结构8位微处理器执行一段程序是通过重复执行以下步骤来完成的。①从内存中取出一条指令,分析指令操作码;②读出一个操作数(如果指令需要操作数);③执行指令;④将结果写入内存储器(如果指令需要)。微处理器在取指令、取操作数和存储操作数时要占用总线;分析操作码和执行指令时不占用总线。(图示)1、8086/8088CPU的内部结构(2)8086/8088CPU内部结构基本相同,有20条外部地址总线,可以寻址1M内存空间;8086CPU的内部和外部数据总线均是16位,是典型的16位微处理器;8088CPU内部数据总线是16位,外部数据总线是8位,所以被称为准16位微处理器。1、8086/8088CPU的内部结构8086/8088CPU设计成两个独立的功能部件:(1)执行部件EU;(2)总线接口部件BIU。EU和BIU能相互独立地工作,能使大部分的取指令和执行指令重叠进行。EU执行的是BIU在前一时刻取出的指令;同时,BIU又再取出EU在下一时刻要执行的指令。(图示)8086/8088CPU的内部结构简图执行部件(ExecutionUnit—EU)作用:执行指令,与外界的联系必须通过总线接口部件。①EU负责从BIU(总线接口部件)的指令队列中取指令,并对指令译码;②根据指令要求,向EU内部各部件发出控制命令以完成各条指令的功能。说明:对8086/8088来说,EU完全一样执行部件(ExecutionUnit—EU)EU主要完成两种类型的操作:①算术运算和逻辑运算(由算术逻辑单元ALU完成);②按指令的寻址方式计算出16位的偏移地址,并将它送到BIU(总线接口部件)中,形成20位的实际地址。当EU执行完一条指令,就再到BIU的指令队列前部取出BIU预先读入的指令代码。若指令队列是空的,则EU处于等待状态;一旦指令队列中有一条指令,EU立即取出执行。总线接口部件(BusInterfaceUnit—BIU)作用:根据EU的请求,完成CPU与存储器、CPU与I/O之间的信息传送。取指令时,从存储器指定地址取出指令送入指令队列排队;执行指令时,根据EU命令对指定存储单元或I/O端口存取数据。说明:对8086/8088来说,BIU有差别:8088外部数据总线是8位,指令队列是4个字节;8086的外部数据总线是16位,指令队列是6个字节。总线接口部件(BusInterfaceUnit—BIU)BIU指令队列中,若出现一个空字节(8086是两个空字节),而且EU(执行部件)没有命令BIU对存储器或I/O端口进行访问,则BIU自动执行总线操作,读出指令并填入指令队列中,直至满为止(8088是4个字节,8086是6个字节)。当EU(执行部件)执行完转移、调用和返回指令时,BIU将清除原队列中的内容,从新地址重新开始取指令,新取的第一条指令将直接送到EU去执行,随后取来的指令填入指令队列。当指令队列已填满指令,而又没有访问存储器或I/O端口的命令,BIU进入空闲状态。8088微处理器的内部结构框图通用寄存器组暂存寄存器ALU标志寄存器EU控制器段寄存器组指令指针IP内部寄存器∑指令队列总线控制电路BIU(总线接口部件)ALU数据总线(16位)地址总线(20位)数据总线(16位)(执行部件)EU(8位)8086/8088总线EU与BIU之间的通讯16位的ALU数据总线和8位的指令队列总线用于EU内部和EU与BIU之间的通讯。16位CPU内部工作过程简述如下:1)EU部件从BIU部件的指令队列前部取出指令(指令代码和数据),然后对指令进行译码,并执行指令规定的操作;2)在执行指令的过程中,如果指令要求访问存储器或I/O端口,那么,EU(执行部件)就会请求BIU(总线接口部件),进入总线周期,完成要求的操作。ALU-ArithmeticandLogicUnitALU—算术逻辑单元;取指令和执行指令示意图(1)8位CPU(如8080)t忙忙忙忙忙总线BUSt取指1取指4取指3取指2取指5CPU执行1执行2执行5执行3执行4取指令和执行指令示意图(2)8位CPU(如8080)t忙忙忙忙忙总线BUSt取指1取指4取指3取指2取指5CPU执行1执行2执行5执行3执行416位CPU(8086/8088)t忙忙忙忙忙总线BUSt取指1取指4取指3取指2取指5CPU执行1执行2执行5执行3执行4··················t8086/8088的寄存器结构8086/8088CPU内部具有13个16位寄存器和1个16位但只用了9位的标志寄存器:1)通用寄存器组(8个);2)段寄存器组(4个);3)控制寄存器组(2个)。图示通用寄存器组共有8个16位的通用寄存器:①数据寄存器②地址指针寄存器和变址寄存器①数据寄存器AX、BX、CX、DX,用于存放16位的数据和地址。可以拆分成AH、AL、BH、BL、CH、CL、DH、DL,用来存放8位数据,可以独立寻址,独立使用。隐含使用:AX作为累加器;BX作为基址寄存器;CX作为计数寄存器;DX在乘除运算中做辅助累加器。②地址指针寄存器和变址寄存器SP、BP、SI、DI,都是16位寄存器,可以存放数据,通常用来存放逻辑地址的偏移量,是形成20位物理地址的其中一部分。②地址指针寄存器和变址寄存器SP—堆栈指针,是栈顶的偏移量。BP—基址指针,用于存放位于堆栈段中的一个数据区基址的偏移地址。SI—源变址寄存器,存放源操作数地址的偏移量;DI—目的变址寄存器,存放目的操作数地址的偏移量;SP、BP的段基址由寄存器SS提供,SI、DI其段基址由寄存器DS提供。段寄存器组(Segmentregister)8086/8088CPU把可以直接寻址的1M字节的内存空间,分成称为“段”的逻辑区域,每个“段”的物理长度为64K(216),而段的起始地址由4个“段寄存器”决定。CS—代码段寄存器,指向当前的代码段,指令由此段中取出;DS—数据段寄存器,指向当前的数据段;SS—堆栈段寄存器,存放当前的堆栈段的段基址;ES—附加段寄存器,存放附加数据段的段基址,在进行字符串操作时,作为目的地址使用。控制寄存器组①指令指针IP②标志寄存器①指令指针(InstructionPointer—IP)指令指针IP是一个16位寄存器,总是存放着下一次要取出的指令的偏移地址。特点:1)用户程序不能使用IP,它由BIU(总线接口部件)自动修改;2)转移指令、过程调用指令和返回指令会改变IP的内容。②标志寄存器(FlagRegister—FR)标志寄存器FR是一个16位寄存器,其中9位作为标志位:其中6个状态标志由EU(执行部件)设置,反映ALU算术或逻辑运算结果的某些特征;其他3个是控制标志位,用来控制微处理器的某些操作,可以由指令设置。OFPFAFCFZFSFTFIFDF1514131211109876543210———————6个状态标志位CF—进位标志,加法时的最高位(D7或D15)产生进位或减法时最高位出现借位,则CF=1,否则CF=0;AF—辅助进位标志,供BCD码使用。当D3位出现进位或借位时AF=1,否则AF=0;OF—溢出标志,带