1 / 54

第 2 章 8088/8086 微处理器

第 2 章 8088/8086 微处理器. 第 2 章 8086/8088 微处理器. 教学目的 熟悉 8088/8086 微处理器的结构及其外部引脚和功能 掌握 8088/8086 微机存储器的组织 了解 8088/8086 微处理器的两种工作模式 了解 8088/8086 微处理器的工作时序. CPU 是计算机系统的核心部件,控制和协调整个计算机系统的工作。基本功能: ⊙进行算术运算和逻辑运算; ⊙对指令进行译码、分析、执行指令所规定的操作; ⊙与存储器和 I/O 接口进行数据交换; ⊙少量数据的暂存; ⊙提供系统所需的定时和控制信号;

Télécharger la présentation

第 2 章 8088/8086 微处理器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第2章 8088/8086微处理器

  2. 第2章 8086/8088微处理器 教学目的 • 熟悉8088/8086微处理器的结构及其外部引脚和功能 • 掌握8088/8086微机存储器的组织 • 了解8088/8086微处理器的两种工作模式 • 了解8088/8086微处理器的工作时序

  3. CPU是计算机系统的核心部件,控制和协调整个计算机系统的工作。基本功能:CPU是计算机系统的核心部件,控制和协调整个计算机系统的工作。基本功能: ⊙进行算术运算和逻辑运算; ⊙对指令进行译码、分析、执行指令所规定的操作; ⊙与存储器和I/O接口进行数据交换; ⊙少量数据的暂存; ⊙提供系统所需的定时和控制信号; ⊙响应输入输出设备发出的中断请求。

  4. 2.1 8088/8086微处理器的内部结构 8088与8086同属于第三代CPU,为16位CPU、地址总线宽度20位,它们支持完全相同的指令系统。区别: • 8086CPU内部数据总线为16位,外部数据总线宽度为16位,而8088的外部数据总线宽度为8位; • 另外8086的指令预取队列长度为6字节,而8088的指令预取队列长度为4字节。

  5. 8088以前的CPU采用串行工作方式,指令的执行过程一般为:8088以前的CPU采用串行工作方式,指令的执行过程一般为: 取指令 指令译码 取操作数 执行指令 存放结果 在EU和BIU之间增设了指令预取队列之后:在多数情况下,取指令操作和执行指令操作并行进行。

  6. 2.1.1 8086/8088CPU的功能结构 8086/8088包含两大功能部件,即 • 执行单元(EU,Execution Unit) • 总线接口单元(BIU,Bus Interface Unit)

  7. 20位 AX AH AL 地址加法器 BX BL BH 通用寄存器组 CL CH CX 数据总线 DX DH DL 16位 SP BP CS 段寄存器 DS DI SS SI ES IP ALU数据总线 16位 内部通信寄存器 总线控制逻辑 暂存寄存器 指令队列 ALU Q总线 EU 控制部件 1 2 3 4 8位 FLAGS 执行单元EU 总线接口单元BIU

  8. 1. 执行单元EU • 功能:译码分析指令,执行指令,暂存中间运算结果并保留结果特征。 • 从指令队列中取指令代码 译码 在ALU中完成数据的运算 运算结果的特征保存在标志寄存器FLAGS中。 • 如果指令队列为空,EU就等待;

  9. 2. 总线接口单元BIU • 功能:负责与内存或输入/输出接口的信息传送; • EU从指令预取队列中取走指令,指令队列出现空字节时,BIU就自动执行一次取指令周期,从内存中取出后续的指令代码放入指令预取队列中; • 从指定的内存单元或外设取EU需要的数据; • 保存EU的运算结果; • 当遇到跳转指令时, BIU就使指令队列复位,从新地址取出指令,并立即传给EU去执行。

  10. 8088/8086 CPU的工作方式为并行工作 指令预取队列的存在使EU和BIU两个部分可同时进行工作,从而 • 减少了CPU为取指令而等待的时间; • 降低了对存储器存取速度的要求 8088/8086 CPU的这种结构被称为指令流水线结构。新型CPU将一条指令划分成更多的阶段,以便可以同时执行更多的指令,例如,PIII为14个阶段,P4为20个阶段(超级流水线)

  11. 2.1.2 8088CPU的存储器组织 物理地址 ●8088/8086:20根地址线,可寻址220(1MB)个存储单元。 ● CPU送到AB上的20位的地址称为物理地址。 物理地址 . . 60000H 60001H 60002H 60003H 60004H . . . F0H 12H 代码段 低地址 1BH 段基址 08H 段i-1 最大64KB,最小16B 段基址 段i 段基址 段i+1 段基址 高地址

  12. . . 60000H 60001H 60002H 60003H 60004H . . . F0H 12H 物理地址 1BH 08H • 问题: • 8088的内部总线和内部寄存器均为16位,如何生成20位地址? • 解决:存储器分段

  13. 物理地址是CPU操作时所使用的地址;逻辑地址是应用人员在编程时所使用的地址。由逻辑地址形成物理地址是由总线接口部件中的地址加法器实现的。物理地址是CPU操作时所使用的地址;逻辑地址是应用人员在编程时所使用的地址。由逻辑地址形成物理地址是由总线接口部件中的地址加法器实现的。 代码段寄存器:CS 数据段寄存器:DS 堆栈段寄存器:SS 附加段寄存器:ES

  14. 存储器如何分段? ①8086/8088系统中把可直接寻址的1兆的内存空间分为段的逻辑区域。每段的物理长度为64KB。 ②每段的第一个内存单元的物理地址称为段起始地址,段起始地址必须能被16整除,形式如XXXX0H,XXXXH为段基址,即段起始地址的高16位。段基址存在段寄存器CS、 DS、 SS、 ES中。相对于该段起始地址的字节数称为偏移量;段基址和段内偏移量又称为逻辑地址。段起始地址可由软件指定 ③每个段都由连续的存储单元构成,并且独立寻址。

  15. 段基地址和段内偏移量组成了逻辑地址 段基址 偏移地址(偏移量) 表示为:段基址:段内偏移量 如:2000:0370H 物理地址=段基址×10H+偏移地址 60000H 0AH 3EH 60002H 00H 段首地址 12H × × × • • • × × × 0 0 0 0 段基地址(16位)

  16. 10550H CS CS 250A0H DS 2EF00H ES 8FF00H SS • 已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H, DS段有一操作数,其偏移地址=0204H, 1)画出各段在内存中的分布 2)指出各段末地址 3)该操作数的物理地址=? 解:各段分布及段首址见右图所示。 操作数的物理地址为: 250AH×10H+0204H = 252A4H

  17. 存储器为什么要分段? • 因为8088/8086的寄存器都是16位的,无法装载20位的物理地址,所以它采用了将地址空间分段的方法; • 方便存储器的管理,采用分段甚至分页来管理,使得多个程序可以并行运行; • 分段寻址允许程序在存储器内重定位(浮动),可以把整个程序作为一个整体移到一个新的区域。允许实模式编写的程序在保护模式下运行。程序当中使用的地址都是逻辑地址。 • 信息按特征分段存储。

  18. 2.1.3 8088CPU的寄存器结构 • 含14个16位寄存器,按功能可分为三类: 8个通用寄存器 4个段寄存器 2个控制寄存器

  19. AH AL AX BH BL BX CX CH CL AH AL AX 通用寄存器 DH DL DX 堆栈指针寄存器 SP BH BL BX 控制寄存器 BP 基址指针寄存器 源变址寄存器 DI 目的变址寄存器 SI 指令指针 CX IP CH CL 通用寄存器 状态标志 FLAGS DH DL DX 代码段寄存器 堆栈指针寄存器 SP CS 数据段寄存器 BP 基址指针寄存器 DS 段寄存器 源变址寄存器 堆栈段寄存器 SS SI 目的变址寄存器 ES 附加段寄存器 DI

  20. 2.1.3 8088CPU的寄存器结构 数据寄存器 通用寄存器 指针寄存器 按功能分 变址寄存器 专用寄存器 控制寄存器 段寄存器

  21. 数据寄存器 • 8088含4个16位数据寄存器,它们又可分为8个8位寄存器,即: • AX AH,AL • BX BH,BL • CX CH,CL • DX DH,DL 常用来存放参与运算的操作数或运算结果

  22. 数据寄存器特有的习惯用法 • AX:累加器。多用于存放中间运算结果。所有 I/O指令必须都通过AX与接口传送信息; • BX:基址寄存器。常用于存放访问内存时的偏移地 址; • CX:计数寄存器。用于在循环或串操作指令中存 放循环次数或重复次数; • DX:数据寄存器。在32位乘除法运算时,存放 高16位数;在间接寻址的I/O指令中存放 I/O端口地址。

  23. 地址指针寄存器 • SP:堆栈指针寄存器,其内容为栈顶的偏移地址; • BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。

  24. BX与BP在应用上的区别 • 作为通用寄存器,二者均可用于存放数据; • 作为基址寄存器,BX通常用于数据段,一般与DS或ES搭配使用;BP则通常用于堆栈段,与SS搭配使用。

  25. 变址寄存器 • SI:源变址寄存器 • DI:目标变址寄存器 变址寄存器常用于指令的间接寻址或变址寻址.

  26. 段寄存器 用于存放逻辑段的段基地址。 CS:代码段寄存器 DS:数据段寄存器 ES:附加段寄存器 SS:堆栈段寄存器 堆栈段用于存放返回地址,保存寄存器内容,传递参数。

  27. 指令指针寄存器 • IP:指令指针寄存器,其内容为下一条 要执行的指令的偏移地址; 标志寄存器FR(Flag Register)、psw • FLAGS:标志寄存器(程序状态字PSW) • 状态标志:存放运算结果的特征 • 控制标志:控制某些特殊操作 6个状态标志位(CF,SF,AF,PF,OF,ZF) 3个控制标志位(IF,TF,DF)

  28. CF -进位标志:算术运算时有进位CF=1,无进位CF=0 • PF-奇偶标志:运算结果中“1” 的个数为偶数PF=1 • AF-辅助进位标志:第3位向第4位有进位时AF=1 • ZF-零标志:运算结果为“0”则ZF=1 • SF-符号标志:运算结果为负数时SF=1 • OF-溢出标志:运算结果超出规定范围OF=1 • IF-中断允许标志:IF=1中断允许 • DF-方向标志, DF=0地址加1 • TF-跟踪标志,TF=1,为单步工作方式

  29. 2.28088 CPU的引脚及其功能 双列直插式封装 40个引脚 图2-6 8088微处理器芯片引脚图

  30. 8088/8086可工作于两种模式 8088/8086特点3:支持多处理器系统 最小模式: • 系统控制总线的信号由芯片本身的引脚直接引出。仅需少量设备便可构成一个小型应用系统,也称为单处理机模式。不能DMA 最大模式: • 系统总线由8088和总线控制器8288共同构成。这种模式下构成的微型机除8088 CPU以外,还可以接一个协处理器8087。也称为多处理器模式。

  31. 2.2 8088 CPU的引脚及功能 引脚定义的方法可大致分为: • 每个引脚只传送一种信息(RD等); • 引脚电平的高低代表不同的信号(IO/M等); • CPU工作于不同方式有不同的名称和定义(WR/LOCK 等); • 分时复用引脚(AD7~ AD0 等) ;为了减少芯片的引脚,8088的许多引脚具有双重定义和功能,可以分时复用;即在不同时刻,这些引线上的信号是不同的。 • 引脚的输入和输出分别传送不同的信息。

  32. GND A14 A13 A12 A11 A10 A9 A8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 NMI INTR CLK GND 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vcc A15 A16/S3 A17/S4 A18/S5 A19/S6 SS0 HIGH MN/MX RD 无功能 HOLD RQ/GT0 HLDA RQ/GT1 WRLOCK IO/M S2 DT/R S1 DEN S0 ALE QS0 INTA QS1 TEST READY RESET 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 地址、段寄存器状态复用;S6=0, S5=IF, S4S3=00,ES S4S3=01,SS S4S3=10,CS S4S3=11,DS • 40条引脚, 双列直插式封装 系统状态信号输出; =1,最小模式 =0,最大模式 =1,访问输入输出端口; =0,访问存储器 数据传送方向控制信号, =1,CPU发送数据; =0,CPU接收数据; 数据允许信号,数据总线上有有效数据; 地址锁存允许信号,ALE=1, 输入信号,由内存或I/O设备发出。 可屏蔽中断请求输入信号;

  33. 图2-7 8088读周期的时序图

  34. SS0与IO/M、DT/R共同决定了最小模式下当前总线周期的状态。SS0与IO/M、DT/R共同决定了最小模式下当前总线周期的状态。

  35. 内部寄存器 内容 内部寄存器 内容 CS FFFFH IP 0000H DS 0000H FLAGS 0000H SS 0000H 其余寄存器 0000H ES 0000H 指令队列 空 复位后的内部寄存器状态

  36. 主要引线(最小模式下) • 8088是工作在最小还是最大模式由MN/MX端状态决定:MN/MX=0时工作于最大模式,反之工作于最小模式。 数据信号线(DB)与地址信号线(AB): • AD7~AD0:三态,地址/数据复用线。ALE有效时输出地址的低8位。传送数据信号时为双向。 • A19~A16:三态,输出。高4位地址信号,与状态信号 S6-S3分时复用。 • A15~A8 :三态,输出。输出8位地址信号。

  37. 主要的控制和状态信号 • WR: 三态,输出。写命令信号; • RD: 三态,输出。读命令信号; • IO/M:三态,输出。指出当前访问的是存储器还是I/O接 口。高:I/O接口,低:内存 • DEN:三态,输出。低电平时,表示DB上的数据有效; • RESET:输入,为高时,CPU执行复位; • ALE: 三态,输出。高:AB地址有效; • DT/ R:三态,输出。数据传送方向,高:CPU输出, 低:CPU输入

  38. [例]: • 当WR=1,RD=0,IO/M=0时, • 表示CPU当前正在进行读存储器操作。

  39. READY信号(输入): 用于协调CPU与存储器、I/O接口之间的速度差异,READY信号由存储器或I/O接口发出。 READY=0时,CPU就在T3后插入TW周期,插入的TW个数取决于READY何时变为高电平。CPU处于空闲状态。

  40. 中断请求和响应信号 • INTR:输入,可屏蔽中断请求输入端。 高:有INTR中断请求 • NMI:输入,非屏蔽中断请求输入端。 低高,有NMI中断请求 • INTA:输出,对INTR信号的响应。

  41. 总线保持信号 • HOLD: 总线保持请求信号输入端。当CPU以外的其他设备要求占用总线时,通过该引脚向CPU发出请求。 • HLDA: 输出,对HOLD信号的响应。为高电平时,表示CPU已放弃总线控制权,所有三态信号线均变为高阻状 态。

  42. 3. 最大模式引脚 • 为使微处理器工作于最大模式,从而与外部协处理器一起工作,应将MN/MX引脚接地。 • S2,S1和S0:这些状态位显示当前总线周期的功能。它们通常由8288总线控制器译码。

  43. 3. 最大模式引脚 表2-3 总线控制器(8288)使用S2,S1和S0产生的总线控制功能

  44. SS0与IO/M、DT/R共同决定了最小模式下当前总线周期的状态。SS0与IO/M、DT/R共同决定了最小模式下当前总线周期的状态。

  45. RQ/GT1和RQ/GT0:请求/同意引脚,在最大模式下请求直接存储器存取(DMA)。这两个引脚都是双向的,既可用于请求DMA操作,又可用于同意DMA操作。RQ/GT1和RQ/GT0:请求/同意引脚,在最大模式下请求直接存储器存取(DMA)。这两个引脚都是双向的,既可用于请求DMA操作,又可用于同意DMA操作。 • LOCK:锁定输出信号,用来锁定外围设备对系统总线的控制权。该引脚通过在指令前加前缀LOCK激活。 • QS1和QS0:队列状态位,表明内部指令队列的状态。这些引脚被算术协处理器(8087)访问,以监视微处理器内部指令队列的状态。参看表2-4队列状态位的操作。

  46. 表2-4 队列状态位

  47. 2.3 8088CPU的工作时序及总线形成 2.3.1 8088 CPU的工作时序 • 时序的概念:CPU各引脚信号在时间上的关系。 • 时钟周期:每个时钟脉冲的持续的时间,由时钟发生器产生。是计算机内部最小的时间单位,用Ti表示。 • 总线周期:CPU完成一次访问内存(或接口)操作所需要的时间。8088CPU 一个总线周期至少包括4个时钟周期。 • 例如: 某CPU的主频f= 5MHz,则其时钟周期T= 1/f = 200nS(1ns=10-9S)。若主频为100MHz,时钟周期为10nS。

  48. 图2-7 8088读周期的时序图

More Related