1 / 65

第二章 8086 系统结构

第二章 8086 系统结构. 通过本章学习 , 应掌握以下内容: 8086CPU 结构 CPU 引脚及其功能 存储器组织与堆栈 总线周期与操作时序 8086 系统配置. §2.1 8086CPU 结构 一、 8086 的功能结构 微处理器 8086 从功能上分为两部分:总线接口部分( BIU ),执行部分( EU )。 两部分各自执行自己的功能并行工作,这种工作方式与传统的 计算机在执行指令时的串行工作方式相比极大地提高了工作效率。. 传统的 CPU 采用串行工作方式 :. CPU. 存结果 1. 取指令 2. 取指令 1. 执行 1. 取操作数.

larya
Download Presentation

第二章 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. 第二章 8086系统结构 通过本章学习,应掌握以下内容: • 8086CPU结构 • CPU引脚及其功能 • 存储器组织与堆栈 • 总线周期与操作时序 • 8086系统配置

  2. §2.1 8086CPU结构 一、 8086的功能结构 微处理器 8086从功能上分为两部分:总线接口部分(BIU),执行部分(EU)。 两部分各自执行自己的功能并行工作,这种工作方式与传统的 计算机在执行指令时的串行工作方式相比极大地提高了工作效率。

  3. 传统的CPU采用串行工作方式: CPU 存结果1 取指令2 取指令1 执行1 取操作数 执行2 忙碌 忙碌 忙碌 BUS 忙碌

  4. 8086CPU并行工作方式: 执行1 执行2 EU 执行3 取指令2 取操作数 存结果 取指令3 取操作数 取指令4 BIU BUS 忙碌 忙碌 忙碌 忙碌 忙碌 忙碌

  5. 20位 8086CPU结构图 AH AL 地址加法器 BH BL 16位 通用寄存器 CH CL CS DH DL DS SP SS BP ES I/O控制电路 IP DI 内部寄存器 SI 外总线 运算寄存器 1 2 3 4 5 6 执行部分控制电路 8位 指令队列缓冲器 ALU 标志 执行部件 总线接口部件

  6. 1、总线接口部件(BIU) 功能: (1)从内存取指令送到指令队列。 (2)CPU执行指令时,到指定的位置取操作数,并将其送至要求的位置单元中。 总线接口部件的组成: (1)四个段地址寄存器 CS,16位代码段寄存器; DS,16位数据段寄存器; ES,16位附加段寄存器; SS,16位堆栈段寄存器。

  7. (2)16位指令指针寄存器IP(PC)。 (3)20位的地址加法器。 (4)六字节的指令队列缓冲器。 说明: (1)指令队列缓冲器:在执行指令的同时,将取下一条指令,并放入指令队列缓冲器中。CPU执行完一条指令后,可以执行下一条指令(流水线技术)。提高CPU效率。 (2)地址加法器:产生20位地址。CPU内无论是段地址寄存器还是偏移量都是16位的,通过地址加法器产生20位地址。

  8. 2、执行部件 作用: (1)从指令队列中取出指令。 (2)对指令进行译码,发出相应的控制信号。 (3)接收由总线接口送来的数据或发送数据至接口。 (4)进行算术运算。 执行部件的组成: (1)4个通用寄存器AX、BX、CX、DX。 四个通用寄存器都是16位或作两个8位来使用。 (2)4个专用寄存器

  9. SP------堆栈指针寄存器 BP------基址指针寄存器 DI-------目的变址寄存器 SI------- 源变址寄存器 (3)算术逻辑单元ALU 完成8位或者16位二进制算术和逻辑运算,计算偏移量。 (4)数据暂存寄存器 协助ALU完成运算,暂存参加运算的数据。 (5)执行部件的控制电路 从总线接口的指令队列取出指令操作码,通过译码电路分析,发出相应的控制命令,控制ALU数据流向。

  10. (6)标志寄存器 16位寄存器,其中有7位未用。 1-低8位有偶数个1 0-低8位有奇数个1 D15 D0 OF DF IF TF SF ZF AF PF CF 方向标志 单步中断 符号标志 零标志 半进借位标志 奇偶标志 进借位标志 溢出标志 中断允许 1-结果为0 0-结果不为0 1-有进、借位 0-无进、借位 1-低4位向高4位有进、借位 0-低4位向高4位无进、借位

  11. 例:将5394H与-777FH相加,并说明其标志位的状态。例:将5394H与-777FH相加,并说明其标志位的状态。 【解】先求-777FH的补码: 原码:1111 0111 0111 1111 反码:1000 1000 1000 0000 补码:1000 1000 1000 0001 再做加法运算: 0101 0011 1001 0100 + 1000 1000 1000 0001 1101 1100 0001 0101 结果标志位为:CF=0、PF=0、AF=0 ZF=0、SF=1、OF=0

  12. 3、CPU执行程序的操作过程 (1)20位地址形成,并将从该地址指定的单元中取出指令字节,依次放入指令队列中。 (2)当指令队列中有2个空字节时,总线接口部件就会自动取指令至队列中。 (3)执行部件从指令队列队首取出指令代码,执行该指令。 (4)当队列已满,执行部件又不使用总线时,总线接口部件进入空闲状态。 (5)执行转移指令、调用指令、返回指令时,先清空队列内容,再将要执行的指令放入队列中。

  13. §2.2 8086CPU的引脚及其功能 8086CPU可在两种模式下工作: 最小模式:只有一8086CPU。 最大模式:有两个或两个以上的CPU,一个为主CPU8086,另一个为协CPU8087。 指令周期:执行一条指令所需要的时间。 总线周期(机器周期):CPU通过总线与存储器或I/O接口进行一次数据传输所需的时间。 T状态(时钟周期):CPU处理动作的最小单位。 总线周期 T1 T2 T3 TW T4

  14. 8086 4039383736353433323130292827262524232221 VCC(5V) GND 0102030405060708091011121314151617181920 AD15 AD14 A16/S3 AD13 A17/S4 AD12 A18/S5 AD11 AD10 A19/S6 /BHE/S7 AD9 MN//MX AD8 /RD AD7 HOLD(/RQ//GT0) AD6 AD5 HLDA(/RQ//GT1) /WR(/LOCK) AD4 M//IO(/S2) AD3 DT//R(/S1) AD2 /DEN(/S0) AD1 ALE(QS0) AD0 /INTA(QS1) NMI /TEST INTR READY CLK RESET GND

  15. 一、最小模式下的引脚及功能 • 1、地址/数据总线 • AD15-AD0:地址/数据复用引脚,双向,三态。 • 在T1状态,为16位地址总线A15-A0,输出访问存储器或I/O的地址信息。 • 在T2~T4状态,为16位数据总线D15-D0,与存储器和I/O设备交换数据信息。 • 地址/数据总线复用,分时工作。 2、A19/S6-A16/S3 地址/状态总线复用引脚,输出,三态。

  16. T1状态:输出地址的高4位信息A19-A16 T2、T3、T4状态:输出状态信息 S6:指示当前CPU是否与总线相连,S6=0,表示8086当前与总线相连。 S5:中断允许标志当前的状态。 S5=0,禁止一切可屏蔽中断源的中断请求; S5=1,允许一切可屏蔽中断源的中断申请。

  17. S4、S3:当前正在使用的段寄存器 S4 S3 段寄存器 0 0 当前正在使用ES 0 1 当前正在使用SS 1 0 当前正在使用CS 1 1 当前正在使用DS

  18. 3、控制总线 (1)/BHE/S7:高8位数据总线允许/状态复用引脚。在总线周期的T1状态,此引脚输出/BHE信号,表示高8位数据线D15-D8上的数据有效。 在8086中,S7未定义。 /BHE、A0组合: /BHE A0 总线使用情况 0 0 从偶地址单元开始,在16位数据总线上进行字传送 0 1 从奇地址单元开始,在高8位数据总线上进行字节传送 1 0 从偶地址单元开始,在低8位数据总线上进行字节传送 1 1 无效

  19. (2)/RD:读信号,三态输出,低电平有效。 /RD=0,表示当前CPU正在对存储器或I/O端口进行读操作。 (3)/WR:写信号,三态输出,低电平有效。 /WR=0,表示当前CPU正在对存储器或I/O端口进行写操作。 (4)M//IO:存储器或IO端口访问信号,三态输出。 M//IO=1,表示CPU正在访问存储器; M//IO=0,表示CPU正在访问IO端口。

  20. (5)READY:准备就绪信号,输入,高电平有效。(5)READY:准备就绪信号,输入,高电平有效。 READY=1,表示CPU访问的存储器或IO端口已准备好传送数据。 若CPU在总线周期T3状态检测到READY=0,表示未准备好,CPU自动插入一个或多个等待状态TW,直到READY=1为止。 (6)INTR:可屏蔽中断请求信号,输入。 当INTR=1,表示外设向CPU发出中断请求,CPU在当前指令周期的最后一个T状态去采样该信号,若此时,IF=1,CPU响应中断,执行中断服务程序。

  21. (7)/INTA:中断响应信号,输出,低电平有效。CPU响应中断时发两个负脉冲。第一个负脉冲,表示CPU响应了外设发来的中断申请信号INTR。第二个负脉冲,通知外设向数据总线上放中断类型号。(7)/INTA:中断响应信号,输出,低电平有效。CPU响应中断时发两个负脉冲。第一个负脉冲,表示CPU响应了外设发来的中断申请信号INTR。第二个负脉冲,通知外设向数据总线上放中断类型号。 (8)NMI:不可屏蔽中断请求信号,输入,上升沿触发。该请求信号不受IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后立即响应中断。 (9)/TEST:测试信号,输入,低电平有效。当CPU执行WAIT指令时,每隔个时钟周期对/TEST进行一次测试,若/TEST=1,继续等待,直到/TEST=0。

  22. (10)RESET:复位信号,输入,高电平有效。RESET信号至少要保持4个时钟周期。(10)RESET:复位信号,输入,高电平有效。RESET信号至少要保持4个时钟周期。 复位时:标志寄存器、IP、DS、SS、ES为0,CS=FFFFH,指令队列清空。复位后CPU从FFFF0H处开始 执行。 (11)ALE:地址锁存允许信号,输出,高电平有效。用来锁存地址信号A15-A0,分时使用AD15-AD0地址/数据总线。

  23. (12)DT//R:数据发送/接收控制信号,三态输出。此信号控制数据总线上的收发器8286/8287的数据传送方向。(12)DT//R:数据发送/接收控制信号,三态输出。此信号控制数据总线上的收发器8286/8287的数据传送方向。 DT//R=1,发送数据----写操作; DT//R=0,接收数据----读操作。 (13)/DEN:数据允许信号,三态输出,低电平有效。作为数据总线上收发器8286的选通信号。 (14)HOLD:总线请求信号,输入,高电平有效。当系统中CPU之外的另一个控制器要求使用总线时,通过它向CPU发一高电平的请求信号。

  24. (15)HLDA:总线请求响应信号,输出,高电平有效。当HLDA有效时,表示CPU对其它控制器的总线请求作出响应,与此同时,所有与三总线相接的CPU的线脚呈现高阻抗状态,从而让出总线。(15)HLDA:总线请求响应信号,输出,高电平有效。当HLDA有效时,表示CPU对其它控制器的总线请求作出响应,与此同时,所有与三总线相接的CPU的线脚呈现高阻抗状态,从而让出总线。 (16)MN//MX:工作模式选择信号,输入。 MN//MX=1,表示CPU工作在最小模式系统;MN//MX=0,表示CPU工作在最大模式系统。 (17)CLK:主时钟信号,输入。8086的时钟频率为5MHZ。

  25. 4、电源线和地线 8086/8088采用单+5V,1、20引脚为地线。 二、最大模式下的有关引脚 (1)QS1、QS2:指令队列状态信号,输出。 QS1 QS2 含义 0 0 无操作 0 1 将指令首字节送入指令队列 1 0 队列为空 1 1 将指令其余字节送指令队列

  26. (2)S2、S1、S0:总线周期状态信号,三态输出。(2)S2、S1、S0:总线周期状态信号,三态输出。 S2、S1、S0状态信号的编码 S2 S1 S0 操作过程 产生信号 0 0 0 发中断响应信号 /INTA 0 0 1 读I/O端口 IORC 0 1 0 写I/O端口 IOWC 0 1 1 暂停 无 1 0 0 取指令 /MRDC 1 0 1 读存储器 /MRDC 1 1 0 写存储器 /AMWC 1 1 1 无作用 无

  27. (3)/RQ//GT0、/RQ//GT1:总线请求信号(输入)/总线请求允许信号(输出),双向,低电平有效。(3)/RQ//GT0、/RQ//GT1:总线请求信号(输入)/总线请求允许信号(输出),双向,低电平有效。 (4)/LOCK:总线封锁信号,三态输出,低电平有效。/LOCK=0,CPU不允许其它控制器占用总线。

  28. 例:若8086工作在单CPU方式,试给出在读I/O端口时,M//IO、DT//R、/DEN、/RD、/WR等信号线的状态。例:若8086工作在单CPU方式,试给出在读I/O端口时,M//IO、DT//R、/DEN、/RD、/WR等信号线的状态。

  29. §2.3 存储器的组织和堆栈 1、8086存储器的分体结构 8086系统中,1MB的存储空间分成两个存储体:偶地址存储体和奇地址存储体,各为512KB。它们的访问由/BHE、A0组合决定: /BHE A0 总线使用情况 0 0 从偶地址单元开始,在16位数据总线上进行字传送 0 1 从奇地址单元开始,在高8位数据总线上进行字节传送 1 0 从偶地址单元开始,在低8位数据总线上进行字节传送 1 1 无效

  30. 8086用两个存储体来组织实际存储空间 A0 ~ A19 BHE BHE A0 00001H 00000H 8086 00003H 00002H 地址交叉 排列 …. …. 偶地址 奇地址 FFFFFH FFFFEH D8 ~ D15 D0 ~ D7 D0 ~ D15 • 规划字(对准字)存放 : 偶地址作为字的地址 • 非规划字(非对准字)存放 : 奇地址作为字的地址 • 规则字的读/写只需访问一次存储器;非规则字的读/写需二次访问存储器。第一次访问奇地址,第二次访问偶地址。

  31. 2、存储器编址 在内存里以字节为单位存取信息,系统为每个字节编一个地址(二进制数表示,书写格式为十六进制),称为存储器地址,存储的内容即为数据。 地址 内容 00000H 00000001 2301H(规则字) 00100011 00001H 4523H(非规则字) 01000101 00002H …… FFFFFH 存储器中的数据及表示形式

  32. 字节数01H的地址为00000H、字节23H的地址为00001H、字节45H的地址为00002H。字节数01H的地址为00000H、字节23H的地址为00001H、字节45H的地址为00002H。 • 字2301H的地址为00000H、字4523H的地址为00001H。 • 地址00000H的内容既是01H,又是2301H • 顺序存放,低字节低地址(字数据) 地址 内容 00000H 00000001 01H 2301H 00100011 00001H 4523H 45H 01000101 00002H …… FFFFFH

  33. 3、 存储器的分段结构 由于8086有20条地址线,可以寻址多达220(1M)字节,所以把1M字节的存储器分为任意数量的段,其中每一段最多可达寻址216(64K)字节。 8086CPU把1M字节的存储器空间划分为任意的一些存储段,每个段的起始地址必须能16整除(该地址的最低四位为0000)。 8086可将内存最多可分为64K个段,最少可分为16个段。每个段的最大范围是64KB,最小的段是16B。段与段之间可连续分布,也可重叠。 在所有的段中,8086当前可以访问的段只有4个,它们分别由CS、DS、ES和SS所指定。

  34. (1) 逻辑地址和物理地址 物理地址:也称实际地址,是用唯一的20位二进制数所表示的地址,规定了1M字节存储体中某个具体单元的地址 。如00002H。 逻辑地址在程序中使用,即段地址:偏移地址。 如 2000H:0003H 2000H:0000H 12H 0001H 34H 0002H 56H 0003H 78H

  35. (2)物理地址的形成 物理地址=段基址 * 16(左移4位)+偏移地址。 段基址:CS、DS、ES、SS。 偏移地址:IP、DI、SI、BX、BP、SP等。 物理地址的形成如下:(由20位地址全加器实现) 4位 16位 段寄存器值 0000 16位 + 偏移量 20位 物理地址

  36. 一个存储单元可以有一个或多个逻辑地址,但只能有一个物理地址。一个存储单元可以有一个或多个逻辑地址,但只能有一个物理地址。 • 例如物理地址21000H可以有以下几个逻辑地址: • 2100:0000H 2000:0100H • 段基址由系统自动分配,而偏移地址则由用户编程时提供。 • DATA SEGMENT • X DB 12H • Y DW 34H • DATA ENDS • 则DS段中,Y的地址为0001H,非规则存放。

  37. CS 0000 代码段 IP DS或ES 0000 数据段 SI、DI或BX SS 0000 堆栈段 SP或BP 存储器 段寄存器和偏移地址寄存器组合关系

  38. 4 、堆栈和堆栈操作命令 堆栈主要用于暂存数据和在过程调用或处理中断时暂存断点信息。 (1)堆栈的概念 堆栈是在存储器中开辟的一片数据存储区,这片存储区的一端固定,另一端活动,且只允许数据从活动端进出。采用“先进后出”的规则。 (2)堆栈的组织 堆栈指示器SP,他总是指向堆栈的栈顶。堆栈的伸展方向既可以从高地址向低地址,也可以从低地址向高地址。8086的堆栈的伸展方向是从高地址向低地址。

  39. (3)堆栈的操作 • 建栈:通过对SS和SP的赋值建立。(也可省略) • 如:MOV AX,2000H • MOV SS,AX • MOV SP,0100H • SS:SP • 2000:0000 XX • 2000:0001 XX • 堆栈段 • 2000:00FF • 2000:0100XX 栈底(栈顶)SP=0100H

  40. 进栈操作:PUSH 指令(字操作) • 已知 AX=1234H、BX=5678H,PUSH AX、PUSH BX • 第一次PUSH 操作: 第二次PUSH操作: • 2000:0000 XX 2000:0000 XX • 2000:0001 XX 2000:0001 XX • 2000:00FC XX 2000:00FC 78 SP • 2000:00FD XX 2000:00FD 56 • 2000:00FE 34 SP 2000:00FE 34 • 2000:00FF 12 2000:00FF 12 • 2000:0100 XX (栈底) 2000:0100 XX

  41. 出栈操作:POP 指令(字操作) • 在前面操作的基础上作POP CX操作: • 2000:0000 XX • 2000:0001 XX • 2000:00FC 78 • 2000:00FD 56 • 2000:00FE 34 SP • 2000:00FF 12 • 2000:0100 XX (栈底) 操作后: AX=1234H BX=5678H CX=5678H SP=00FEH SS=2000H

  42. §2.4 总线周期与操作时序 在微机系统中,CPU是在时钟信号CLK控制下,按节拍有序地执行指令序列。从取指令开始,经过分析指令、对操作数寻址,然后执行指令、保存操作结果,这个过程称为指令执行周期。 指令周期:执行一条指令所需要的时间。 总线周期(机器周期):CPU通过总线与存储器或I/O接口进行一次数据传输所需的时间。 T状态(时钟周期):CPU处理动作的最小单位。 总线周期 T1 T2 T3 TW T4

  43. 8086的操作时序分为如下几个总线周期: (1)总线读周期 (2)总线写周期 (3)总线空操作 (4)中断响应周期 (5)总线保持和响应周期 (6)复位操作

  44. 总线操作 • 总线读操作:CPU从存储器或外设读取数据。 • 总线写操作:CPU将数据写入存储器或外设。 • 1、总线读周期 • 总线周期包括:T1、T2、T3、(TW)、T4机器周期。 • (1)T1周期 • M//IO信号:从存储器读还是从I/O设备中读数据; • AD15-AD0、A19/S7-A16/S3:确定20位地址; • /BHE:选择奇地址存储体选择。 • ALE:地址锁存信号,以使地址/数据线分开。

  45. (2)T2状态 • A19/S6-A16/S3:出现S6-S3状态信号。决定段寄存器、IF状态、8086CPU是否连在总线上。 • AD15-AD0:高阻状态。 • /RD:由高电平变为低电平,开始进行读操作。 • /DEN:变低电平,启动收发器8286,做好接收数据的准备。 • (3)T3状态 • 若存储器或I/O端口已做好发送数据准备,则在T3状态期间将数据放到数据总线上,在T3结束时,CPU从AD15-AD0上读取数据。

  46. (4)TW状态 • 在T3状态,存储器或外设没有准备好数据,不能在T3状态将数据放到总线上,使READY=0,则CPU在T3和T4之间插入一个或几个TW状态,直到数据准备好READY=1为止。 • TW状态时总线的动作与T3时相同。 • (5)T4状态 • CPU对数据总线进行采样,读出数据。 • CPU往存储器或I/O设备读数据的时序如下页所示:

  47. T1 T2 T3、TW T4 CLK M//IO A19/S6-A16/S3 A19-A16 /BHE/S7 /BHE S7-S3 ALE READY AD15-AD0 地址输出 数据输入 /RD DT//R /DEN CPU从存储器或I/O端口读取数据的时序

  48. 2、总线写周期 • (1)T1状态 • M//IO信号:对存储器写还是对I/O设备中写数据; • AD15-AD0、A19/S7-A16/S3:确定20位地址; • /BHE:选择奇地址存储体选择。 • ALE:地址锁存信号,以使地址/数据线分开。 • DT//R:为高电平,指示收发器8286发送数据,写操作。 • (2)T2状态 • A19/S6-A16/S3:出现S6-S3状态信号。决定段寄存器、IF状态、8086CPU是否连在总线上。

  49. AD15-AD0:发出16位数据。 • /WR:由高电平变为低电平,开始进行写操作。 • /DEN:变低电平,启动收发器8268,做好发送数据的准备。 • (3)T3状态 • 若存储器或I/O端口已做好接收数据准备,则在T3状态期间将数据放到数据总线上,在T3结束时,CPU将AD15-AD0上数据写入到存储器或I/O设备中。 • (4)TW状态 • 在T3状态,存储器或外设没有准备好接收数据,使READY=0,则CPU在T3和T4之间插入一个或几个TW状态,直到设备准备好READY=1为止。

  50. (5)T4状态 在T4状态,数据从数据总线上被撤除,各种控制信号和状态信号进入无效状态,CPU完成了对存储器或I/O设备的写操作。 3、总线空操作 8086只有在CPU和存储器或外设要传送数据时,才能执行上述的总线周期;当指令队列已满,且EU未申请访问存储器时,不执行总线周期,总线接口进入了总线空闲周期。S6~S3同前一总线周期;若前一周期是读周期,则AD15 ~AD0为高阻态;总前一周期是写周期,则AD15 ~AD0保持数据有效。

More Related