1、第二章 8086/8088微处理器及其结构,8086/8088内部结构,存储器结构,8086/8088CPU引脚及功能,8086/8088系统配置,8086/8088CPU内部时序,重点 : 8086CPU的组成及各部分的作用,8086存储器的分段、物理地址的形成 ,8086工作时序,堆栈的概念,难点:8086工作时序、 物理地址的形成,1.8086/8088 CPU主要性能,字长 :16位/准16位时钟频率:5MHz数据总线、地址总线复用内存容量 :20位地址总线,1MB存储空间端口地址:16位I/O地址总线,64KB个端口中断功能:内部软件中断,外部硬件中断, 可管理256个中断源两种工作
2、模式 :支持单片CPU或多片CPU 系统工作,8086/8088CPU性能指标,8086:是INTEL系列16位微处理器,采用HMOS(高密度金属氧化物半导体)技术,集成度为29000个管片。数据总线:16位地址总线:20位,可直接寻址的地址空间为 1M字节。,8088:准16位机,CPU内部数据总路线为16位,外部8位,20位地址总线,推出8088的目的是为了向下兼容以前的8位微型机。,2. 8086/8088内部结构,内 部 结 构,8086CPU结构框图及分析,8086CPU内部寄存器,2.1 8086CPU工作方式,微处 理器,堆栈段,存储 器接 口电 路,存储器,附加段,数据段,代码
3、段,代码段1,00000H,FFFFFH,2.2 8086CPU内部结构框架,2.2 8086CPU内部结构框架,执行部件EU的作用:负责执行指令、形成有效地址EA。EU 包括四部分:,运算器ALU+TEMP,标志寄存器,控制单元,通用寄存器,2.2 8086CPU内部结构框架,总线接口部件BIU的作用是预取指令、形成实际地址PA、输入输出数据。BIU主要由五部分组成:,指令队列缓冲器,总线控制逻辑,段寄存器,指令指针寄存器,地址产生器,总线利用率高。,串行结构:取指令取操作数执行指令存放结果,CPU利用率高,计算速度快。,两部分的动作管理遵循以下原则。,1.每当8086的指令队列中有2个空字
4、节,BIU就会自动把指令取到指令队列中;2.同时EU从指令队列中取出一条指令并分析、执行指令;3.当指令队列已满而EU对BIU又无总线访问请求时,BIU进入空闲状态;4.在执行转移、调用和返回指令时,指令队列中原有内容被自动清除。,微处理器结构分析,2.3 8088CPU内部结构框架,指令队列长度仅有4个字节,队列中出现1个 空闲字节,BIU就会自动访问存储器,取新的 指令。BIU通过总线控制电路与外部交换数据的数据 总线宽度是8位,总线控制电路与专用寄存器 之间的数据总线宽度也是8位。,2.3 8088CPU内部结构框架,2.4 寄存器通用寄存器,四个16位通用寄存器、两个变址寄存器、两个指
5、针寄存器。,AX:累加器(Accumulator),BX:基址寄存器(Base Index),CX:计数寄存器(Count Index),DX:数据寄存器(Data Index),SI:源变址寄存器(Source Index),DI:目标寄存器(Destination Index),SP:堆栈指针(Stack Pointer),BP:基址指针(Base Pointer),AXBXCXDX,0,15,8 7,AL,AH,BL,BH,CL,CH,DL,DH,SI,DI,SP,BP,在某些指令中规定了某些通用寄存器的专门用法, 这样可以缩短指令代码长度;或使这些寄存器的使用具有隐含的性质, 以简化指
6、令的书写形式(即在指令中不必写出使用的寄存器名称)。 通用寄存器的隐含用法如左表所示。,2.4 寄存器控制寄存器,指令指针寄存器IP:16位的寄存器,存放BIU要取的下一条指令的偏移地址。标致寄存器FR:FR中的含6个状态标志位,3个控制标志位。状态标志位用来反映EU执行算术运算和逻辑运算以后的结果特征;控制标志位用来控制微处理器的工作方式或工作状态。,2.4 寄存器标志寄存器FR,状态标志位,CF进位标志,CF=1,有进(借)位(算术)。,PF奇偶标志,含1个数为偶数,PF=1。,AF辅助进位位, D3向D4有进借位,AF=1。,OF溢出标志,OF=CF + CD。OF=1,有溢出。,SF符
7、号标志,SF=1,D7(D15)=1。,ZF零标志,ZF=1,结果为零。,控制位,IF中断允许标志,IF=1,允许CPU响应外设通过可屏蔽中断请求线提出的中断,DF 方向标志,串,DF=1,减址,TF跟踪标志,TF=1,CPU进入单步运行状态。,标志寄存器中的状态标志的状态表示符号,CF= 1,PF= 1,AF= 0,OF= 0,SF= 0,ZF= 0,无符号数相加,有符号数相加,2.4 寄存器段寄存器,8086微处理器的地址总线为20根,则其寻址空间为:,2.4 寄存器段寄存器,矛盾:外部地址总线为20根,内部能够提供的数据为16位。,因为16位地址最多可以访问64K的存储空间,所以每个分段
8、的最大空间为64K。,段起始地址,物理地址:存储器中实实在在存在的一个存储单元的编号,也叫实际地址。,段起始地址:分段的第一个物理地址。,00000H,FFFFFH,1M的存储空间能够被分为的段数为:16,段起始地址的特点:低四位为0。,12340H 12000H 00000H 23560H FFFF0H,2.4 寄存器段寄存器,段基址:段起始地址高十六位(二进制)组成的地址编码。,偏移地址,12340H,2233FH,逻辑段1,1238FH,右图所示段的段基址为:1234H,偏移地址:物理地址与所在段起始地址的差,也叫有效地址。,右图中1238FH的偏移地址为: 0004FH,物理地址的形成
9、:段基址左移4位(二进制)+ 偏移地址。,偏移地址的特点:高四位(二进制)永远为0,因此仅取其低十六位。,最大的偏移地址2233FH-12340H=0FFFFH,2.4 寄存器段寄存器,逻辑地址的特点:不唯一,逻辑地址 段基址:偏移地址,左图中1238FH的逻辑地址为:,1234H:004FH,逻辑地址的来源,2.4 寄存器段寄存器,代码段:存放等待执行的指令代码。,数据段:存放指令中所需要的操作数。,堆栈段:一段特殊的数据存取区域。,附加段:通常也用来存放操作数。,在程序量很大的情况下可以开辟多个代码段。同理,其它逻辑段也可以进行扩展。,堆栈段,附加段,数据段,代码段,各个逻辑段可以重叠。,
10、代码段1,功能段:按存放数据所起到的功能不同又可以分为代码段、数据段、堆栈段和附加段。,2.4 寄存器段寄存器,代码段寄存器CS:指向当前的代码段,指令由此段取出。,数据段寄存器DS:指向当前的数据段,通常用来存放程序变量。,堆栈段寄存器SS:指向当前的堆栈段,堆栈操作所需的就是该段存储单元的内容。,附加段寄存器ES:指向当前的附加段,通常也用来存储数据。,2.4 寄存器指令指针IP,12300H,12307H,0007H,IP:,当前代码段,指令指针寄存器IP存储的是当前预取指令的存储地址。,对于8086,BIU从存储器中取过一次指令后,IP自动加2,指向下一个预取指令。,对于8088,BI
11、U从存储器中取过一次指令后,IP自动加1,指向下一个预取指令。,程序员不能对IP进行存取操作,程序中的转移指令、返回指令及中断指令能对IP进行操作 。,3 8086/8088CPU的外部特性,有效电平 指引脚起作用时的逻辑电平。有些信号是低电平有效,也称作负逻辑,有些信号是高电平有效,也称作正逻辑。 三态 是指引脚除了能正常的输入或输出高、低电平之外,还能输出高阻状态 。,最大模式:有多个微处理器,最小模式:仅有8086一个微处理器,GND,AD14,AD13,AD12,AD11,AD10,AD9,AD8,AD7,AD6,AD5,AD4,AD3,AD2,AD1,AD0,NMI,INTR,CLK
12、,GND,Vcc(+5V),AD15,A16/S3,A17/S4,A18/S5,A19/S6,BHE/S7,MN/MX,RD,READY,RESET,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,8086/8088微处理器引脚及功能,(1)AD15AD0 分时复用的地址/数据总线。T1周期传送地址,三态输出;T2T4周期传送数据,双向三态输入/输出。,(2)A19/S6A16/S3 分时复用的地址/状态线。,S5=1,则
13、IF=1;,S6恒为0,8086微处理器,GND,AD14,AD13,AD12,AD11,AD10,AD9,AD8,AD7,AD6,AD5,AD4,AD3,AD2,AD1,AD0,NMI,INTR,CLK,GND,Vcc(+5V),AD15,A16/S3,A17/S4,A18/S5,A19/S6,BHE/S7,MN/MX,RD,READY,RESET,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(电源)、G
14、ND(地) 8086微处理器只需要单一的+5V电源,由Vcc输入,GND为接地端。,8086微处理器,(4)17根控制信号线。,地址锁存器,存储器,I/O芯片,VCC,8282锁存器与8086的连接,8282的选通信号输入端STB和CPU的ALE端相连 8282的DI7DI0接CPU的AD7AD0 8282的输出DO7DO0就是系统地址总线的低8位 OE为输出允许信号,当OE为低电平时,8282 的输出信号DO7DO0 有效;而当OE为高电平时,DO7DO0变为高阻抗。 在带DMA控制器的8086单处理器系统中,将OE接地即可。,最小模式8286与8086的连接当一个系统中所含的外设较多时,数
15、据总线上需要有发送器和接收器来增加驱动能力。发送器和接收器简称为收发器,也称为总线驱动器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 以外
16、的总线主控部件对总线有请求,并且得到CPU允许时,CPU的DEN和DT/ R 端呈现高阻状态,从而使8286 各输出端也成为高阻状态。,GND,A14,A13,A12,A11,A10,A9,A8,AD7,AD6,AD5,AD4,AD3,AD2,AD1,AD0,NMI,INTR,CLK,GND,Vcc(+5V),A15,A16/S3,A17/S4,A18/S5,A19/S6,SS0,MN/MX,RD,READY,RESET,IO/M ( S2),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,3
17、2,31,30,29,27,26,25,21,8088微处理器,28,24,23,22,(1)AD7AD0 数据总线为8条。,(2)M/IO管脚定义相反。,(3) BHE改为SS0。,4.存储器组织,8086系统中存储器的结构,8088系统中存储器的结构,4.1 8086系统中存储器的结构,存储地址相当于房间号码,而其中存储的数据才是我们要存取的具体内容。,右图所示的存储单元地址为:12356H,该单元中存储的数据为:25H,程序中的表示形式为:12356H=25H,如果存放的是字,则其表示形式为:,12356H=3625H,注意:字的高位存放在大地址单元,低位存放在小地址单元。程序中说明是字
18、数据还是字节数据。,4.1 8086系统中存储器的结构,字节交叉编址,4.1 8086系统中存储器的结构,4.1 8086系统中存储器的结构,BHE A0 访问库名 0 0 双库,实现16位数据的传送 0 1 奇地址高位库,实现8位数据的传送 1 0 偶地址低位库,实现8位数据的传送 1 1 不传送,BHE和A0的控制作用,假设存放的为字数据,则,12351H=1234H,12356H=3625H,规则字与非规则字,规则字:起始地址为偶地址。微处理器一次可以将数据读走。,非规则字:起始地址为奇地址。微处理器两次才能将数据读走。,4.2 8088系统中存储器的结构,单一存储体,一次只能读取一个字
19、节的信息,4.3 专用和保留的存储器单元,00000H003FFH(共1KB)。存放中断向量表。可存放256个中断服务程序的入口地址。属于系统的RAM范围。FFFF0HFFFFFH。系统上电或复位时,(CS)=FFFFH,(IP)=0000H,故FFFF0H为系统的复位地址,从这一地址开始存放一条无条件转移指令,使系统自动跳转到初始化程序。属于系统的ROM范围内。,5 8086总线时序的一些概念,时序的概念:CPU各引脚信号在时间上的关系。指令周期:CPU完成一条指令所需的时间。时序图:描述某一操作过程中,芯片/总线上有关引脚信号随时间发生变化的关系图。 一个指令周期由多个总线周期组成。总线周
20、期:CPU完成一次访问内存(或接口)操作所需要的时间。 一个总线周期至少包括4个时钟周期。时钟周期:由时钟发生器产生。是计算机内部最小的时间单位,用Ti表示。晶振周期:晶体振荡器输出的周期。它一般分频后变为时钟周期,再作为内部工作单位。,5 8086CPU内部时序,等待周期:因存储器或I/O设备速度慢引起的。空闲周期:因CPU执行指令所需时间长或在多微处理器系统中微处理器交换总线权时出现的。,地址输出,T1,T2,T3,T4,缓冲,数据输入,T1,T2,T3,TW,T4,TI,TI,T1,T2,T3,TW,T4,T1,T2,T3,T4,8086CPU读时序周期,T1,T2,T3,T4,CLK,
21、D,S,A,M/IO,RD,第一周期CPU输出20位地址、ALE信号,及地址A0-A19第二周期A19/S6-A16/S3,BHE /S7输出状态S7-S3;同时RD和DEN变有效(低电平)。第三周期数据输入。第四周期从AD15-AD0读入数据,并使RD信号和DEN信号处于无效状态。,8086CPU写时序周期,地址输出,T1,T2,T3,T4,CLK,A19/S6A16/S3BHE/S7,D,S,A,ALE,AD15AD0,M/IO,WR,DEN,DT/R,最小模式下的时序操作小结,一个基本总线周期由T1T4组成;T1状态:ALE、M/IO、DT/R有效,分时复用线上传送地址信息;T2状态:R
22、D、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位数据要分两次传送,