• 1. 16位微处理器8086第二章 16位微处理器8086
  • 2. 微处理器性能指标微处理器性能指标主要有2项: 1. 字长:指CPU能同时处理的数据位数 如:8086为16位字长,80386为32位字长 2. 主频:即CPU时钟频率,主频越高,速度越快 如:8086为5MHz,80386为16MHz,Pentium IV可达3GHz 指令执行过程 取指令  指令译码  指令执行 微型计算机的工作过程, 也就是不断地取指令、译码 和执行的过程,直到遇到停机 指令时才结束机器的运行。 流水线的概念取指令,IP值加1停机?译码并执行结束YN
  • 3. 8086内部结构第2.1节 8086内部结构AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIFLAGALU123456暂存器CSDSSSES总线控制电路EU控制运算暂存器指令队列(EU)执行单元(BIU)总线接口单元IP通用 寄存器 8086内部分为执行单元和总线接口单元 执行单元(EU):负责指令的译码和执行 总线接口单元(BIU) 负责与存储器、I/O口传送数据EU-Execution Unit BIU-Bus Interface Unit
  • 4. 总线接口单元BIU一. 总线接口单元(BIU) 具体功能 负责从内存取指令送到CPU内部的指令队列 CPU执行指令时,配合EU从指定存储单元或I/O口取数据,或把运算结果传送到指定存储单元或I/O口 组成 1) 4个16位段地址寄存器 CS (Code Segment) —代码段寄存器,代码段存放代码 DS (Data Segment) —数据段寄存器,数据段存放数据 SS (Stack Segment)—堆栈段寄存器,堆栈段用作堆栈操作 ES (Extra Segment)—扩展段寄存器,扩展段存放数据 注:8086对存储器采用分段管理,4个段寄存器分别存放4个当前段的段地址,又称作段基址寄存器。寄 存 器 存储单元 概念 端 口
  • 5. 总线接口单元BIU2) 指令指针寄存器IP (Instruction Pointer) 16位IP存放当前代码段(CS)所要取出的下一条指令的偏移地址 3) 地址加法器∑ 8086用20位地址线寻址1MB内存空间,但其内部寄存器是16位的,因此需要用地址加法器∑根据16位寄存器的值计算出20位物理地址 4) 指令缓冲队列 8086执行指令的同时,会从内存取1条或几条指令,取来的指令就存放在指令队列中,8086执行完一条指令就可立即执行下一条指令,无需轮番的取指令和执行指令,提高了CPU效率; 8086指令队列为6个字节,8088指令队列为4个字节; 5)其他 暂存器:用于与EU通信的内部寄存器 总线控制电路:负责总线操作控制
  • 6. 执行单元EU二. 执行单元(EU) 1) 16位算术逻辑单元ALU 主要是加法器,绝大部分指令执行都由加法器完成 2) 4个16位数据寄存器(AX、BX、CX、DX) 可分为8个8位寄存器使用AH、AL、BH、BL、CH、CL、DH、DL 数据寄存器用于存放操作数及中间结果,AX和AL可用作累加操作,因此又称作累加器 3) 4个16位地址指针寄存器:通常用于存放操作数偏移地址 SP (Stack Pointer)— 堆栈指针寄存器,指示堆栈段栈顶位置 BP (Base Pointer) — 基址指针寄存器,指示堆栈段数据区基址 SI (Source Index) — 源变址寄存器,指示数据段源串地址 DI (Destination Index)—目的变址寄存器,指示扩展段目的串地址
  • 7. 执行单元EU4) 标志寄存器 FLAG 6位状态标志,3位控制标志IF、DF、TF,剩下7位保留 CF(Carry Flag)进(借)位标志,加法运算最高位产生进位或减法运算最高位产生借位,则CF置1,否则置0 AF(Auxiliary Carry Flag)辅助进位标志,加法运算时第3位往第4位有进位,或减法运算时第3位往第4位有借位,则AF置1,否则置0 ZF(Zero Flag)零标志, 若当前运算结果为零, 则ZF置1,否则置0 SF(Sign Flag)符号标志,与运算结果最高位相同,若为负数,则SF置1,否则置0,SF指示了当前运算结果是正还是负 OF(Overflow Flag)溢出标志,有符号数算术运算结果溢出,则OF置1,否则置0 PF(Parity Flag)奇偶标志,运算结果低8位所含1的个数为偶数则PF置1,否则置01514131211109876543210OFDFIFTFSFZFAFPFCF
  • 8. 标志寄存器控制标志: DF(Direction Flag)方向标志 DF=1,串操作时,地址不断递减;DF=0,串操作时,地址不断递增 IF(Interrupt enable Flag)中断允许标志 IF=1,CPU允许接收可屏蔽中断请求,即开中断;IF=0,则关中断 TF(Trap Flag)跟踪标志,又称单步标志 TF=1,CPU为单步工作方式,每执行完一条指令产生一次软件中断 TF=0,CPU为正常工作,连续处理指令 状态标志寄存器举例: 0101 0100 0011 1001 + 0100 0101 0110 10101001 1001 1010 0011 运算后 CF=0 PF=1 OF=Cs Cp=1 AF=1 ZF=0 SF=1
  • 9. BIU与EU的配合三. 总线接口部件(BIU)和执行部件(EU)的配合 指令队列中出现两个字节为空时,BIU自动按CS和IP值组成20位物理地址,到存储器中取指令,一次取两个字节指令存放到指令队列中 EU从BIU指令队列中读取指令 由EU控制电路对指令进行译码分析,指出操作性质及操作对象 EU执行指令,如需访问存储器或I/O端口中的数据,则由EU给出数据的16位偏移地址送给BIU BIU由地址加法器∑形成20位绝对物理地址,并传递给存储器 存储器给出数据,BIU通过总线控制电路将其传送到CPU内部总线 EU将从内部总线获得数据,并送入ALU进行运算 EU运算出的结果,经内部总线送到指定的寄存器或暂存器,若需要将结果送给存储器,则由EU给出偏移地址,请求BIU产生20位实际物理地址,将结果写入存储器
  • 10. 存储器和I/O管理四. 存储器和I/O管理 1. 8086存储器编址 8086具有20位地址线,可寻址1MB存储空间,编址为00000H~FFFFFH 2. 8086存储器管理 8086对存储器采用分段管理,将1MB空间分为若干个段,每段最多为64KB,一个程序可以有代码、数据、堆栈和扩展数据4个部分,每部分又可包含一个或几个段,代码部分包含的段均称为代码段,其余部分类似,分别由CS、DS、SS、ES指示每部分当前正在操作的段起始地址。实际CS、DS等存放的是20位段起始地址的高16位,即段地址。 对存储单元访问时,需要知道该存储单元所在段的起始地址,还需要知道该存储单元距离段起始位置的偏移量,即偏移地址,才能访问该存储单元。由于每段大小不会超过64KB,因此偏移地址用16位表示
  • 11. 存储器和I/O管理 由于段寄存器是16位,偏移地址也为16位,而一个存储单元的物理地址是20位,因此8086需要通过地址加法器∑根据段地址和偏移地址形成20位物理地址。段地址和偏移地址组合称为逻辑地址。 逻辑地址形式为  段地址 : 偏移地址 20位物理地址的形成 (物理地址)20 = 段地址左移4位 + 偏移地址 (物理地址)20 = (段地址)*16 + 偏移地址 例:若逻辑地址为FFFFH : 0000H,则对应的物理地址为: F F F F + 0 0 0 0 F F F F 0段地址偏移地址+16位4位16位物理地址20位
  • 12. 存储器和I/O管理 段寄存器  段地址,地址指针寄存器  偏移地址,二者配对使用,组合关系左图所示:(BX也可用于存放偏移地址) 存储器管理的几点说明 一个段总是从16字节边界开始,20位段起始地址的低4位总为0 同一个物理地址可以采取不同的逻辑地址形式表示 例:物理地址12345H 可表示为1200 : 0345H 或 1230 : 0045H 尽管代码段、数据段、堆栈段、扩展段均为64KB,但实际应用时,不同段可以相互重叠或重合,但段内地址连续CS代码段数据段堆栈段IPDSSI,DI或BXSSSP或BP20000H21000H2FFFFH30FFFH代码段数据段
  • 13. 存储器和I/O管理3. 8086 I/O编址 8086用低16根地址线,寻址64KB的I/O端口,编址为0000H~FFFFH 一个I/O端口通常对应I/O接口电路中的一个存储单元,微机为每个端口分配一个地址,即为端口号 实际使用中8086只使用低10根地址线,寻址1KB的I/O端口 8086对I/O端口操作,需要专门的IN、OUT指令,并且只能通过累加器(AX/AL)来完成,例: IN AL, 80H 8086系统中,存储器和I/O端口分别独立编址 存储器的地址范围是00000H – 0FFFFFH I/O端口的地址范围是0000H – 0FFFF
  • 14. 8086引脚信号和工作模式第2.2节 8086引脚信号和工作模式 一. 最小模式与最大模式 两种工作模式,由 引脚决定 最小模式:系统中只有一个处理器; 为高电平 最大模式:系统中包括两个或多个处理器; 为低电平 不同模式下,部分引脚定义不同 二. 8086引脚信号和功能 1. 8086引脚图和引脚分类图 8086 CPU为40pin双列直插(DIP)封装 MN/MXMN/MXMN/MX
  • 15. 8086引脚分类图INTRNMIINTA (QS1)中断控制8086(S2) M/IORD(LOCK) WR(S0) DEN(S1) DT/R系统控制(RQ0) HOLD(RQ1) HLDA总线 控制VCCGNDCLKREADYRESETMN/MXTESTCPU 控制ALE (QS0)BHE / S7AD0~AD15A16 / S3~A19 / S6总线信号8086 20根AB/16根DB分时复用; 先传地址,后传数据
  • 16. 最小模式引脚信号2. 最小模式下引脚信号和功能 1)总线信号 AD0~AD15: 地址/数据复用引脚,双向工作 分时传送16位数据和地址的低16位,由ALE锁存地址信息。 A16~A19(S3~S6): 地址/状态复用引脚,输出 分时输出地址的高4位和CPU当前状态,地址信息由ALE锁存。 BHE/S7: 高8位数据总线允许/状态复用引脚,输出 低电平有效,表示高8位数据线D15~D8上数据有效 ALE: 地址锁存允许信号输出 高电平有效,表示总线上的信息是地址信息。 2)总线控制信号 HOLD: 总线保持请求信号输入 高电平有效,表示其他模块(如DMA)申请占用总线 HLDA: 总线保持响应信号输出,高电平有效,表示CPU已让出总线
  • 17. 最小模式引脚信号3)系统控制信号 M/IO: 存储器/输入输出选择信号,输出,高电平表示CPU访问存储器,低电平表示CPU访问I/O端口 RD: 读信号输出,低电平有效,表示CPU从存储器或I/O口读入信息 WR: 写信号输出,低电平有效,表示CPU向存储器或I/O口输出数据 DT/R: 数据收发信号输出 高电平表示CPU正在发送数据,低电平表示CPU接收数据 DEN: 数据允许信号输出 低电平有效,表示CPU当前准备发送或接收一个数据 4)中断控制信号 INTR: 可屏蔽中断请求信号输入 高电平有效,表示外部向CPU提出中断申请 INTA: 中断响应信号输出,低电平有效,表示CPU响应外设中断请求 NMI: 非屏蔽中断请求信号输入 上升沿有效。表示外部有非屏蔽中断申请。非屏蔽中断不受软件控制,CPU必须响应
  • 18. 最小模式引脚信号5)CPU控制信号 RESET: 复位信号输入 高电平有效,至少保持4个时钟周期的高电平。复位时CPU停止现行操作,开始复位,并进行初始化:标志寄存器FLAG、IP、DS、SS、ES及指令队列均清零,CS为FFFFH,复位结束时CPU从FFFF0H开始执行程序 MN/MX:最小模式/最大模式选择信号输入 READY:“准备好”信号输入,高电平有效,表示存储器或I/O口已准备就绪,可进行一次数据传输 TEST: 测试信号输入,低电平有效,有效时CPU退出WAIT指令 6)其它信号 CLK: 时钟信号,8086主频为4.77MHZ T=210ns;单相,占空比为1/3。 VCC,GND: 电源及地,+5V,满足TTL规范
  • 19. 最大模式引脚信号3. 最大模式下引脚信号和功能 最大模式下8086有8个控制信号被重新定义,对应关系如下: 最小模式 最大模式 HOLD RQ0/GT0 HLDA RQ1/GT1 WR LOCK M/IO S2 DT/R S1 DEN S0 ALE QS0 INTA QS1S2、S1、S0:总线周期状态信号输出, 三个信号组合,由总线控制器8288译码后产生系统控制信号 LOCK:总线封锁信号输出 有效时禁止其他部件占用总线。 RQ0/GT0,RQ1/GT1:总线请求/允许信号 双向,低电平有效。有两个总线请求与总线响应信号,支持多处理器工作 QS1,QS0:指令队列状态信号输出 两个信号组合指示指令队列状态
  • 20. 8088引脚信号和功能三. 8088引脚信号和功能 8088为准16位机,片内数据总线宽度为16位,片外为8位,引脚信号和功能与8086类似,二者差别如下: 8086微处理器 8088微处理器 16位AD复用 8位AD复用 BHE高八位数据允许 SS0/高电平 M/IO引脚选择存储器/IO口 M/IO引脚选择存储器/IO口
  • 21. 8086最小模式下总线连接四. 总线连接 1. 8086最小模式下的总线连接1)Intel 8282 把AD复用引脚连接到地址总线的8位地址锁存器。3片8282(功能同74LS373)A0~A19和BHE,ALE为锁存信号。 2)Intel 8286 把AD复用引脚连接到数据总线的8位数据缓冲器。2片8286(功能同74LS245)做D15~D0的缓冲器,DT/R做方向选择,DEN为选通信号。+5MN/MXINTRNMIHOLDHLDAREADYM/IORDWRINTAM/IORDWRINTRINTANMIHOLDHLDAREADY控制总线A19~A16ALEBHESTBOEHLDA82828282(2)AD15~AD0BHE’A19~A16A15~A0HLDA地址总线STBOEDT/RDENDIR8286(2)D15~D0数据 总线OE
  • 22. 最小模式连接说明 — 读/写控制3) 控制信号M/IO、RD和WR完成信息传递控制。组合起来完成右面的控制。 有时也作以下处理MEMRMEMWIORIOWM/IORDWR存储器读命令存储器写命令I/O读命令I/O写命令
  • 23. 中断申请和总线保持信号4)中断控制信号INTR、INTA、NMI INTR: 外部可屏蔽中断请求引脚,高电平有效 INTA: 中断响应信号,低电平有效 NMI: 不可屏蔽中断请求引脚,上升沿有效 5)总线控制信号HOLD、HLDA HOLD:总线保持请求引脚,高电平有效 HLDA:总线保持响应引脚,高电平有效 HLDA控制8282的OE,当CPU总线保持响应时让出总线
  • 24. 8086最大模式下总线连接2. 8086最大模式下的总线连接ALEBHEA19~A16BHEA15~A0STBSTBDIROEOEOE82828282(2)8286地址总线数据总线(2)DT/RDENMRDCMWTCIORCIOWCINTAINTAMEMRMEMWIORIOWS0S1S2S0S1S28288INTRNMIINTRNMI8086AEN_8237AEN_8237A19~A16D15~D0MN/MXA15~A0
  • 25. 8086操作和时序第2.3节 8086操作和时序 一. 8086时钟电路与复位电路 8284为8086提供CLK时钟信号、 RESET复位信号和READY准备好信号 8086/8088内部无时钟发生器,时钟由8284提供,频率为4.77MHz 输入/RES经8284内部斯密特触发器整形,同步后产生RESET信号,给CPU复位 外界准备好信号输入到8284的RDY端,同步后产生READY信号给CPU+5VRESRESET信号至少需要维持4个时钟周期阻容复位电路51051014.31818MHzRESETREADYCLK输出到系统其他部件+5VRDY1RDY2OSCPCLKX2X1CLKREADYRESETRESAEN1F/CASYNCAEN282848086RDY/WAITDMAWAITPOWER GOOD
  • 26. 8284内部逻辑图8284内部逻辑图F/CDCQCDQ1/31/2时钟震荡器RESX1X2EFICSYNCRDY1AEN1RDY2AEN2ASYNCRESETOSCPCLKCLKREADYCDQ OSC: 内部时钟同频信号。 CLK: 输入时钟3分频信号,占空比为1/3。为8086提供时钟 PCLK:输入时钟6分频信号,占空比1/2
  • 27. 8086/8088复位和启动二. 8086/8088系统的复位操作和启动过程 CPU接到RESET信号,停止现有工作,进行复位操作:CS置FFFFH,IP置0,指令队列清空,其余寄存器清0; 从存储器FFFFH :0000H取第一条指令,一般在此处放一条跳转指令,跳转到ROM BIOS中的系统测试程序; 系统测试程序执行硬件自检(对CPU、RAM、ROM等硬件进行测试),然后执行ROM BIOS中的初始引导程序; 初始引导程序再从磁盘0面0道1扇区装入引导程序,执行引导操作 按引导程序的指令,顺序装入其他程序模块,完成操作系统的引导操作; 注:在3、4步之间微机还会检查C0000H开始的扩展ROM空间中是否有程序,如果有,并且校验正确,则先执行这些程序
  • 28. 8086总线周期三. 8086总线周期 CPU取指令或传送数据时,均需要通过BIU进行总线操作,而总线操作是 根据时钟脉冲CLK一个节拍一个节拍的完成。 1. 时钟周期T(T状态) 时钟脉冲的一个循环时间叫做一个时钟周期。每个时钟周期T又称为一 个“状态”。它是CPU工作的最小时间单位,是计算机系统工作速度的重要标 志。8086 CPU的F=4.77M,T=210ns 2.总线周期 CPU通过总线从存储器或I/O端口存取一个字或字节的时间称为总线周期 包括三类:存储器读写周期、I/O端口读写周期、中断响应周期 一个基本总线周期包括4个状态:T1,T2,T3,T4 3. 指令周期 执行一条指令所需要的时间称为指令周期。8086指令周期最短为2个时 钟周期,最长为200个时钟周期。
  • 29. 总线周期举例例:时钟周期、总线周期、指令周期举例 在总线周期的T3状态,CPU会检查READY引脚,若为低电平无效,则CPU会在T3之后插入等待周期Tw,等待外界准备好,在每个Tw状态会继续检查READY引脚,直到READY变为高电平有效才进入T4状态 在两个总线操作中间,系统总线处于空闲状态,CPU便会在两个总线周期之间插入空闲周期Ti,在Ti状态,CPU不执行任何总线操作T1T2TwT4TiTiT1总线周期空闲 周期T3
  • 30. 8086总线操作时序—存储器读周期四. 8086总线操作时序 1. 最小模式下存储器读周期 时序图 T1T2T3T4T1CLKALEDT/RREADYRD地址状态地址数据AD15~0A19~16S3~S6存储器读周期时序M/IOBHEDEN
  • 31. 8086总线操作时序—存储器读周期存储器读周期时序说明: T1状态 置M/IO为高电平,指示是从存储器读数据 输出20位地址信号,指明具体读取那个存储单元 地址高4位由A19/S6~A16/S3送出,低16位由AD15~AD0送出 T1开始,ALE置高,8282输出跟随输入,T1上升沿,ALE置低,8282锁存20位地址 BHE也在T1状态锁存,指示T2、T3状态传送数据时,高8位是否有效 置DT/R为低,控制8286接收数据,置DEN为高,让8286输出浮空 T2状态 撤销地址信号,AD15~AD0处于高阻状态,为读入数据作准备 A19/S6~A16/S3及BHE/S7引脚输出状态信息S7~S3 置RD信号为低电平,输出读信号到存储器 置DEN为低电平,打开8286三态门,准备接收存储器输出的数据
  • 32. 8086总线操作时序—存储器读周期T3状态 存储器将数据送到数据总线,CPU通过AD15~AD0接收数据 T3上升沿检测READY信号,若为高电平,则下一个为T4状态;否则插入等待周期Tw T4状态 T4开始,撤销RD和DEN信号,置为高电平无效,数据总线浮空 T4上升沿撤销DT/R信号 CPU读取存储器数据的时间为 2T = 420ns (RD或DEN有效时间) 注:最小模式下I/O口读周期与存储器读周期类似,区别为读I/O口时,T1状态将置M/IO为低电平,表示是对I/O口进行读
  • 33. 具有等待周期的存储器读周期时序带Tw的存储器读周期2. 具有等待周期的存储器读周期在T3上升沿检测READY,若为低电平,则插入一个Tw RD有效时间为3T=630nsT1T2T3T4T1地址状态地址数据CLKAADALEREADYBHERDDENDT/R15~019~16S3~S6TWM/IO
  • 34. DT/R为高电平。 AD15~AD0输出地址后,紧接着输出数据,T4上升沿浮空 T1下降沿输出写信号WRT1T2T3T4T1地址状态地址数据CLKBHEALEREADYWRDT/RAD15~0A19~16S3~S6存储器写周期时序M/IODEN存储器写周期3. 最小模式下存储器写周期