440 likes | 625 Views
第二章 8086 系统结构. 8086CPU 结构 8086 引脚 8086 存储器 8086 系统配置. 本章学习要点. 寄存器用途 存储器分段 系统配置 时序. 2 、单总线、累加器结构。“单总线”指微处理器内部总线。. 8086CPU 结构. 16 位微处理器结构的特点:. 1 、引脚功能复用。如数据线双向,通过“读 / 写”控制实现数据的“读”或“ 写”。.
E N D
第二章 8086系统结构 8086CPU结构 8086引脚 8086存储器 8086系统配置
本章学习要点 • 寄存器用途 • 存储器分段 • 系统配置 • 时序
2、单总线、累加器结构。“单总线”指微处理器内部总线。 8086CPU结构 16位微处理器结构的特点: 1、引脚功能复用。如数据线双向,通过“读/写”控制实现数据的“读”或“ 写”。 3、可控三态电路。微处理器的外部总线,即微型计算机的局部三总线允许同时连接多个部件(如存储器、I/O接口等);这些部件都以可控三态电路与三总线连接,不工作时该三态电路处于高阻状态。 4、总线分时复用。
地址总线(20位) 通用寄存器 AX AH BH CH DH CL DL AL BL BX ∑ 数据总线 CX (16位) DX SP CS BP DS DI SS SI ES IP ALU数据总线 总线 控制 电路 8086总线 内部寄存器 (16位) (16位) 暂存器 队列 总线 (8位) EU 控制器 指令队列 1 2 3 4 ALU 标志寄存器 执行单元EU 总线接口单元BIU 8086CPU内部结构
8086CPU结构 • 8086CPU的内部结构由两部分组成:总线接口部件BIU、执行部件EU • BIU:是CPU与内存和I/O接口的信息传送;完成由16bit段地址和16bit偏移地址形成20bit物理地址、总线控制逻辑、完成CPU与内存和I/O接口的信息传送、从内存取指令代码后组成指令队列。负责取指令;存、取操作数。 • EU:负责分析指令、执行指令;进行算逻运算、偏移地址计算、向BIU提供指令执行结果的数据和偏移地址。
8086CPU寄存器结构 寄存器是CPU内部的存储单元,可直接参与CPU的运算(ALU运算和地址运算),其速度比内部存储器快。 • 通用寄存器 • 指针和变址寄存器 • 段寄存器 • 指令指针 • 标志寄存器
累加器 AH AL AX 基址寄存器 BH BL BX 计数寄存器 CX CH CL 数据寄存器 DX DH DL 通用寄存器 八个通用寄存器/四个数据寄存器 存放8位数据、16位数据或地址。
SP (堆栈指针) BP、SP用于访问堆栈段的内存。 BP (基址指针) SI (源变址) SI、DI用于访问数据/附加段的内存。 DI (目的变址) 指针/变址寄存器 SP在堆栈操作中指示栈顶的地址。 BP是堆栈段操作数的地址或变址寻址的基址。 SI、DI在串操作中分别作为数据/附加段的源地址或目的地址的指针。 这四个寄存器只能按16位操作
CS (代码段) DS (数据段) SS (堆栈段) ES (附加段) 段寄存器 存放每一段的起始地址 程序存放的区域, CS×16+IP—取指 数据存放的区域,DS×16+SP,BP,SI 堆栈操作存放的区域, SS×16+SP—堆栈 串操作数据存放的区域, ES×16+BP,DI 8086/8088有20位地址线,寻址能力为1MB。 8086/8088内部寄存器为16位,只能存放16位地址,16位地址的寻址能力为64KB。 由段地址(16位)和段内偏移地址(16位)组合成20位数据在内存的物理地址。
指令指针寄存器 指令指针寄存器 IP,存放下一条指令在代码段的段内偏移地址。程序运行中,CPU自动修改IP的内容。 有效地址16*CS+IP
OF DF IF TF SF ZF AF PF CF Carry进位/借位标志:加减运算时最高位进位/借位,CF=1。 标志位寄存器 标志寄存器PSW,存放运算结果的特征 6位状态位,3位控制位 Parity奇偶标志:运算结果中有偶数个“1”,PF=1。 Auxiliary 辅助进位标志:运算后低4位向高位有进位AF=1。 Zero零标志:运算后各位全’0’,ZF=1。 Sign符号标志:运算后最高位为’1’,SF=1。 Overflow溢出标志:加减运算后的结果超出符号数表示范围,OF=1。
标志位寄存器 Interrupt enable中断允许标志:已设置为CPU允许接受外部中断请求,IF=1。 Direction方向标志:已设置为串操作指令为自动减1变址,DF=1。 Trap 单步标志:调试程序时已设置为单步操作。
8086系统中逻辑地址组合 EA(Effective Address)为有效地址,反映操作数的段内偏移地址。
8086CPU的工作模式 8086/8088CPU有最小工作模式和最大工作模式之分。 最小工作模式:用于单机系统,系统控制信号全部由8086直接提供。 最大工作模式:用于多机系统,系统控制信号由另设的总线控制器8288提供。
8086CPU引脚功能 8086的40条引脚信号按功能可分为4部分: 地址总线、数据总线、控制总线以及其它(时钟与电源)。 由于受当时工艺的限制,部分管脚采用了分时复用的方式。
最小模式下的引脚说明 AD15~AD0 (Address Data Bus): 地址/数据复用信号,双向,三态。在每个总线第一周期,AD15~AD0上为地址信号的低16位A15~A0;数据周期,AD15~AD0 上是数据信号D15~D0。 A16 / S3~A19 / S6 地址/状态复用信号,三态, 输出 在每个总线第一周期时,作地址总线的高4位(A19~A16);其余是状态信号。 8086访问存储器,用20条地址线;访问I/O ,用16条地址线,这4位置“0”。
S4 S3 当前正在使用的段寄存器 0 0 ES 0 1 SS 1 0 CS或未使用任何段寄存器 1 1 DS S6:为低电平 S5指示中断允许IF状态
/S7(Bus High Enable/Status): 数据总线高8位使能和状态复用信号,输出 在总线第一周期, 有效,表示数据线上高8位数据有效。该信号与A0(地址信号最低位)结合,以决定数据字是高字节工作还是低字节工作。其它周期是 输出状态信息S7。S7在8086中未定义。
同工作方式有关的控制信号 MN/ 最小/最大方式控制线,用来控制8086的工作方式。接+5V时,8086处于最小方式;接地时,8086处于最大方式,构成一个多处理器或协处理器系统。
脚 最大 最小 脚 最大 最小 28 S2 IO/M 27 S1 DT/R 26 S0 DEN 30 RQ/GT0 HOLD 24 QS1 INTA 31 RQ/GT1 HLDA 25 QS0 ALE 29 LOCK WR 受工作模式影响的8个引脚
总线周期状态信号:三态、输出 、 、 译码表
数据发送/接收信号:输出、三态 =H ,CPU是进行写操作; =L读操作 数据允许信号:输出、三态,用作系统中总线收发器的允许控制信号。 在最小方式下是: 、 和 存储器/IO控制信号:输出、三态 =H,访问存储器; =L访问I/O端口。
和 请求/允许总线访问控制信号:双向,前优先级高 在最小方式下,是HOLD和HLDA。HOLD为保持请求信号:输入; HLDA为保持响应信号:输出。
在最小方式下是ALE和 。 ALE是地址锁存允许信号:输出; 是中断响应信号:输出、三态。 QS1,QS0:指令队列状态信号:输出
总线优先权锁定信号:输出、三态 用来封锁外部处理器的总线请求,输出低电平时,外部处理器不能控制总线;靠LOCK指令在程序中设置。 在最小方式下,是 信号,输出、三态。
读控制信号:三态、输出 READY准备就绪信号:输入。当被访问的部件无法在8086CPU规定的时间内完成数据传送时,该部件向8086CPU发出READY=L,使8086处于等待状态,插入一个或几个等待周期TW;当被访问的部件可以完成数据传输时,被访问的部件将使READY=H(高电平),8086CPU继续运行。 不受工作模式影响的控制引脚
INTR中断请求信号:输入 NMI:不可屏蔽中断请求信号:输入 :等待测试控制信号:输入 RESET:复位信号:输入。 复位后标志寄存器PSW、段寄存器、指令指针IP以及指令队列清零,代码段寄存器CS为FFFFH。 CLK:时钟信号,输入 VCC:电源 5V(5%) VSS: 地
段地址 0000 段内偏移 (有效)地址 0000 物理地址(20bit) 16bit 16bit 20bit 8086存储器组织 一、存储器地址的分段和物理地址形成 存储器地址空间1MB,20bit地址线;ALU的运算能力16bit。 将整个存储器分为若干个逻辑段,每段内地址16bit,即最多地址空间64KB。
二、存储器逻辑地址 存储器的物理地址是20位二进制数,无法用十六进制寄存器存放。 可以用二个无符号十六进制数按特定方式运算后得到20位物理地址。这二个十六进制数分别是段地址和偏移地址。 存储器的任一个物理地址(绝对地址)由段地址和偏移地址(或称段内有效地址EA)组成。 物理地址=段基址×16+偏移地址
IP CS SI、DI、BX DS SP、BP SS 内存 代码段 数据段 堆栈段
操作类型 隐含段地址 替换段地址 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP BP间址 SS CS、DS、ES 有效地址EA 存取变量 DS CS、DS、ES 有效地址EA 源字符串 DS CS、DS、ES SI 目标字符串 ES 无 DI 逻辑地址的来源
1422DH 1422EH L(低8bit) 字节地址 字节地址 H(高8bit) 1422FH 字(16bit)数据地址1422EH。低位低地址,高位高地址 14230H 内存 三、字节地址和字地址 内存以字节为单位,字节数据(8位)地址就是字节地址。 字数据为16位,需二个字节存储。低8位存放在低地址,高8位存放在高地址;字地址为低字节地址。原则上字地址使用偶地址。
SP=(SP)-2。 每执行一条PUSH指令,向堆栈压入16bit数据, 每执行一条POP指令,从堆栈弹出16bit数据, SP=(SP)+2。 四、堆栈的概念 堆栈是利用RAM区中某一指定区域(由用户规定),用来暂存数据或地址的存储区。 堆栈存取数据的原则是“ 先进后出”,存取数据的方法是压入(PUSH)和弹出(POP)等。 堆栈区的栈底是固定的最高地址,其栈顶根据堆栈数据的压入或取出的变化不断改变。栈顶是堆栈区的最低地址,用堆栈指针SP表示。
(AX)=9536H (BX)=0475H 4、(00FCH)→ AL (00FDH)→AH (SP)+2→SP (SP)=00FEH (AX)=0475H (BX)=9536H 00FAH 00H 00FBH 00H 3、(BH)→00FDH (BL)→00FCH (SP)-2→SP (SP)=00FCH 00FCH 00FCH 00FCH 00H 75H 75H 00FDH 04H 00H 04H 00FEH 00FEH 00FEH 00FEH 00FEH 36H 36H 00H 5、 (00FEH) →BL (00FFH) →BH (SP)+2→SP (SP)=0100H 00FFH 00H 95H 95H 2、(AH)→00FFH (AL)→00FEH (SP)-2→SP (SP)=00FEH 0100H 0100H 0100H 00H 00H 1、设栈底 (SP)=0100H 例:执行压栈和出栈的过程 1、MOV SP,0100H 2、PUSH AX 3、PUSH BX 4、POP AX 5、POP BX
Vcc Vcc MN/MX RD WR CLK IO/M 8284 READY INTA RES RESET INTR 地址总线 20位 ALE 8086 STB A16-A19 CPU 8282*3 AD0-AD15 OE 存储器 I/O接口 16位 DT/R T 8286 DEN 数据总线 OE 8086最小系统配置
指令周期(Instruction Cycle): 执行一条指令所需要的时间。 (一个指令周期由一个或若干个总线周期组成) 总线周期(Bus Cycle ): CPU从存储器或I/O端口存取一个字节的时间, 即完成一个基本动作所需的时间。 时钟周期(Clock Cycle): 时钟频率的倒数,是CPU的时间基准(T状态) (8086的主频为5MHZ,一个时钟周期为200ns) 8086CPU时序 指令周期、总线周期和时钟周期
T4 T1 T2 T3 Tw Tw T4 T1 T2 总线周期 一个总线周期一般由四个T组成。 T1:输出地址;T2、T3:传送数据。若存储器或外设速度慢,可插入等待周期Tw。 若一个总线周期后不执行下一个总线周期,即总线上无数据传输操作,系统总线处于空闲状态,此时执行空闲周期。
T1 T2 T3 T4 CLK 0=IO M / IO 1=M 1、T1开始(T1下降沿) M/IO=0,I/0端口操作 M/IO=1,存储器操作 ALE=1,地址锁存 DT/R=0,CPU读入 A19/S6- S6-S3 A19-A16 A16/S3 AD15-AD0 A15-A0 DATA IN ALE RD DT/R DEN 存储器读时序 读总线周期时序 读总线:CPU通过总线从存储器或I/O端口读取数据 2、T1上升沿 A19~A0稳定,ALE锁存
3、T2开始 RD=0,存储器开始读 DEN=0,DB上允许数据有效 T1 T2 T3 T4 CLK 0=IO M / IO 1=M A19/S6- S6-S3 A19-A16 A16/S3 AD15-AD0 A15-A0 DATA IN ALE 4、T4开始 DB上数据稳定。RD、DEN恢复为1,CPU获得数据 RD DT/R DEN 读总线周期时序 5、T4结束 DT/R=1,存储器读周期结束
1、T1开始 M / IO=0, I/0端口操作 M / IO=1, 存储器操作 ALE=1,地址锁存 DT/R=1,CPU写出 T1 T2 T3 T4 CLK 0=IO M/IO 1=M A19/S6- S6-S3 A19-A16 A16/S3 AD15-AD0 DATA OUT A15-A0 ALE WR DT/R DEN 写总线周期时序 写总线周期 写总线:CPU通过总线将数据写至存储器或I/O端口。 2、T1上升沿 A19~A0稳定,ALE锁存
3、T2开始 WR=0,存储器开始写 DEN=0,DB上允许数据有效 T1 T2 T3 T4 CLK 0=IO M/IO 1=M 4、T4开始 数据已写至存储器 WR、DEN恢复为1 A19/S6- S6-S3 A19-A16 A16/S3 AD15-AD0 DATA OUT A15-A0 ALE WR DT/R DEN 写总线周期时序 5、T4结束 写周期结束
T1或T4 CLK 当外设需要DMA时,通过DMA控制器向CPU发出总线请求 HOLD HOLD=1信号。CPU在CLK的上升沿检测到HOLD后进入总线 HLDA 保持周期。CPU交出总线(悬空)给DMA控制器使用,HOLA=1 总线请求和总线响应时序 响应。 当DMA结束,HOLD=0撤销。 CPU在CLK的上升沿检测到 HOLD后退出总线保持周期。收回总线,HLDA=0。 总线保持周期 直接传送DMA是一种CPU与I/O端口数据传送的方式。
T1 T2 T3 T4 T1 T2 T3 T4 CLK ALE INTA 中断类型 AD15-AD0 中断响应周期时序 在每一个中断响应周期,都给出中断响应信号INTA,第一个响应周期,使AD15~AD0浮空;第二个响应周期,被响应的外设应将中断类型号送到数据线上,CPU从数据线读入中断类型。 中断响应周期 中断是另一种CPU与I/O端口数据传送的方式。 中断请求信号有效,且CPU开中断,则CPU在执行完当前指令后,响应中断。在响应中断时,CPU执行两个中断响应周期。
第二章练习 • 5,10,11,12,15