资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章 8086/8088微机体系结构,8086/8088内部结构,存储器结构,8086/8088CPU引脚及功能,8086/8088系统配置,8086/8088CPU内部时序,微处理器性能指标,重点:8086CPU的组成及,各部分的作用,8086存储器,的分段、物理地址的形成,,8086工作时序,堆栈的概念,难点:8086工作时序、,物理地址的形成,1.微处理器性能指标,字长,指令系统,基本指令执行时间,访问存储器能力,是否能构成多处理器系统,工艺形成及其它,1.1字长,字长:是微处理器在交换、加工、存储信息时,,其信息位的最基本的长度。与数据总线的,根数和内部寄存器的位数相同。,1 0 1 1 0 1 0 1,被加数,8位,+,1 0 0 0 1 1 1 1,加数,8,位,进位,1,1 1 1 1 1 1,0 1 0 0 0 1 0 0,和,8,位,PSW,标志寄存器,运,算,器,标志,寄存器,运,算,器,被加数,加数,和,进位,字长是衡量CPU工作性能的一个重要参数。,不同类型的CPU有不同的字长。,如:Intel 4004,4 位,8080,8 位,8088/8086/80286,16 位,80386/80486、Pentium,32 位,Itanium(安腾),64 位,1010 1100 0110 0101 1001 1000 0100 0011,被加数,1100 0011 1100 0011 0001 0101 0101 1000,加数,1,1 1111 1 111 1 1,进位,0111 0000 0010 1000 1010 1101 1001 1011,和,+,4位 8次,8位 4次,16位 2次,32位 1次,8086/8088CPU性能指标,8086,:,是INTEL系列16位微处理器,采用HMOS(高密,度金属氧化物半导体)技术,集成度为29000个管片。,数据总线:16位,地址总线:20位,可直接寻址的地址空间为,1M字节。,8088:,准16位机,CPU内部数据总路线为16位,外部8,位,20位地址总线,推出8088的目的是为了向下兼容以,前的8位微型机。,2.,8086/8088内部结构,内,部,结,构,8086CPU结构框图及分析,8086CPU内部寄存器,指令执行单元EU,总线接口单元BIU,8088CPU的指令流水线,通用寄存器,段寄存器,标志寄存器,指令指针寄存器,2.1 8086CPU工作方式,微处,理器,堆栈段,存储,器接,口电,路,存,储,器,附加段,数据段,代码段,代码段1,00000H,FFFFFH,2.2 8086CPU内部结构框架,ALU,TMP,TMP,标志寄存器,FR,控制单元,EU,通用寄存器,16,16,16,指令队列缓冲器,总线控制逻辑,通信寄存器,CS,ES,SS,DS,IP,地址产生器,BIU,16,8,16,20,2.2 8086CPU内部结构框架,ALU,TMP,TMP,标志寄存器,FR,控制单元,EU,通用寄存器,16,16,16,指令队列缓冲器,总线控制逻辑,通信寄存器,CS,ES,SS,DS,IP,地址产生器,BIU,16,8,16,20,执行部件EU,的作用:负责,执行指令、形成有效地址,EA。,EU,包括,四,部分:,运算器ALU+TEMP,标志寄存器,控制单元,通用寄存器,2.2 8086CPU内部结构框架,ALU,TMP,TMP,标志寄存器,FR,控制单元,EU,通用寄存器,16,16,16,指令队列缓冲器,总线控制逻辑,通信寄存器,CS,ES,SS,DS,IP,地址产生器,BIU,16,8,16,20,总线接口部件BIU的作用是,预取指令、形成实际地址PA、,输入输出数据。BIU主要由五部,分组成:,指令队列缓冲器,总线控制逻辑,段寄存器,指令指针寄存器,地址产生器,总线利用率高。,串行结构:取指令,取操作数,执行指令,存放结果,CPU利用率高,计算速度快。,两部分的动作管理遵循以下原则。,1.每当8086的指令队列中有2个空字节,BIU就会自动把指令,取到指令队列中,;,2.同时EU从指令队列中取出一条指令并分析、执行指令;,3.当指令队列已满而EU对BIU又无总线访问请求时,BIU进入,空闲状态;,4.在执行转移、调用和返回指令时,指令队列中原有内容被自,动清除。,微处理器结构分析,2.3 8088CPU内部结构框架,2.4 寄存器通用寄存器,四个16位通用寄存器、两个变址寄,存器、两个指针寄存器。,AX:累加器(Accumulator),BX:基址寄存器(Base Index),CX:计数寄存器(Count Index),DX:数据寄存器(Data Index),SI:源变址寄存器(Source Index),DI:目标寄存器(Destination Index),SP:堆栈指针(Stack Pointer),BP:基址指针(Base Pointer),AX,BX,CX,DX,0,15,8 7,AL,AH,BL,BH,CL,CH,DL,DH,SI,DI,SP,BP,AX,AL,在输入/输出指令中用作数据寄存器;在乘法指令中存放被乘数或乘积;在除法指令中存放被除数或商,AH,在LAHF指令中作为目标寄存器使用,AL,在BCD码及ASC,运算指令中作累加器使用;在XLAT指令中作累加器使用,BX,在间接寻址方式中作基址寄存器使用;在XLAT指令中作基址寄存器使用,CX,在循环指令和字符串指令中作为循环次数计数器,每作一次循环,CX的内容自动减1,CL,在移位/循环指令中作移位次数计数器使用,DX,在字乘法/除法指令中存放乘积高位或被除数高位或余数;在间接寻址的输入/输出指令中作地址寄存器使用,SI,在字符串运算指令中作源变址寄存器使用;在间接寻址的指令中作变址寄存器使用,DI,在字符串运算指令中作目标变址寄存器使用;在间接寻址中作变址寄存器使用,BP,在间接寻址的指令中作基址指针使用,SP,在堆栈操作中作堆栈指针使用,在某些指令中规定了某些通用寄存器的专门用法,这样可以缩短指令代码长度;或使这些寄存器的使用具有隐含的性质,以简化指令的书写形式(即在指令中不必写出使用的寄存器名称)。通用寄存器的隐含用法如左表所示。,2.4 寄存器标志寄存器FR,OF,DF,IF,TF,SF,ZF,AF,PF,CF,15,8,7,0,状态,标志位,CF进位标志,CF=1,有进(借)位(算术)。,PF奇偶标志,含1个数为偶数,PF=1。,AF辅助进位位,D3向D4有进借位,AF=1。,OF溢出标志,OF=CF+CD。OF=1,有溢出。,SF符号标志,SF=1,D7(D15)=1。,ZF,零标志,ZF=1,结果为零。,控制位,IF中断允许标志,IF=1,允许CPU响应,外设通过可屏蔽中断请求线提出的中断,DF,方向标志,串,DF=1,减址,TF,跟踪标志,TF=1,CPU进入单步运行状态。,标志,OF,DF,IF,SF,ZF,AF,PF,CF,OV,DN,EI,NG,ZR,AC,PE,CY,NV,UP,DI,PL,NZ,NA,PO,NC,为1的符号,为0的符号,标志寄存器中的状态标志的状态表示符号,CF=1,PF=1,AF=0,OF=0,SF=0,ZF=0,无符号数相加,211,105,316,+,-45,+105,+60,+,11010011,+01101001,00111100,11 11,11010011,+01101001,00111100,11 11,有符号数相加,2.4 寄存器段寄存器,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,0,1,0,0,0,1,0,1,0,1,1,0,0,1,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1,十六进制数,0H,1H,2H,3H,4H,5H,6H,7H,8H,9H,AH,BH,CH,DH,EH,FH,0H,FH,地址,译码,电路,DB,8086微处理器的地,址总线为20根,则,其寻址空间为:,00000H,FFFFFH,2.4 寄存器段寄存器,矛盾:,外部地址总线为20根,内部能够提供的数据为16位。,逻辑段1,逻辑段2,逻辑段3,因为16位地址最多可以访问64K的存储空,间,所以每个分段的最大空间为64K。,段起,始地,址,物理地址:存储器中实实在在存在的一个,存储单元的编号,也叫实际地址。,段起始地址:分段的第一个物理地址。,00000H,FFFFFH,1M的存储空间能够被分为的段数为:16,段起始地址的特点:低四位为0。,12340H 12000H 00000H 23560H FFFF0H,2.4 寄存器段寄存器,段基址:段起始地址高十六位(,二,进制,)组成的地址编码。,偏移地址,12340H,2233FH,逻辑段1,1238FH,右图所示段的段基址为:1234H,偏移地址:物理地址与所在段起始,地址的差,也叫有效地址。,右图中1238FH的偏移地址为:0004FH,物理地址的形成:段基址左移4位,(,二进制,)+偏移地址。,偏移地址的特点:高四位(,二进制,),永远为0,因此仅取其低十六位。,最大的偏移地址2233FH-12340H=0FFFFH,2.4 寄存器段寄存器,逻辑段2,逻辑段1,同一个存储单元,25637H,25630H,25600H,00037H,00007H,逻辑地址的特点:不唯一,逻辑地址 段基址:偏移地址,左图中1238FH的逻辑地址为:,1234H:004FH,偏移地址,12340H,2233FH,逻辑段1,1238FH,逻辑地址的来源,操作指令,段基址,偏移地址,正常来源,其他来源,取指令,CS,无,IP,堆栈指令,SS,无,SP,存/取指令,DS,CS、ES、SS,有效地址EA,取源串,DS,CS、ES、SS,SI,存/取目标串,ES,无,DI,通过BP间接寻址,SS,CS、ES、DS,有效地址EA,2.4 寄存器段寄存器,代码段:存放等待执行的指令代码。,数据段:存放指令中所需要的操作数。,堆栈段:一段特殊的数据存取区域。,附加段:通常也用来存放操作数。,在程序量很大的情况下可以开辟,多个代码段。同理,其它逻辑段也,可以进行扩展。,堆栈段,附加段,数据段,代码段,各个逻辑段可以重叠。,代码段1,数据段,1,附加,段,1,功能段:按存放数据所起到的功能不,同又可以分为代码段、数据段、堆栈段,和附加段。,2.4 寄存器段寄存器,代码段寄存器CS:指向当前的,代码段,指令由此段取出。,数据段寄存器DS:指向当前的,数据段,通常用来存放程序变量。,堆栈段寄存器SS:指向当前的堆,栈段,堆栈操作所需的就是该段存,储单元的内容。,附加段寄存器ES:指向当前的附,加段,通常也用来存储数据。,2.4 寄存器指令指针IP,12300H,12307H,0007H,IP:,当前代码段,指令指针寄存器IP存储的是当前,预取指令的存储地址。,对于8086,BIU从存储器中取过,一次指令后,IP自动加2,指向下,一个预取指令。,对于8088,BIU从存储器中取过,一次指令后,IP自动加1,指向下,一个预取指令。,程序员不能对IP进行存取操作,,程序中的转移指令、返回指令及,中断指令能对IP进行操作。,3.存储器结构,8086系统中存储器的结构,8088系统中存储器的结构,堆栈的结构,3.1 8086系统中存储器的结构,存储地址相当于房间号码,而其中存储,的数据才是我们要存取的具体内容。,右图所示的存储单元地址为:12356H,该单元中存储的数据为:25H,25H,36H,00000H,FFFFFH,12356H,程序中的表示形式为:12356H=25H,如果存放的是字,则其表示形式为:,12356H=3625H,注意:字的高位存放在大地址单元,低位存放在小地址单元。程序中说明是字数据还是字节数据。,3.1 8086系统中存储器的结构,25H,36H,00000H,FFFFFH,12356H,512K,8位,奇地址,存储体,(A,0,=1),512K8位,偶地址,存储体,(A,0,=0),15,8,7,0,00000H,00000H,00000H,00000H,FFFFEH,00001H,00003H,00005H,00007H,FFFFFH,字节交叉编址,3.1 8086系统中存储器的结构,CS A1A19,高位(奇数)库,512K,8,D0D7,CS A1A19,低位(偶数)库,512K,8,D0D7,A1A19,A0,BHE,D8D15,D0D7,3.1 8086系统中存储器的结构,BHE A0 访问库名,0 0 双库,实现16位数据的传送,0 1 奇地址高位库,实现8位数据的传送,1 0 偶地址低位库,实现8位数据的传送,1 1 不传送,BHE和A0的控制作用,34H,12H,25H,36H,00000H,FFFFFH,12356H,12351H,假设存放的为字数据,则,12351H=1234H,12356H=3625H,规则字与非规则字,12351H,12352H,0,1,0,0,1,0,0,0,12356H,12357H,1,0,1,0,1,1,1,0,规则字:起始地址为偶地址。微,处理器一次可以将数据读走。,非规则字:起始地址为奇地址。,微处理器两次才能将数据读走。,3.2 8088系统中存储器的结构,单一存储体,一次只能读取一个字节的信息,3.3 堆栈,堆栈段首地址:10000H,SS:1000H,12000H,11FFFH,11FFEH,11FFDH,11FFCH,11FFBH,11FFAH,堆,栈,空,间,SP:2000H,SP:1FFEH,SP:1FFCH,SP:1FFAH,栈底,当前堆栈段的段基址由SS,给定,SP给定当前栈顶。,为了加快堆栈操作的速度,,堆栈以字为单位进行操作。,入栈指令PUSH;出栈指令POP。,PUSH AX,12H,34H,15H,93H,35H,71H,PUSH CX,PUSH DX,POP AX,PUSH BX,POP DX,结果:,(,AX,),3571H;,(,BX,),5678H;,(,CX,),1593H;,(,DX,),=1593H,例:设,(,AX,),1234H;,(,BX,),5678H;,(,CX,),1593H;,(,DX,),=3571H,执行下列程序代码,56H,78H,25610H,3060FH,25781H,调用子程序指令,子程序起始地址为 3060FH。结束地址为33618H。,25784H,当前代码段起始地址,IP:171H,CS:2561H,SP:2000H,12000H,11FFFH,11FFEH,11FFDH,11FFCH,11FFBH,11FFAH,33618H,IP:AFFFH,SP:1FFEH,01H,74H,IP:E008H,IP:174H,堆栈段首地址:10000H,01H,74H,同一个代码段内的子程序调用过程,25610H,25781H,SP:2000H,12000H,11FFFH,11FFEH,11FFDH,11FFCH,11FFBH,11FFAH,SP:1FFEH,25H,61H,代码段1,代码段2,56310H,58962H,CS:5631H,IP:2652H,CS:2561H,IP:171H,5A36FH,IP:405FH,IP:176H,25786H,SP:1FFCH,01H,76H,01H,76H,25H,61H,不同代码段的子程序调用过程,堆栈段首地,址:10000H,3.4 专用和保留的存储器单元,00000H003FFH(共1KB)。存放中断向量表。可存放256个中断服务程序的入口地址。属于系统的RAM范围。,FFFF0HFFFFFH。系统上电或复位时,(CS)=FFFFH,(IP)=0000H,故FFFF0H为系统的复位地址,从这一地址开始存放一条无条件转移指令,使系统自动跳转到初始化程序。属于系统的ROM范围内。,4.8086/8088微处理器工作模式,最大模式:有多个微处理器,最小模式:仅有8086一个微处理器,8086/8088CPU的外部特性,有效电平 指引脚起作用时的逻辑电平。有些信号是低电平有效,也称作负逻辑,有些信号是高电平有效,也称作正逻辑。,三态 是指引脚除了能正常的输入或输出高、低电平之外,还能输出高阻状态。,GND,AD,14,AD,13,AD,12,AD,11,AD,10,AD,9,AD,8,AD,7,AD,6,AD,5,AD,4,AD,3,AD,2,AD,1,AD,0,NMI,INTR,CLK,GND,Vcc(+5V),AD,15,A,16,/S,3,A,17,/S,4,A,18,/S,5,A,19,/S,6,BHE/S,7,MN/MX,RD,READY,RESET,HOLD(RQ/GT,0,),HLDA(RQ/GT,1,),WR(LCCK),M/IO(S,2,),DT/R(S,1,),DEN(S,0,),ALE(QS,0,),INTA(QS,1,),TEST,1,2,3,4,5,6,7,8,9,10,11,20,12,13,14,15,16,17,18,19,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,5.8086/8088微处理器引脚及功能,(1)AD,15,AD,0,分时复用的地址/数据总线。,T1周期传送地址,三态输出;,T2T4周期传送数据,双向三态,输入/输出。,(2)A,19,/S,6,A,16,/S,3,分时复用的地址/状态线。,S4,S3,段寄存器,0,0,ES,0,1,SS,1,0,CS(I/O,INT),1,1,DS,S,5,=1,则IF=1;,S,6,恒为0,8086微处理器,GND,AD,14,AD,13,AD,12,AD,11,AD,10,AD,9,AD,8,AD,7,AD,6,AD,5,AD,4,AD,3,AD,2,AD,1,AD,0,NMI,INTR,CLK,GND,Vcc(+5V),AD,15,A,16,/S,3,A,17,/S,4,A,18,/S,5,A,19,/S,6,BHE/S,7,MN/MX,RD,READY,RESET,HOLD(RQ/GT,0,),HLDA(RQ/GT,1,),WR(LCCK),M/IO(S,2,),DT/R(S,1,),DEN(S,0,),ALE(QS,0,),INTA(QS,1,),TEST,1,2,3,4,5,6,7,8,9,10,11,20,12,13,14,15,16,17,18,19,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,(3)Vcc(电源)、GND(地),8086微处理器只需要单一的,+5V电源,由Vcc输入,GND为接,地端。,8086微处理器,(4)17根控制信号线,。,地址锁存器,存储器,I/O芯片,VCC,数据收发器,MN/MX,RD CLK WR,READY M/IO,RESET ALE,TEST BHE,A16A19,AD0AD15,HLDA .,HOLD .,8086,INTA .,INTR DEN NMI DT/R,BHE,时钟发生器,8282锁存器与8086的连接,8282的选通信号输入端STB和CPU的ALE端相连,8282的DI7DI0接CPU的AD7AD0,8282的输出DO7DO0就是系统地址总线的低8位,OE为输出允许信号,当OE为低电平时,8282 的输出信号DO7DO0 有效;而当OE为高电平时,DO7DO0变为高阻抗。,在带DMA控制器的8086单处理器系统中,将OE接地即可。,最小模式8286与8086的连接,当一个系统中所含的外设较多时,数据总线上需要有发送器和接收器来增加驱动能力。发送器和接收器简称为收发器,也称为总线驱动器,8088系统,只用一片8286 就可构成数据总线收发器,而8086 系统中,则要用两片8286。,8286具有两组对称的数据引线,A7A0为输入数据线,B7B0为输出数据线,收发器中数据可双向传输,引脚信号T控制数据传输方向。当T=1 时,就使A7A0为输入线,B7B0为输出线;当T=0时,则使B7B0为输入线。,T和CPU的DT/R 相连,DT/R 为数据收发控制信号。,OE是输出允许信号,此信号决定了是否允许数据通过8286。在8086/8088系统中,OE端和CPU的DEN端相连。,当系统中CPU 以外的总线主控部件对总线有请求,并且得到CPU允许时,CPU的DEN和DT/R 端呈现高阻状态,从而使8286 各输出端也成为高阻状态。,GND,A,14,A,13,A,12,A,11,A,10,A,9,A,8,AD,7,AD,6,AD,5,AD,4,AD,3,AD,2,AD,1,AD,0,NMI,INTR,CLK,GND,Vcc(+5V),A,15,A,16,/S,3,A,17,/S,4,A,18,/S,5,A,19,/S,6,SS,0,MN/MX,RD,READY,RESET,HOLD(RQ/GT,0,),HLDA(RQ/GT,1,),WR(LCCK),IO/M(S,2,),DT/R(S,1,),DEN(S,0,),ALE(QS,0,),INTA(QS,1,),TEST,1,2,3,4,5,6,7,8,9,10,11,20,12,13,14,15,16,17,18,19,40,39,38,37,36,35,34,33,32,31,30,29,27,26,25,21,8088微处理器,28,24,23,22,(1)AD,7,AD,0,数据总线为8条。,(2)M/IO管脚定义相反。,(3)BHE改为SS,0,。,8086总线时序的一些概念,时序的概念:CPU各引脚信号在时间上的关系。,指令周期:CPU完成一条指令所需的时间。,时序图:描述某一操作过程中,芯片/总线上有关引脚信号随时间发生变化的关系图。,一个指令周期由多个总线周期组成。,总线周期:CPU完成一次访问内存(或接口)操作所需要的时间。,一个总线周期至少包括4个时钟周期。,时钟周期:由时钟发生器产生。是计算机内部最小的时间单位,用Ti表示。,晶振周期:晶体振荡器输出的周期。它一般分频后变为时钟周期,再作为内部工作单位。,6.8086CPU内部时序,等待周期:因存储器或I/O设备速度慢引起的。,空闲周期:因CPU执行指令所需时间长或在多微处理器系统中微处理器交换总线权时出现的。,地址输出,T1,T2,T3,T4,缓冲,数据输入,T1,T2,T3,TW,T4,TI,TI,T1,T2,T3,TW,T4,T,1,T,2,T,3,T,4,8086CPU,读,时序周期,T1,T2,T3,T4,地址输出,CLK,D,S,A,M/IO,RD,DEN,DT/R,A19/S6A16/S3,BHE/S7,ALE,AD15AD0,第一周期,CPU,输出,20,位地址、,ALE,信号,及地址,A,0,-A,19,第二周期,A,19,/S,6,-A,16,/S,3,,,!BHE/S,7,输出状态,S,7,-S,3,;同时,!RD,和,!DEN,变有效,(,低电平,),。,第三周期,数据输入。,第四周期,从,AD,15,-AD,0,读入数据,并使,!RD,信号和,!DEN,信号处于无效状态。,8086CPU,写,时序周期,地址输出,T1,T2,T3,T4,CLK,A19/S6A16/S3,BHE/S7,D,S,A,ALE,AD15AD0,M/IO,WR,DEN,DT/R,最小模式下的时序操作小结,一个基本总线周期由T1T4组成;,T1状态:ALE、M/IO、DT/R有效,分时复用线上传送地,址信息;,T2状态:RD、WR、DEN信号有效。对读操作,数据线,呈高阻;对写操作,直接出现输出数据;,T3状态:在T3的前沿检测READY,若有效,则读操作,出现输入数据;若READY无效,持续其他各控制信号,,加入若干个等待态Tw,并在每个Tw前沿继续检测READY,直至READY有效为止;,T4状态:接收数据,将各控制信号驱动为无效,进入无,源状态,为下一个总线周期做好准备。,8088与8086的区别,指令预取队列:8088为4字节,8086为6字节,数据总线引脚:8088有8根,8086有16根,控制线引脚:8088为IO/M,而8086为M/IO,8088 为SS0,而8086 的/BHE。,8088为准16位CPU,内部DB为16位,但外部仅,为8位,16位数据要分两次传送,
展开阅读全文