1、1,第二章 微处理器和总线,主要内容一、 8086/8088微处理器功能结构 二、 8086/8088的存储器即I/O组织 三、 8086/8088引脚及功能 四、 8086/8088的总线与时序 五、 8086/8088系统配置,2,第二章 微处理器和总线,透彻理解与熟练掌握8086/8088内部组成结构、 寄存器结构与总线周期等。深入理解存储器的分段设计。正确理解与熟练掌握物理地址和逻辑地址关系。理解堆栈及其操作。理解“段加偏移”寻址机制。,3,Intel 系列CPU一直占着主导地位。 Intel 8086/8088、Z8000 和 MC68000 为代表的16位微处理器是第3代产品,其性
2、能已达到中、高档小型计算机的水平。 8086/8088后续的80286、80386、80486以及Pentium系列CPU结构与功能已经发生很大变化,但从基本概念与结构以及指令格式上来讲,仍然是经典8086/8088CPU的延续与提升。 其它系列流行的CPU (如AMD公司的6X86MX/M等) 也与80x86CPU兼容。,前言(一),4,8086是Intel系列的16位微处理器。 8086采用HMOS工艺,集成2.9万个晶体管,单一的+5V电源,40条引脚,双列直插式封装,时钟频率510MHz,最快的指令执行时间为0.4s。 8086有16根数据线,20根地址线,寻址1MB的存储单元和64K
3、B的I/O端口。,8088是准16位微处理器。内部寄存器、运算器以及内部数据总线都是16位,但外部数据总线为8条。,前言(二),5,从功能上讲,可分为两个独立的部分,并行重叠操作:,CPU内部结构(一),6,总线接口单元 (Bus Interface Unit, BIU):,执行单元 (Execution Unit, EU):,BIU从内存预取指令送到指令队列缓冲器; CPU执行指令时,BIU配合EU对指令的内存单元或I/O端口存取数据。,负责执行指令,即,执行的指令从BIU的指令队列缓冲器中取得; 指令执行的结果或所需要的数据,由EU向BIU发出请求; 再由BIU对存储器或I/O端口进行存取
4、。,负责完成CPU与存储器或I/O设备之间的数据传送。即,CPU内部结构(二),7,EU与BIU,当EU从指令队列中取走指令,指令队列出现空字节时,BIU就自动执行一次取指令周期,从内存中取出后续的指令代码放入队列中; 当EU需要数据时,BIU根据EU给出的地址,从指定的内存单元或外设中取出数据供EU使用; 在运算结束时,BIU将运算结果送入指定的内存单元或外设; 如果指令队列为空,EU就等待; 若BIU正在取指令,EU发出访问总线的请求,则必须等BIU取指令完毕后,该请求才能得到相应; 一般情况下,程序顺序执行,当遇到跳转指令时,BIU就使指令队列复位,从新地址取出指令,并立即传给EU执行。
5、,8,4个16位段地址寄存器代码段寄存器(Code Segment):取得CPU所执行的指令。数据段寄存器(Data Segment):存放程序所使用的数据。堆栈段寄存器(Stack Segment):堆栈操作的执行地址在此段中。附加段寄存器(Extra Segment):也用来存放数据。,6字节指令队列缓冲器 16位指令指针寄存器 IP (Instruction Pointer)20位地址加法器总线控制器,总线接口单元组成,9,用于存放预取的指令。 8086指令队列为6个字节。 在执行指令的同时,从内存中取下面1条或几条指令,取来的指令依次放在指令队列中。 采用“先进先出”的原则。 指令队列
6、的存在使8086/8088的EU和BIU并行工作,从而减少了CPU为取指令而等待的时间,提高了CPU的利用率,加快了整机的运行速度,另外也降低了对存储器存取速度的要求。,指令队列缓冲器,10,16位指令指针(Instruction Pointer, IP),IP中含有BIU要取的下一条指令(字节)的偏移地址。,IP在程序运行中自动加1,指向要执行的下一条指令(字节)。,有些指令能使IP值改变或使IP值压进堆栈,或由堆栈弹出恢复原址。,指令指针寄存器,11,8086有20根地址线,内部寄存器只有16位。,“段加偏移”技术:,段寄存器存放确定各段起始地址的16位段地址信息。 由IP提供或由EU按寻
7、址方式计算出寻址单元的16位偏移地址, 简称偏移量。 将偏移地址与左移4位后的段寄存器内容同时送到地址加法器,相加后形成20位实际地址。,地址加法器和段寄存器,12,16位算术逻辑单元 (ALU)算术、逻辑运算,计算16位偏移量 16位标志寄存器FCPU的运算状态特征或存放控制标志 数据暂存寄存器协助ALU完成运算 通用寄存器组4个16位数据寄存器,4个16位指针与变址寄存器 EU控制电路控制、定时与状态逻辑电路,执行单元组成,13,8086 内部寄存器结构共有13个16位寄存器和1个只用了9位的16位标志寄存器。(共14个16位寄存器),8086的寄存器结构,段寄存器,控制寄存器,14,数据
8、寄存器AX,BX,CX,DX 数据寄存器一般用于存放参与运算的数据或运算结果。 每一个数据寄存器都是16位寄存器,但又可将高、低8 位分别作为两个独立的8 位寄存器使用。它们的高8 位记作AH、BH、CH、DH,低8 位记作AL、BL、CL、DL,这给编程带来了很大的方便。,多数情况下,用于算术运算或逻辑运算指令中。,有些指令中,有特定的用途。,通用寄存器(一),15,数据寄存器各自习惯用法,上述4 个寄存器一般作为通用寄存器使用,但又有各自的习惯用法。 (1) AX称为累加器,在乘除法运算、串运算和I/O 指令中都作为专用寄存器。 (2) BX称为基址寄存器,在计算机寻址时,常用来存放基址。
9、 (3) CX称为计数寄存器,在循环和串操作指令中用作计数器。 (4) DX称为数据寄存器,在寄存器间接寻址的I/O 指令中存放I/O 端口地址,在做双字长乘除法运算时,DX与AX 合起来存放一个双字长数据(32 位),其中DX存放高16 位。,16,地址指针寄存器SP、BP(16位,存放偏移地址),堆栈指针寄存器SP和基址指针寄存器BP。用来指明当前堆栈段中数据所在的地址。,SP(Stack Pointer):给出栈顶的偏移地址(入栈和出栈指令时)。,BP(Base Pointer):存放位于堆栈段中的数据区基地址的偏移地址。,通用寄存器(二),17,源变址寄存器SI和目的变址寄存器DI。存
10、放当前数据段的偏移地址。,SI(Source Index):源操作数的偏移地址。,DI(Destination Index):目的操作数的偏移地址。,变址寄存器(16位,存放偏移地址),通用寄存器(三),18,4个16位段寄存器,8086 指令可直接访问。 CS(Code Segment):存放代码段的段地址。 SS(Stack Segment):存放堆栈段的段地址。 DS(Data Segment): 存放数据段的段地址。 ES(Extra Segment):存放附加段的段地址,用于存放处理后的数据。,段寄存器是为实现“段加偏移”寻址基址而设置的。,段寄存器,19,段寄存器的使用,段寄存器的
11、设立不仅使8088的存储空间扩大到1M,且为信息按特征分段存储带来了方便。 在存储器中,信息按特征可分为:程序代码、数据和堆栈等。 因此存储器可相应地划分为: 程序段:用来存放程序的指令代码; 数据段及附加段:用来存放数据和运算结果; 堆栈段:用来传递参数、保存数据和状态信息。,20,表2.1 存储器操作时段地址和段内偏移地址的来源,21,8086 标志寄存器F为16位,用了其中9位。 6个状态标志位:CF,PF,AF,ZF,SF,OF 3个控制标志位:DF,IF,TF,0,7,8,15,FL,FH,2,4,6,9,10,11,溢出标志,方向标志,中断允许标志,跟踪标志,进位标志,奇偶标志,辅
12、助进位标志,零标志,符号标志,标志寄存器(一),22,状态标志位:反映算术或逻辑运算后结果状态。,CF(Carry Flag):进位标志,D0位。执行结果在最高位上产生了一个进位或借位,CF=1;无进位或借位,CF=0。会受移位、循环指令影响。,PF(Parity Flag):奇偶性标志,D2位。执行结果的低8位中有偶数个“1”时,PF=1;否则PF=0。机器中传递信息时,对产生的代码出错情况提供检测条件。,标志寄存器(二),23,AF(Auxiliary Flag):辅助进位标志,D4位。执行结果的低4位向高4位有进位或借位时,AF=1;否则AF=0。 AF标志主要用于实现BCD码算术运算结
13、果的调整。,ZF(Zero Flag):零标志,D6位。如运算结果为零,ZF=1;如运算结果不为零,ZF=0。,标志寄存器(三),24,SF(Sign Flag):符号标志,D7位。如运算结果为负数,SF=1;如运算结果为正数,ZF=0。,OF(Overflow Flag):溢出标志,D11位。如带符号数在进行算术运算时产生了溢出,OF=1;如无溢出,OF=0。溢出表示运算结果已经超出机器能够表示的数值范围。,标志寄存器(四),25,控制标志位:控制CPU的操作,由程序设置或清除。,DF(Direction Flag):方向标志,D10位。控制数据串操作指令的步进方向。若用指令STD将DF=1
14、,数据串操作过程中地址自动递减;若用指令CLD将DF=0,则地址自动递增。,标志寄存器(五),26,IF(Interrupt Flag):中断允许标志,D9位。控制可屏蔽中断。若用指令STI将IF=1,允许接受外部从INTR引脚发来的可屏蔽中断请求;若用指令CLI将IF=0,禁止接受外部发来的可屏蔽中断请求。IF的状态不影响非屏蔽中断(NMI)请求,也不影响CPU响应内部的中断请求。,标志寄存器(六),27,TF(Trap Flag):跟踪(陷井)标志,D8位。为方便调试程序而设置的。若TF=1,CPU处于单步工作方式;若TF=0,正常执行程序。 总结: 对于状态标志,CPU 在进行算术逻辑运
15、算时,根据操作结果自动将状态标志位置位(等于1)或复位(等于0); 对于控制标志,事先用指令设置,在程序执行时,检测这些标志,用以控制程序的转向。,标志寄存器(七),28,二、8086/8088存储器和I/O组织,1、8086/8088的存储空间 8086/8088有20条地址线,可直接对1 M个存储单元进行访问。每个存储单元存放一个字节型数据,且每个存储单元都有一个20位的地址,这1 M个存储单元对应的地址为00000HFFFFFH,如图2.1所示。一个存储单元中存放的信息称为该存储单元的内容。如图2.1所示,00001H单元的内容为9FH,记为:(00001H)=9FH。,29,图2.1
16、数据在存储器中的存放,30,20条AB,寻址1M存储空间; 按字节组织,每个字节唯一地址; 字节:顺序存放 字:低位字节放在低地址中高位字节放在高地址中 双字:低位字是偏移量高位字是段地址 规则字:低位字节存放在偶数地址 非规则字:低位字节存放在奇数地址,数据在存储器的存放,31,字和双字型数据存放,若存放的是字型数据(16位二进制数),则将字的低位字节存放在低地址单元,高位字节存放在高地址单元。如从地址0011FH开始的两个连续单元中存放一个字型数据,则该数据为DF46H,记为:(0011FH)=DF46H。 若存放的是双字型数据(32位二进制数,这种数一般作为地址指针,其低位字是被寻址地址
17、的偏移量,高位字是被寻址地址所在段的段地址),这种类型的数据要占用连续的4个存储单元,同样,低字节存放在低地址单元,高字节存放在高地址单元。如从地址E800AH开始的连续4个存储单元中存放了一个双字型数据,则该数据为66A65E65H,记为:(E800AH)=66A65E65H。,32,2、存储器的段结构,8086/8088 CPU中有关可用来存放地址的寄存器如IP、SP等都是16位的,故只能直接寻址64 KB。为了对1M个存储单元进行管理,8086/8088采用了分段结构的方法对存储器管理,即将1M的地址空间分成若干个64K的段,然后用段基地址加上段内偏移地址来访问物理存储器。,33,逻辑段
18、与小节,8086/8088将整个存储器分为许多逻辑段,每个逻辑段的容量小于或等于64 KB,允许它们在整个存储空间中浮动,各个逻辑段之间可以紧密相连,也可以互相重叠。 在8086/8088 存储空间中,从0 地址开始,把每16个连续字节的存储空间称为小节。为了简化操作,逻辑段必须从任一节的首地址开始。这样划分的特点是:在十六进制表示的地址中,最低位为0(即20位地址中的低4位为0)。在1MB 的地址空间中,共有64K小节。,34,存储器分为许多逻辑段,35,物理地址 段地址 偏移地址,8086/8088 中,每一个存储单元都有一个唯一的20 位地址,称此地址为该存储单元的物理地址。CPU 访问
19、存储器时,必须先确定所要访问的存储单元的物理地址,才能取得该单元的内容。 20 位的物理地址由16 位的段地址和16 位的段内偏移地址计算得到。 段地址是每一个逻辑段的起始地址,必须是每个小节中的首地址,其低4 位一定都是0,于是在保留段地址时,可只取段地址的高16 位。 偏移地址则是在段内相对于段起始地址的偏移值。 因此任一存储单元物理地址的计算方法(如图 所示)是:物理地址=16段地址+偏移地址,36,物理地址的形成,37,逻辑地址,在实际使用中,常用“段地址:偏移地址”来表示逻辑地址,其中段地址和偏移地址都是16 位二进制数(常用4 位十六进制数表示)。 一个物理地址可用多种逻辑地址进行
20、表示,但其物理地址是唯一的。,38,存储器分段示意图,39,堆栈是内存中一个特殊的区域,用以存放寄存器或存储器中暂时不用又必须保存的数据,在内存中所处的段为堆栈段。,8086 系统中的堆栈是用段定义语句在存储器中定义的一个堆栈段,如同其它逻辑段,可在1MB的存储空间中浮动。,堆栈由段寄存器SS和堆栈指针SP来寻址SS:给出堆栈段的段基址;SP:给定当前栈顶,即指出从堆栈的段基址到栈顶的偏移量。,栈顶是堆栈操作的唯一出口,是栈地址较小的一端。,堆栈(一),40,为加快堆栈操作的速度,均以字为单位进行。,SP,SS,栈顶,栈底,栈底,SP,SS,栈顶,AX,PUSH AX,SP,SS,栈底,栈顶,
21、BX,POP BX,AX,POP AX,堆栈(二),41,时钟:时钟脉冲发生器产生具有一定频率和占空比的脉冲信号,称之为机器的主脉冲或时钟。 主频:时钟的频率,是机器的一个重要指标。 时钟周期:主频的倒数,是CPU的基本时间计量单位。也叫一个T周期或T状态,或一个节拍。8086主频为5MHz,则一个时钟周期为200ns。总线周期:在取指令和传送数据时,CPU总线接口部件占用的时间称为总线周期或机器周期。(总线周期是指CPU从存储器或I/O 端口存取一个字节所需要的时间。因为这种操作必须通过总线才能完成,故称为总线周期。),总线周期(一),42,一个最基本的总线周期由4个时钟周期组成: 用 T1
22、,T2,T3,T4 表示,总线周期(二),43,T1状态:CPU往多路复用总线上发送地址信息,选中所要寻址的存储单元或外设端口地址。,T2状态:CPU从总线上撤销地址,并使总线的低16位浮置成高阻状态,为传送数据作准备。,T3状态:总线的高4位继续提供状态信息,低16位将出现由CPU写出的数据,或CPU从存储器或者外设端口读入的数据。,总线周期(三),44,等待状态:有些情况下,I/O或M不能及时配合CPU传送数据,在T3状态启动之前它会通过 READY 引脚向CPU发一个“未准备好”信号。CPU在T3状态之后自动插入若干个时钟周期Tw。直至CPU接受到“准备好”信号,自动脱离Tw状态进入T4
23、。,T4状态:总线周期结束。,空闲周期TI:两个总线周期之间,若干个时钟周期。,总线周期(四),45,3.1 8086/8088微处理器,3.1.4 8086/8088 的引脚信号和功能,GND AD14 AD13 AD12 AD11,1 2 3 4 5,40 39 38 37 36,Vcc(+5V) AD15 A16/S3 A17/S4 A18/S5,GND A14 A13 A12 A11,1 2 3 4 5,40 39 38 37 36,Vcc(+5V) A15 A16/S3 A17/S4 A18/S5,AD10 AD9 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD
24、0 NMI INTR CLK GND,6 7 8 9 10 11 12 13 14 15 16 17 18 19 20,8 0 8 6,35 34 33 32 31 30 29 28 27 26 25 24 23 22 21,A19/S6BHE S7 MN MXRDHOLD( RQ GT 0 )HLDA( RQ GT 1 )WR(LOCK )M ( IO S 2 )DT R (S 2 )DEN (S 0 )ALE (QS 0 )INTA(QS1 )TESTREADYRESET,A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND,
25、6 7 8 9 10 11 12 13 14 15 16 17 18 19 20,8 0 8 8,35 34 33 32 31 30 29 28 27 26 25 24 23 22 21,A19/S6 SS0 ( HIGH ) MN MXRDHOLD( RQ GT 0 )HLDA( RQ GT 1 )WR( LOCK )M ( IO S 2 )DT R (S 2 )DEN (S 0 )ALE (QS 0 )INTA(QS1 )TESTREADYRESET,34,46,8086/8088 CPU 具有40 条引脚,采用双列直插式的封装形式。为了减少芯片上的引脚数目,8086/8088 CPU 都
26、采用了分时复用的地址/数据总线。 正是由于这种分时复用的方法,才使得8086/8088 CPU 可用40 条引脚实现20 位地址、16 位数据(8 位数据)及许多控制信号和状态信号的传输。 由于8088 只传输8 位数据,所以8088 只有8 个地址引脚兼作数据引脚,而8086 有16 个地址/数据复用引脚。 这些引脚构成了8086/8088 CPU 的外总线,它包括地址总线、数据总线和控制总线。8086/8088 CPU 通过这些总线和存储器、I/O 接口等部件组成不同规模的系统并相互交换信息。,47,分时复用地址/数据总线:AD15AD0(引脚39,2-16,16根)传送地址时:单向,三态
27、输出传送数据时:双向,三态输入输出,T1状态:输出要寻址的存储器或I/O端口地址; T2状态:浮置成高阻状态,为传输数据作准备; T3状态:用于传输数据; T4状态:结束总线周期。,通过分时复用利用40条引脚实现20位地址、16位数据及众多控制信号和状态信号的传输。,当CPU响应中断以及系统总线“保持响应”时,复用线都被浮置为高阻状态。,8086 引脚信号与功能,48,分时复用地址/状态总线:A19/S6A16/S3(引脚35-38,4根)输出,三态。,T1状态:输出地址的最高4位;T2T4状态:输出状态信息。 访问存储器:T1状态时输出的A19A16送到锁存器(8282)锁存,与AD15AD
28、0组成20位的地址信号; 访问I/O端口:不使用这4条引线,A19A16=0。,S6为0,8086当前与总线相连。 S5表明中断允许标志位IF的当前设置。 S4和S3指示当前正在使用哪个段寄存器。,8086 引脚信号与功能,49,S4、S3的代码组合和对应的状态,8086 引脚信号与功能,50,电源线和地线:3根1个电源线Vcc(引脚40):输入电压 +5V10%2个地线GND(引脚1,20):均接地,8086 引脚信号与功能,51,控制总线:8根,(引脚34):高8位数据总线允许/状态复用三态,输出,在总线周期的T1状态时输出,S7在T2T4时输出。 8086中,当 引脚上输出 信号时,表示
29、总线高8位AD15AD8上的数据有效,存储体奇库选择控制。 S7在8086中未被赋予定义。,8086 引脚信号与功能,52,(引脚32) :读控制,三态,输出,低有效,= 0时,CPU将执行对M或I/O端口的读操作。,在系统总线“保持响应”期间, 被浮空。,对内存单元还是对I/O端口读取数据,取决于 (8086) 。,在一个读操作的总线周期中, 信号在T2、T3和Tw状态均为低电平,以保证CPU读有效。,8086 引脚信号与功能(八),53,(引脚22) :“准备好”信号,输入,高有效由所寻址的M或端口发出,READY=1时,表示所寻址的M或I/O设备已准备就绪,马上可进行一次数据传输。,CP
30、U在每个总线周期的T3状态开始对READY信号采样。,READY=0,表示M或I/O设备尚未准备好,则CPU在T3状态之后自动插入一个或几个等待状态Tw,直到READY 变为高电平,进入T4状态,完成数据传送过程。,8086 引脚信号与功能(九),54,(引脚23) :等待测试信号,输入,低有效,当CPU执行WAIT指令时,进入空转等待状态,且每隔5个时钟周期对该线的输入进行一次测试;,引脚用于多处理器系统中,实现8086与协处理器间的同步。,若 =1时,CPU将停止取下条指令而继续处于等待状态,重复执行WAIT指令,直至 =0时,等待状态结束,CPU才继续往下执行被暂停的指令。,8086 引
31、脚信号与功能(十),55,(引脚18):可屏蔽中断请求,输入,高有效,INTR=1时,表示外设提出了中断请求,8086在每个指令周期的最后一个T状态去采样此信号。,若IF=1,CPU响应中断,停止执行当前的指令序列,并转去执行中断服务程序。,8086 引脚信号与功能(十一),56,(引脚17):非屏蔽中断请求,输入,上升沿触发,此请求不受IF状态的影响,也不能用软件屏蔽,只要此信号一出现,CPU就会在现行指令结束后引起中断。,8086 引脚信号与功能(十二),57,与8284A(时钟发生/驱动器)的复位输出端相连;,(引脚21):复位信号,输入,高有效,8086 要求复位脉冲宽度不得小于4个时
32、钟周期,而初次接通电源时所引起的复位,则要求维持的高电平不能小于50s;,复位后,CPU的主程序流程恢复到启动时的循环待命初始状态 。,8086 引脚信号与功能(十三),58,(引脚19) :系统时钟,输入,通常与8284A时钟发生器的时钟输出端CLK相连,该时钟信号的低/高之比常采用2:1(占空度为1/3)。,8086 引脚信号与功能(十四),59,其它控制线(引脚24-31):8个,,8086 工作于最小方式,全部控制信号由CPU本身提供;,,8086 工作于最大方式,控制信号由8288总线控制器提供。,这些控制线的性能,根据方式控制线(引脚33) 所处状态而定。,8086 引脚信号与功能
33、(十五),60,最小模式和最大模式,8086 有两种工作模式: 最小模式是指系统中只有一个微处理器(8086)。在这种系统中,8086 直接产生所有的总线控制信号,系统所需的外加总线控制逻辑部件最少。 最大模式是指系统中含有两个或多个微处理器,其中一个为主处理器8086,其他的处理器称为协处理器,是协助主处理器工作的。在最大模式下工作时,控制信号是通过8288总线控制器提供的。因此,在不同方式下工作时,8086 的部分引脚(第2431 引脚)会具有不同的功能。,61,接电源电压,系统处于最小方式,即单处理器系统方式;,时钟信号发生器8284A:外接晶体的基本振荡频率为15MHZ, 经8284A
34、三分频后。送给CPU作系统时钟CLK。,8位地址锁存器8282:锁存后地址信号,在整个周期保持不变。,三态输出的8位数据总线收发器8286:用于增加系统的驱动能力。,等待状态产生电路:向8284A的 RDY端提供一个信号,经同步后,向CPU的READY线发“准备就绪”信号,通知CPU数据传送已完成,可退出当前总线周期。,最小工作方式(一),62,最小工作方式(二),63,地址锁存器和数据收发器,地址锁存器(8282) 由于8086 的AD15AD0 为分时复用的地址/数据线,即在T1 状态用来输出地址,从T2 状态开始改为传送数据,而内存及I/O 设备需要在整个总线操作周期中地址线上都保持有稳
35、定的地址信号,所以需要在地址信号消失前将其锁存。 数据收发器(8286) 对于数据信号,它不必锁存,但由于总线负载能力有限,当挂接部件过多时,就需要接入信号放大器,提高总线的负载能力,这种信号放大器称为数据收发器。,64,地址锁存器(8282),65,数据收发器(8286),66,8086 的地址锁存与数据收发逻辑,在总线周期的T1状态,当ALE 信号由高变低时,8282 将地址信号锁存,使得从T2 开始CPU 撤销地址信号后,地址总线上还能保持地址输出。 当8086 与存储器或I/O 设备交换数据时,DEN 端产生一个低电平信号,使8286 的OE端为0。8286 的发送数据控制端T 连接在
36、8086 的数据发送/接收端DT/ R 上,写操作时,DT/ R 为高电平,控制数据传送方向是从CPU 流向存储器或I/O 设备;在读操作时,DT/ R为低电平,则数据的传送方向是从存储器或I/O 设备流向CPU。在较小的8086 系统中,也可以不用8286 数据收发器,这时,多路复用的地址/数据总线直接与存储器或I/O 设备的数据线相连。,67,(address latch enable) :引脚25地址锁存允许信号,输出,高有效CPU在每个总线周期T1状态发出,作为地址锁存器的地址锁存信号。,(interrupt acknowledge ):引脚24中断响应信号,输出,低有效CPU对来自外
37、设的中断请求作出响应,发两个连续负脉冲。第1个负脉冲:通知外设端口,中断请求被允许;第2个负脉冲:外设往数据总线上发送中断类型码。,最小工作方式(三),68,(data enable) :引脚26数据允许信号,输出,三态,低有效为总线收发器 端提供控制信号,决定是否允许 数据通过。,(data transmit/receive) :引脚27数据收发控制信号,输出,三态控制总线收发器的数据传送方向高电平时:数据发送;低电平时:数据接收。,最小工作方式(四),69,(memory/input and output):引脚28存储器/输入输出控制信号,输出,三态用于区分CPU访问M还是IO,高电平:
38、访问M;低电平:访问IO。,(write) :引脚29写控制信号,输出,三态,低有效表示CPU当前进行M或者IO的写操作。,最小工作方式(五),70,(hold request) :引脚30总线保持请求信号,输入,高有效是系统中的其它总线主控部件向CPU发出的请求占用总线的控制信号。,(hold acknowledge) :引脚31总线保持应答信号,输出,高有效与HOLD配合使用的联络信号,有效期间,所有与三态门连接的引脚处于浮空,让出总线。,最小工作方式(六),71,接地,系统处于最大方式,含两个或多个处理器,需解决主处理器和协处理器之间协调工作,及总线共享问题。,时钟发生/驱动器8284A
39、:1片,8位地址锁存器8282:3片,三态输出的8位数据总线收发器8286:2片,等待状态产生电路:,总线控制器8288:对CPU发出的控制信号变换、组合,得到对M或I/O的读/写信号,对8282和8286的控制信号。,最大工作方式(一),72,最小方式:控制信号 或 ( ) 、 、 、 、 、 直接从CPU的第24 29脚送出。,最大方式:从状态信号 、 、 组合中得到。,最大工作方式(二),73,、 、 的代码组合和对应的操作,有源状态:三者只要有1个信号为低电平,对应了某一总线操作过程。,无源状态:三者均为高,此时,1个总线操作过程就要结束,另1个新的总线周期还未开始。,最大工作方式(三
40、),74,最大工作方式(四),75,、 (instruction queue status) ,引脚24,25指令队列状态信号,输出提供本总线周期的前一个时钟周期中指令队列的状态,便于外部对8086 内部指令队列的跟踪。,、 的代码组合和对应的操作,最大工作方式(五),76,(lock) :引脚29总线封锁信号,输出由指令前缀LOCK产生,LOCK前缀后面一条指令执行完毕,LOCK信号撤销。低电平时:CPU独占总线,系统中其它总线主部件就不能占用总线。,最大工作方式(六),77,、 (request/grant) :引脚30,31总线请求输入/总线请求允许输出供CPU以外的两个处理器,用来发出
41、使用总线的请求 信号,和接收CPU对总线请求信号的回答信号。二者都是双向的,信号在同一引线上传输,当方向相反。 有更高优先权。,最大工作方式(七),78,(memory read command) :对存储器读,(I/O read command) :对I/O读,(memory write command) :对存储器写,(I/O write command) :对I/O写,(interrupt acknowledge) :中断响应信号,(advanced memory write command) :超前写存储器命令,(advanced I/O write command) :超前写I/O命
42、令,最大工作方式(八),79,存储器与I/O 读写周期,总线周期是指CPU 从存储器或I/O 端口存取一个字节所需要的时间。因为这种操作必须通过总线才能完成,故称为总线周期。 典型的总线周期有存储器读周期、存储器写周期、I/O 设备输入周期、I/O 设备输出周期、中断响应周期、空闲周期等。 在一个总线周期中各个T 状态下CPU 引脚信号的状态,组成了CPU 的总线操作时序。,80,存储器读周期时序,81,1) T1 状态 (1) M/ IO 有效,用以指出是读存储器还是读I/O 端口。 (2) 在A19/S6A16/S3 和AD15AD0 上输出20 位地址信息,同时BHE/S7 端输出低电平
43、,用它作为奇存储体的选择信号。 (3) 在T1 状态的后半部,ALE 信号变为低电平,8282 地址锁存器利用此下降沿将20位地址信息及BHE 信号锁存。 (4) DT/ R 端输出为低电平,表示本总线周期为读周期,即数据收发器是从数据总线上接收数据。,82,2) T2 状态 (1) 地址信号撤销,BHE /S7 和A19/S6A16/S3 开始输出状态信息S7S3(其中S7 未赋予任何实际意义),S7S3 一直持续到T4。 (2) AD15AD0 总线地址信息消失,处于悬浮高阻状态,使CPU 有足够的时间将AD15AD0 总线由输出地址方式变为输入数据方式。 (3) 读信号RD 有效(低电平
44、)。 (4) 在T2 中央时刻, DEN 变得有效,使数据能够从总线通过数据收发器8286,这个信号一直持续到T4 中期结束。,83,3) T3 状态 CPU 在T3 状态一开始检测READY 引脚,若其为高电平,则在T3 状态与T4 状态间不需要插入等待状态TW,下一个时钟脉冲到来时将进入T4 状态;若其为低电平,说明存储器或外设尚未能将数据放到数据总线上,则下一个时钟脉冲到来时CPU 将进入等待状态TW。通过在T3 与T4 间插入一个或几个等待状态TW,可以解决CPU 与慢速存储器或外设的速度匹配问题。,84,4) TW状态(图中未画出) 在每个TW状态的下降沿CPU 检测READY 引脚
45、,若其仍为无效的低电平,则再插入TW状态,直到READY 引脚变为高电平才进入T4 状态。 5) T4 状态 (1) 在T3 状态(或TW状态)与T4 状态交界的下降沿处,CPU 读取数据线上数据。 (2) 在T4 状态的后半周数据信号从总线上撤销,各控制信号及状态信号也处于无效状态,一个总线周期结束。,85,存储器写周期时序,86,写周期时序与读周期时序很类似。首先,由M/IO信号来区分是访问存储器还是访问I/O 端口。而DT/R应为高电平,表示本总线周期为写周期。其次,存储器地址以及ALE 信号有效,但写入存储器的数据是在T2 状态中放至数据线AD15AD0 上的, WR信号也在T2状态有
46、效。8086 在T4 状态后使控制信号变为无效,表示对存储器的写入过程已经完成。若有的存储器或外设来不及在指定的时间内完成写操作,可以利用READY 信号使CPU 插入Tw 状态,以保证时间上的配合。具有Tw 状态的写周期时序与具有Tw 状态的读周期时序类似,不再赘述。,87,I/O 总线周期,8086 与外设通信过程,即从I/O 端口输入数据或把数据输出到I/O 端口的时序,与8086对存储器读写时序几乎完全相同,但要注意其中几个具体信号的差别:(1) M/ IO 线在规定有效的4 个T 状态将呈低电平。 (2) 由于I/O 的寻址空间为64KB,所以地址线只用了A15A0,A19A16 输
47、出为0。,88,时序:计算机操作运行的时间顺序。,8086 引脚信号与功能(十六),89,8086 最小模式下的总线读操作时序图,90,8086 最小模式下的总线写操作时序图,91,20条AB,寻址1M存储空间; 按字节组织,每个字节唯一地址; 字节:顺序存放 字:低位字节放在低地址中高位字节放在高地址中 双字:低位字是偏移量高位字是段地址 规则字:低位字节存放在偶数地址 非规则字:低位字节存放在奇数地址,8086 存储器组织(一),92,字节的存取需要1个总线周期。,数 据,偶数地址,奇数地址,(a) 读偶数地址中的字节,(b) 读奇数地址中的字节,被读字节,忽略,数 据,偶数地址,奇数地址
48、,被读字节,忽略,8086 存储器组织(二),93,规则字的存取需要1个总线周期,非规则字的存取需要2个 总线周期。,数据,偶数地址,奇数地址,数据,偶数地址,奇数地址,数据,(c) 读偶数地址中的字,数据,(d) 读奇数地址中的字,偶数地址,奇数地址,被读字,被读字节1,忽略,被读字节2,忽略,8086 存储器组织(三),94,1MB 存储空间,分成2个512 KB的存储体(存储库);,低位库:与数据总线 相连,每个地址为偶数地址。 高位库:与数据总线 相连,每个地址为奇数地址。,8086 存储器组织(四),95,地址总线 可同时对高、低位库的存储单元寻址,或 用于库的选择,分别接到库选择端
49、 。,8086 存储器组织(五),96,20根地址总线,允许寻址1MB存储空间;IP、SP、SI、DI 都是16位,直接寻址最大空间64KB;,为寻址1MB存储空间,实行分段管理,每一段最长为64KB。段和段之间关系:连续、分开、部分重叠、完全重叠;,存储器分段(一),97,每个段大小可从一个字节开始,任意递增,最多包含64KB长的连续存储单元;,每个段的20位起始地址(段基址),是能被16整除的数,即最后4位为零,可通过程序在段寄存器中装入16位段地址来设置;段地址是20位段基址的前16位。,1个程序所用的具体存储空间:1个或多个逻辑段;,段基址存在CS、SS、DS、ES中,程序可从中给出的逻辑段中存取代码和数据;,