1、1,微机原理与接口技术,第2章 8086/8088微处理器,主要内容,2.1 8086/8088微处理器特点 2.2 8086/8088微处理器的编程结构 2.3 8086/8088 CPU的引脚信号和工作模式 2.4 8086/8088的总线操作时序 2.5 高性能微机技术简介,2,3,2.1 8086/8088微处理器特点,IBM PC/XT微型计算机中的CPU采用8088微处理器 Intel 8086微处理器:是典型的16位微处理器,它采用高速运算性能的HMOS(高密度金属氧化物半导体)技术,集成度2.9万个晶体管/片。使用单一的+5V电源,40条引脚双列直插式封装。时钟频率为5MHz1
2、0MHz,基本指令执行时间为0.3s 0.6s。数据总线:16条 地址总线:20条,可寻址的地址空间为1M(220)B (问题:内部寄存器、运算器为16位,如何产生20位地址?),4,8088:准16位微处理器。CPU内部数据总线16条,外部数据总线8条,20条地址总线,推出8088的目的是为了兼容以前的8位微型机。Intel 8086/8088CPU二者的体系结构类似,其指令系统、指令编码格式、寻址方式都完全相同,软件上完全兼容。,2.1 8086/8088微处理器特点,5,5,采用了流水线处理技术 在8位微处理器中,程序执行由取指令和执行指令的循环来完成的。每条指令执行完成后CPU必须等到
3、下条指令取出来后才能执行。执行指令的过程中,总线和CPU轮流空闲,取指令时CPU空闲,执行指令时总线空闲,执行指令时间长,效率低。 在16位微处理器中,8086微处理器首先采用了预取指令技术,提前把指令从存储器中取到微处理器中,每次执行指令的时候直接在微处理器内部就可以获得指令,从而大大提高微处理器的性能。 预取指令技术是通过设置预取指令缓冲队列来实现的。 8086CPU工作顺序是:取指令、执行指令同时进行,并行工作。,8086 与以往的8位机的最大区别,6,2.2.2 8086的寄存器结构及操作,2.2.1 8086的编程结构,2.2 8086/8088微处理器的编程结构,2.2.3 存储器
4、和I/O端口组织,7,AH AL,BH BL,CH CL,DH DL,SP,BP,DI,SI,通用寄存器 组,数据暂存器,ALU,标志寄存器,EU 控制电路,1 2 3 4 5 6,CS,DS,SS,ES,IP,内部通信 寄存器,总线控制逻辑,地址 加法器,地址总线20位,数据总线,8位,指令队列缓冲器,8086总线,执行部件(EU),总线接口部件(BIU),8086的编程结构(P15),ALU数据总线16位,16位 (8086),(队列) Q总线,8088,8086,8位 (8088),编程结构:从程序员和使用者的角度看到的结构,便于分析和理解,区别于实际的物理布局。 在编程结构下,按功能可
5、将8086分为两个部分:,8,2.2 Intel 8086的编程结构,总线接口部件BIU(Bus Interface Unit),执行部件EU(Execution Unit),2.2.1 8086的编程结构,9,1. 执行部件EU,(a)组成 16位算术逻辑单元(ALU)16位状态标志寄存器FLAG 16位数据暂存器用来暂存参加运算的操作数;,9,完成16位或8位的二进制算术/逻辑运算; 按指令寻址方式计算寻址单元16位的偏移地址EA(Effective Address),并将此EA送到BIU中形成一个20位的实际地址PA(Physical Address也称物理地址),以便寻址1MB的存储空
6、间。 运算结果通过内部总线送到通用寄存器组或BIU的内部寄存器中等待写入存储器。 经ALU运算后的结果特征置入标志寄存器中保存。,10,8个16位通用寄存器组(AX,BX,CX,DX,SP,BP,SI,DI) EU控制电路,负责从BIU的指令队列中取指令,并对指令译码; 根据指令要求向EU内部各部件发出控制命令以完成各条指令的功能。,11,(b)功能负责执行指令 从BIU指令队列(Instruction Stream Queue)中取出指令代码,经指令译码器译码后执行指令所规定的全部功能; 执行指令所得结果或执行指令过程中所需的数据,由EU向BIU发出访问存储器或I/O端口的命令,并提供访问的
7、数据和地址,由BIU对存储器或I/O接口进行读写操作;,1. 执行部件EU,12,执行部件EU主要功能是执行指令: 一般顺序执行,EU不断地从指令队列中取指令连续执行,而省去访问存储器取指令的时间。 需要访问存储器或I/O端口取操作数时,EU将访问地址送给BIU后,要等待操作数到来后才能继续操作; 遇到转移类指令时,要将指令队列中的后续指令作废,等待BIU重新从存储器取出目标地址中的指令代码进入指令队列后,EU才能继续执行指令。,13,(a)组成 4个16位段寄存器CS,DS,SS,ES; 16位指令指针寄存器IP; 6个字节指令队列ISQ(Instruction Stream Queue);
8、,2. 总线接口部件BIU,可存放6字节的指令代码。一般情况下指令队列中总是填满指令,使EU可不断地得到执行的指令。,14,14,将8086CPU的内部总线与外部总线相连,是CPU与外部总线联系的转接电路。包括三组总线: 16条数据总线、20条地址总线和一组控制总线。,20位地址加法器 形成20位实际地址 (Physical Address,也称物理地址) 的地址加法器。专门用来完成由逻辑地址变换成实际地址的功能。实际上是进行一次地址加法,将两个16位的逻辑地址(Logical Address)转换为20位的物理地址,以达到可寻址1M字节的存储空间。,与EU通信的内部寄存器; 总线控制逻辑(或
9、BIU控制电路),15,(b)功能:实现CPU与存储器或I/O口之间的数据传送。 指令队列中出现两个字节(8088空1个字节)为空时(BIU未进入存取操作数的总线周期),自动按CS值和IP值组成20位实际地址到存储器中去取指令,一次取两个字节指令存放到指令队列中;执行转移指令时ISQ复位,BIU将在指令队列中装入转向目标地址处的指令。 由EU从指令队列中取指令,BIU根据EU的请求将20位操作地址传送给存储器; 取来操作数经总线控制逻辑传送到内部EU数据总线,由EU完成内部操作; 操作结果若EU提出请求,则由BIU负责产生20位实际目标地址,将结果写入存储器里;,2. 总线接口部件BIU,16
10、,2.2.2 8086的寄存器结构及操作,17,通用寄存器(8个)可分为两组: 数据寄存器(4个); 地址指针和变址寄存器(4个)。,1. 通用寄存器(General Purpose Register)组,(1)数据寄存器EU中的4个16位寄存器:AX、BX、CX和DX。可用来存放16位的数据或地址,也可把它们当作8个8位寄存 器(AH、AL;BH、BL;CH、CL;DH、DL)来使用,这时只能存放8位数据,而不能用来存放地址。 AX(Accumulator)累加器 BX(Base)基址寄存器CX(Count)计数寄存器 DX(Data)数据寄存器,18,数据寄存器的特殊用途,19,(2)地址
11、指针和变址寄存器 包括SP、BP、SI、DI四个16位寄存器。 可以在运算过程中存放操作数,但只能以字(16位)为单位使用。 常用在段内寻址时提供偏移地址: SP(Stack Pointer)称为堆栈指针寄存器,BP(Base Pointer)称为基址指针寄存器,它们都可以与SS寄存器联用确定堆栈段中的某一存储单元的地址。SP用来指示栈顶的偏移地址,专门用于数据进栈和出栈的位置指示;BP指示堆栈段中一个数据区中的基址位置 。 SI(Source Index)源变址寄存器和DI(Destination Index)目的变址寄存器:它们一般与DS和ES联用,用来存放源操作数和目的操作数在数据段中的
12、偏移地址。,20,地址指针和变址寄存器的特殊用途,21,8086CPU的BIU中设置4个16位段寄存器: 代码段(Code Segment)寄存器CS 数据段(Data Segment)寄存器DS 堆栈段(Stack Segment)寄存器SS 附加段(Extra Segment)寄存器ES,2. 段寄存器组,22,由于8086CPU可寻址的存储器空间是1MB,需要20位地址码,地址范围是00000HFFFFFH。而CPU所有的内部寄存器都只有16位,用这些寄存器只能寻址216B = 64KB,地址范围是0000HFFFFH。 为此把1MB的存储空间分成许多逻辑段,每段最长为64KB,段内地址
13、是连续的。每个段的首地址是一个能被16整除的数(后4位为0)。 段和段之间可以是连续的、断开的、部分重叠的或完全重叠的(每个存储单元的内容不允许发生冲突)。 用段寄存器给定各个逻辑段的首地址的高16位,被称为段基址。偏移地址是指在段内相对于段起始地址的偏移值。,设置段寄存器的原因,?问题 1、8086最少可以分为多少个段? 2、 8086最多可以分为多少个段? 3、下列地址哪些可能是一个段的开始地址: 134546H,23440H,67828H,1FF30H,23,各个逻辑段允许重叠(如代码段与数据段重叠)例如,如果代码段中的程序占有8K(2000H)B存储区,数据段占有2K(800H)B存储
14、区,堆栈段占有256个字节的存储区。此时分段情况如图所示。,代码段的区域本可为02000H11FFFH(64KB),由于程序区只需要8KB,所以程序区结束后的地址就可作为数据段的起始地址(04000H),注意:这里所谓的重叠只是指每个段区的大小允许根据实际情况分配,而不一定非要占有64KB的最大段空间。,CS DS SS ES,段寄存器,存储器,02000H,04000H,8KB代码,2KB数据,256B堆栈,04800H,24,汇编程序一般将源程序分成四个逻辑段: 代码段CS(Code Segment)、数据段DS(Data Segment)、堆栈段SS(Stack Segment)和附加段
15、ES(Extra Segment)。 这4个段的段首址的高16位(段基址)分别由4个段寄存器来存放。它们都是16位寄存器。,CS:存放代码段的段基址。 DS:存放数据段的段基址。 SS:存放堆栈段的段基址。 ES:存放附加段的段基址。,用段寄存器给定各个逻辑段的首地址的高16位,被称为段基址。偏移地址是指在段内相对于段起始地址的偏移值。,25,代码段CS(Code Segment) :用来存放程序代码和常数。系统在取指时将寻址代码段,其段基址和偏移地址分别由段寄存器CS和指令指针寄存器IP给出。 数据段DS(Data Segment) :用于数据的保存。用户在寻址该段内的数据时,可以缺省段的说
16、明,其偏移地址可通过多种寻址方式形成。,26,堆栈段SS(Stack Segment) :“堆栈” 是数据的一种存取方式,按照“先进后出”的方式操作。堆栈指针SP用来指示栈顶的偏移地址。堆栈为保护、调度数据提供了重要的手段。系统在执行栈操作指令时将寻址堆栈段,段基址和偏移地址分别由堆栈段寄存器SS和堆栈指针SP提供。 附加段ES(Extra Segment):该段用于保存参加运算的操作数和运算结果。用户在访问段内的数据时,其偏移地址同样可以通过多种寻址方式来形成,但在偏移地址前要加上段的说明(即段跨越前缀ES)。,27,一个程序分成多少个存储段可以任选,在程序运行的任何时刻,最多只能有4个当前
17、段分别用CS、DS、ES、SS来指明。并且这四个当前段寄存器的作用绝不允许随便调换。 通常CS一定是指向存放有指令代码的各个代码段,SS是指向被开辟为堆栈区的各个堆栈段,DS和ES通常是指向存放数据的数据段。,28,(2)存储器中的逻辑地址和实际地址采用分段结构的存储器中,任何一个逻辑地址由段基址和偏移地址两个部分构成。它们都是无符号的16位二进制数。 任何一个存储单元对应一个20位的实际(物理)地址,它由逻辑地址变换得来,地址运算如下: 物理地址(PA)=段基址16 + 偏移地址(EA) CPU访问存储器时,由BIU中的地址加法器完成把逻辑地址转换成物理地址。转换方法为: 将逻辑地址中的段基
18、址左移4位,形成20位的段首址; 加16位的偏移地址,产生20位实际地址。 说明:CPU和存储器进行数据交换时使用实际地址;程序设计使用逻辑地址,不直接使用实际地址。,29,8086/8088CPU中有一个地址加法器,它将段寄存器提供的段基址自动乘以10H即左移4位,然后与16位的偏移地址相加,并锁存在物理地址锁存器中。物理地址=段基址 * 16 +偏移地址。段基址:CS、DS、ES、SS。偏移地址:IP、DI、SI、BP、SP等。,段寄存器值,偏移量,+,物理地址,16位,4位,16位,20位,存储器物理地址的计算方法,0000,30,31,逻辑地址形式为:段基址:偏移地址 如访问一个地址C
19、85F:109A,对应的实际地址为 C85F0+109A=C968AH 注意:一个存储单元只有唯一编码的实际地址;同一个实际地址可对应多个逻辑地址。例如:地址12345H可以表示为1200:0345或1230:0045,32,32, 如果访问存储器要求读/写操作数,则通常由DS给出段基址(必要时可修改为CS、ES或SS),而其偏移地址要由CPU的指令执行部件根据指令中所给定的寻址方式来进行计算,通常将这样计算得到的偏移地址称为有效地址(EA)。,如果所采用的寻址方式是通过基址指针BP寻址,则段基址要由SS提供(必要时可以修改为CS、DS或ES)。,程序设计过程中必须遵守的系统内部约定:,33,
20、如果执行的是串处理指令,当取源串时,段基址由数据段寄存器DS提供(必要时可修改为CS、ES和SS),偏移地址必须由源变址寄存器SI提供。当取目标串时,段基址必须由附加段寄存器ES提供,偏移地址必须由目标变址寄存器DI提供。,如果对存储器中的堆栈进行操作,则段基址来源于SS,偏移地址来源于SP。,34,不同操作类型下,段基址和偏移地址的关系表 约定的逻辑地址来源,35,(1)指令指针寄存器IP(Instruction Pointer)8086CPU中设置一个16位指令指针寄存器IP,用来存放将要取出的下一条指令在代码段中的偏移地址。在程序运行过程中,BIU可修改IP中的内容,使它始终指向将要取出
21、的下一条指令。,3. 控制寄存器组,注意: IP与CS联用, 表示代码段中要处理的指令的逻辑地址; IP和CS由系统执行,用户一般不能使用或修改。,36,(2)状态标志寄存器F(FLAG) 8086 CPU中设立一个两字节的标志寄存器FLAG(又称PSW(Program Status Word)、FR),有9个标志位: 6个状态标志位,表示运算结果的状态,包括CF、PF、AF、ZF、SF和OF; 3个控制标志位,用来控制CPU的操作,包括IF、DF和TF。,37,状态标志位的定义说明如下: CF(Carry Flag)进位标志位。如果做加法时最高位(字节操作是D7位,字操作是D15位)产生进位
22、或做减法时最高位产生借位,则CF=1,否则CF=0。 PF(Parity Flag)奇偶标志位。如果操作结果中低8位含有偶数个1,则PF=1,否则PF=0。 AF(Auxiliary Carry Flag)辅助进位标志位。如果做加法时D3位(低半字节)有进位或做减法时D3位有借位,则AF=1,否则AF=0。,38, ZF(Zero Flag)零标志位。如果运算结果为零,则ZF=1,否则ZF=0。 SF(Sign Flag)符号标志位。记录运算结果的符号。如果运算结果的最高位(字节操作是D7,字操作是D15)为1,则SF=1,否则SF=0。 OF(Overflow Flag)溢出标志位。在加或减
23、运算中结果超出8位或16位有符号数所能表示的数值范围时,产生溢出,OF=1,否则OF=0。,注意:有符号数和无符号数的溢出问题:判断的标志OF和CF,39, IF(Interrupt Flag)中断标志位。可用指令设置。当IF=1时,CPU可响应可屏蔽中断请求;IF=0,CPU不响应可屏蔽中断请求。 TF(Trap Flag)陷阱标志位,用于单步方式操作。假如TF=1,则CPU处于单步工作方式。在这种工作方式下,CPU每执行完一条指令就自动产生一次内部中断。在调试程序DEBUG中,T命令就是利用这种中断。 DF(Direction Flag)方向标志位。在串处理指令中,若DF=0,表示串处理指
24、令地址指针自动增量,即串操作由低地址向高地址进行;DF=1,表示地址指针自动减量,即串操作由高地址向低地址进行。DF标志位可通过指令预置。,控制标志位的定义说明如下:,40,2.2.3 存储器和 I/O端口组织,1、存储器组织 存储器内部是按字节进行组织的, 两个相邻的字节称为一个“字”。 一个字存入存储器占用相继的2个单元: 低位字节存入低地址,高位字节存入高地 址;字单元地址采用它的低地址来表示。 例如:字单元:(00004H)=1234H字节单元:(00004H)=34H 同一个地址既可以看作字节单元地址, 又可看作字单元地址。 字单元地址:可以是偶数也可以是奇数。 前一种方式为规则存放
25、(存放的字为规则 字),后一种为非规则存放(存放的字为非规则字),00000H 00001H 00002H 00003H 00004H,00005H 00006H 01234H 01235H 01236H,41,对规则字的存取可在一个总线周期完成,对非规则字的存取则需两个总线周期才能完成。8086CPU在组织1MB的存储器时,其存储空间被分成两个512KB的存储库(或称存储体): 高位库(高字节存储体)和低位库(低字节存储体)。 固定与CPU的低位字节数据线D7D0相连的称为低位库,库中的每个单元的地址均为偶数; 固定与CPU的高位字节数据线D15D8相连的称为高位库,库中的每个单元地址均为奇
26、数。两个存储体之间采用字节交叉编址方式。,42,8086存储器的分体结构,2.2.3 存储器和 I/O端口组织,2、I/O端口组织 (1)I/O端口 8086CPU和外设之间通过I/O接口芯片连接; 每个I/O接口芯片上可有一个至几个端口; 一个n位的端口是存储数据的n位寄存器; 端口地址:在系统设计时,要为每个端口分配一个地址,称为端口地址或端口号。每个端口号和存储单元地址一样是唯一的。,43,(2)I/O端口编址方式 一般来说,I/O端口有存储器映像编址(统一编址)和独立编址两种方式。 存储器映像编址(统一编址) 该方式将I/O端口地址置于1MB的存储器空间中,把它们看作存储单元,和存储单
27、元统一编址,每个端口占用一个存储单元的地址。CPU访问存储器的指令和各种寻址方式都可用于I/O端口。I/O接口与CPU的连接方法和存储器芯片与CPU的连接方法类似。 Motorola系列的CPU采用了这种统一编址的方法。,44,45,统一编址的优点是不需要专门的I/O指令,对I/O端口操作的指令类型多,数据存取灵活,方便进行I/O程序的设计;缺点是I/O端口要占用部分存储器的地址空间,程序不易阅读,不容易区分哪些指令在访问存储器,哪些指令在访问外部设备。,独立编址 8086CPU采用这种编址方式。该方式的端口单独编址构成一个I/O空间,不占用存储器地址。CPU设置了专门的输入/输出指令(IN和
28、OUT )和接口控制信号来访问I/O端口。 8086CPU使用16条地址线A15A0作为访问I/O端口的地址线,可访问最多64K个8位端口或32K个16位端口。 8086的端口地址仍为20位,高4位为0。 8086 64KB的I/O空间中,F8HFFH这8个地址是Intel公司保留使用的,用户不能占用,46,独立编址的优点是I/O端口的地址空间独立,控制电路和地址译码电路比较简单,采用专用的I/O指令,使得端口操作的指令在形式上与存储器操作指令有明显区别,程序编制清晰,阅读容易 缺点是输入/输出指令类别少,一般只能进行传送操作。,47,48,2.3 8086/8088 CPU 的引脚信号和工作
29、模式,2.3.1 最大模式和最小模式 2.3.2 8086/8088引脚信号和功能 2.3.3 最小模式 2.3.4 最大模式,49,2.3 8086/8088 CPU 的引脚信号和工作模式,基本概念 有效电平指引脚起作用时的逻辑电平。 有些信号是低电平有效,也称作负逻辑; 有些信号是高电平有效,也称作正逻辑; 三态是指引脚除了能正常地输入或输出高、低电平之外,还能输出高阻状态。最小模式又称为单微处理器模式;最大模式又称多微处理器模式。,8086/8088具有两种工作模式:最小模式和最大模式,取决于硬件。,50,指令周期:执行一条指令所需要的时间。 (P26) 总线周期(机器周期):CPU通过
30、总线与存储器或I/O接口进行一次数据传输所需的时间。 T状态(时钟周期):CPU处理动作的最小单位。,T1,T2,T3,TW,T4,总线周期,51,2.3.1 最大模式和最小模式,最小模式:是指系统中只有8086或8088一个微处理器,所有总线控制信号均由CPU直接产生,因此,系统的总线控制逻辑被减到最少。最小模式用在规模较小的8086/8088系统中。最大模式:是相对最小模式而言,是指系统中包含两个或多个微处理器,其中主处理器是8086或者8088,其余处理器称为协处理器,它们是协助主处理器工作的。和8086或8088配合的协处理器有数值运算协处理器8087和输入/输出协处理器8089。系统
31、的总线控制信号主要由总线控制器产生,系统的总线控制逻辑相对复杂一些,最大模式用于中等规模的或大型的8086/8088系统。,数值运算协处理器8087专门用于数值运算,能实现多种类型的数值操作,例如高精度的整数和浮点运算,也可以进行超越函数计算。这些算法通常用软件实现,而8087用硬件实现,在系统中加入8087后,会提高系统的数值运算速度。 输入输出处理器8089的主要工作是数据的输入输出和数据格式转换,它有用于输入/输出操作的指令系统,能够为输入/输出设备工作,8086/8088不再承担I/O任务,提高了主处理器的效率。 实现:8086/8088的第33引脚( )接地为最大模式,接+5V电压为
32、最小模式。,52,53,dual in-line package (DIP),8086/8088 CPU具有40条引脚,采用双列直插(DIP)式 的封装形式 。,2.3.2 8086/8088引脚信号和功能(P19),54,Sockets for 16-, 14-, and 8-pin packages.,55,The 8086 pin-assignments in min and max mode.,Pin numbering is counter-clockwise.,56,引脚图如下,其中带括号的引脚功能为最大模式下的功能。,57,1、地址/数据总线 (Address Data Bus)
33、 AD15-AD0(引脚2-16, 39):地址/数据复用引脚, 双向, 三态 (8086/8088)AD15-AD0:16位地址总线A15-A0,输出访问存储器或I/O接口的地址信息 (8086) AD15-AD0 :16位数据总线D15-D0 ; (8088)AD7-AD0:8位数据总线D7-D0 。 在总线周期的T1状态输出要访问的存储器或I/O端口的地址。T2T3状态,对于写操作,是传输数据,对于读操作,则处于浮空状态,等待数据传入。 地址/数据总线复用,分时工作。,2、地址/状态总线 (Address Status) A19/S6-A16/S3 (引脚35-38)地址/状态复用引脚,
34、输出,三态。,8086/8088的引脚按其特性分为5类:,58,A19/S6-A16/S3:输出访问存储器的20位地址的高4位地址A19-A16,访问I/O接口时,则不使用。 A19/S6-A16/S3:输出CPU的工作状态。 A19/S6-A16/S3:分时工作,在总线周期的T1状态:输出地址的高4位信息;T2T4状态:输出状态信息。 S6:总为0,即始终保持低电平。指示8086/8088当前与总线是相连的。 S5:表明中断允许标志IF当前的设置。S5=0,表示CPU中断是关闭的,禁止一切可屏蔽中断源的中断请求;S5=1,表示CPU中断是开放的,允许一切可屏蔽中断源的中断申请。 S4、S3:
35、指出当前使用段寄存器的情况。,59,S4、S3组合所对应的段寄存器情况S4 S3 段寄存器0 0 当前正在使用ES0 1 当前正在使用SS1 0 当前正在使用CS1 1 当前正在使用DS,3、控制总线 (1) (Bus High Enable/Status,引脚34): 高8位数据总线允许/状态复用引脚。在总线周期的T1状态,此引脚输出 信号,表示高8位数据线D15-D8上的数据有效。在T2、T3、TW和T4状态时,此引脚输出状态信号S7(8086中未定义)。,在8086系统中,若要读/写从奇地址单元开始的一个字,需要两个总线周期。(包括奇地址的16位端口和存储器) 在8088中,引脚34在最
36、大模式中恒为高电平; 在最小模式中,输出 信号,此信号与其它信号合作一起决定8088芯片当前总线周期的读/写动作。(P22),60,和低位地址A0组合表示不同的数据传送操作:A0 操 作 所用的数据引脚0 0 从偶地址单元开始读/写一个字 AD15AD00 1 从奇地址单元或端口读/写一个字节 AD15AD81 0 从偶地址单元或端口读/写一个字节 AD7AD01 1 无效0 1 从奇地址开始读/写一个字(在第一个总线周期,将低8位数送到AD15AD8 ,在 AD15AD01 0 第二个总线周期,将高8位数送到AD7AD0 ),(Read):32脚,读控制信号, 三态输出, 低电平有效。 =0
37、表示当前CPU正在对存储器或I/O端口进行读操作。 (3) (Write):29脚,写控制信号, 三态输出, 低电平有效。表示当前CPU正在对存储器或I/O端口进行写操作 (4) (Memory/Input and Output):28脚, 存储器或I/O端口访问信号,三态输出。 =1,表示CPU正在访问存储器; =0,表示CPU正在访问I/O端口。此信号接存储器和接口芯片的 片选端。 (3)/(4)P22 (5)READY:22脚,准备就绪信号,输入,高电平有效。READY=1,表示CPU访问的存储器或I/O端口已准备好传送数据。若CPU在总线周期T3状态检测到READY=0,表示未准备好,
38、CPU自动插入一个或多个等待状态TW,直到READY=1才可进入T4状态,完成数据传送。,61,(6)INTR(Interrupt Request):18脚, 可屏蔽中断请求信号, 输入, 高电平有效。当INTR=1, 表示外设向CPU发出中断请求,CPU在当前指令周期的最后一个T状态去采样该信号,若此时中断允许标志IF=1,CPU响应中断,执行中断服务程序;否则, 外设的中断请求被屏蔽。(Interrupt Acknowledge): 24脚,中断响应信号,输出,低电平有效。表示CPU响应了外设发来的中断申请信号INTR。(P22) NMI(Non-maskable Interrupt):1
39、7脚,非屏蔽中断请求信号,输入,上升沿触发。该请求信号不受IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则CPU执行完当前指令后立即响应中断。 (9) :23脚,测试信号,输入,低电平有效。结束等待状态。和WAIT指令结合使用,用于CPU与外部硬件同步。每隔5个时钟周期,CPU对此引脚进行测试。当CPU执行WAIT指令时,处于等待状态,若 结束等待状态,CPU继续执行WAIT后的指令。,62,63,(10)RESET:21脚,复位信号,输入,高电平有效。RESET信号至少要保持4个时钟周期。复位时:标志寄存器、IP、DS、SS、ES及指令队列缓冲器清零,CS=FFFFH,复位后CPU从FF
40、FF0H处开始执行程序。 (P29) (11)ALE(Address Latch Enable):(11-15 P22) 25脚,地址锁存允许信号,输出,高电平有效。 ALE是8086/8088提供给地址锁存器8282/8283的控制信号,在总线周期的T1状态,ALE输出高电平,表示当前地址/数据复用总线上输出的是地址信息,8282/8283将地址进行锁存(对地址进行备份)。,64,(12) (Data Transmit/Receive):引脚27,数据发送/接收控制信号,三态输出。此信号控制数据总线上的收发器8286/8287的数据传送方向, ,发送数据-写操作; , 接收数据-读操作。 (
41、13) (Data Enable):引脚26,数据允许信号,三态输出,低电平有效。提供给数据总线收发器8286/8287的控制信号,打开或者关闭总线收发器。接至其 端作为选通信号,通知收发器,CPU准备接收或发送数据。 在读周期, 从T2状态的中间开始变为低电平,一直保持到T4的中间;写周期时, 在T2的一开始就变为低电平,一直保持到T4的中间。,65,(14)HOLD(Hold Request):31脚,总线保持请求信号,输入,高电平有效。当系统中CPU之外的另一个控制器要求使用总线时,通过它向CPU发一高电平的请求信号。(15)HLDA(Hold Acknowledge):30脚,总线保持
42、响应信号,输出,高电平有效。当HLDA有效时,表示CPU对其它控制器的总线请求作出响应,与此同时,所有与三总线相接的CPU的线脚呈现高阻抗状态,从而让出总线。 (16) (Minimum/Maximum Mode Control):33脚,最小/最大工作模式选择信号,输入。 ,表示CPU工作在最小模式系统; ,表示CPU工作在最大模式系统。 (17)CLK:主时钟信号,输入。8086/8088的时钟频率为5MHz。时钟信号为CPU总线控制逻辑电路提供定时。,66,4、电源线VCC (40引脚)和地线GND(1、20引脚) 8086/8088采用单+5V,两条地线均应接地。 5、最大模式下的有关
43、引脚(P23-24) (1)QS1、QS0(Instruction Queue Status):25、24脚,指令队列状态信号,输出,高电平有效。这两个信号组合起来提供了前一个时钟周期中指令队列的状态。QS1 QS0 含义0 0 无操作0 1 从指令队列取出指令的第一个字节1 0 队列为空1 1 从指令队列取出指令的后续字节,67,(2) (Bus Cycle Status):28、27、26脚,总线周期状态信号,三态输出。它们提供CPU当前总线周期的操作类型,由总线控制器8288根据这些信号对存储器及I/O进行控制。操作过程 8288控制命令(P23-24)0 0 0 发中断响应信号 0 0
44、 1 读I/O端口0 1 0 写I/O端口0 1 1 暂停 无1 0 0 取指令 1 0 1 读存储器1 1 0 写存储器 1 1 1 无源状态 无,68,(3) (Request /Grant):30、31脚,总线请求信号(输入)/总线请求允许信号(输出),双向,低电平有效。在最大工作模式时,可供CPU以外两个协处理器用来发出使用总线请求和接收CPU对总线请求信号的回答信号。 优先级比 高。 (4) :29脚,总线封锁信号,三态输出,低电平有效。 ,CPU不允许其它控制器占用总线。,69,8088与8086在引脚上有三点区别:,1、外部数据总线的宽度不同。8086的外部数据总线为16位(AD
45、15AD0);8088的外部数据总线为8位(AD7 AD0)。,2、 第28引脚不同。8086的第28引脚为 ,即该引脚信号为高电平,表示对存储器操作,为低电平则是对I/O端口操作;8088为 。,3、第34引脚不同。8086的第34引脚为 ,其功能已如前述;8088的第34引脚为 ,在最小模式下的功能已如前述,在最大模式该引脚恒为“1”。除以上三点以及它们内部指令队列长度不同外,8088与8086在软、硬件上完全相同,这就是我们将两者一起介绍的理由。,70,8086的时钟和总线周期概念(P26) (一)8284A时钟信号发生器,2.3.3 最小模式,内部电路,71,READY,1 18,2
46、17,3 16,4 15,5 14,6 13,7 12,8,11,9 10,8284A,CSYNC,PCLK,AEN,1,RDY,1,RDY,2,AEN,2,CLK,GND,V,CC,X,1,X,2,ASYNC,EFI,F/C,OSC,RES,RESET,8284A引脚特性,8284A引脚及功能 8284A的功能有三个: 产生恒定的时钟信号,对准备信号(READY)及复位信号(RESET)进行同步。 外界控制信号RDY及 信号可以在任何时候到来,8284A能把它们同步在时钟下降沿时输出READY及RESET信号到8086CPU。,72,(1)时钟信号产生 内部振荡器X1,X2,外接晶体即可振荡
47、。 外时钟输入端EFI。 时钟选择端 ,为高选择外时钟,为低选择内时钟。 OSC:内部时钟同频信号。 PCLK:输入时钟6分频信号,占空比1/2。 CLK:输入时钟3分频信号,占空比为1/3。8086时钟。 CSYNC:外部时钟的同频信号。使用内部时钟时,CSYNC接地。,73,(2)复位逻辑 输入 经斯密特触发器分频后,由系统时钟同步产生RESET信号,给计算机系统复位。 (3)准备好控制逻辑 准备好控制电路有两组控制信号, 和 ,由ASYNC控制多插入一个时钟周期。ASYNC为低,多插入一个时钟周期。,74,74,根据不同的振荡源,8284A有两种不同的连接方法: (1)采用脉冲发生器作振荡源,与EFI端相连; (2)采用石英晶体振荡器作为振荡源,两端接X1,X2。,8284A的工作原理:当外界就绪信号RDY输入8284A,经时钟下降沿同步后,输出READY信号作为8086的就绪信号READY;外界的复位信号输入8284A,经整形并由时钟下降沿同步后,输出RESET信号作为8086的复位信号RESET,其宽度不得小于4个时钟周期。外界的RDY和复位信号可以在任何时候发出,但送至CPU的信号都是经时钟同步后的信号。,