360 likes | 630 Views
第二章 8086 系统结构. 2-1 8086CPU 结构. 2-2 8088/8086 的存储器组织. 2-3 8086 的系统配置及引脚功能. 2-4 8086CPU 时序. 习题: 2-5 ( 1 , 3 , 5 ), 2-7 , 2-9 , 2-10. 2-1 8086CPU 结构. 第二章 8086 系统结构. 属第三代微处理器 运算能力: 数据总线: DB - 16bit ( 8086 ) / 8bit ( 8088 ) 地址总线: AB - 20bit
E N D
第二章 8086系统结构 2-1 8086CPU结构 2-2 8088/8086的存储器组织 2-3 8086的系统配置及引脚功能 2-4 8086CPU时序 习题:2-5(1,3,5),2-7,2-9,2-10
2-1 8086CPU结构 第二章 8086系统结构 属第三代微处理器 运算能力: 数据总线:DB-16bit(8086)/ 8bit(8088) 地址总线:AB-20bit 内存寻址能力220=1MB 一、 8086CPU的内部结构
1.总线接口部件BIU(Bus Interface Unit) 组成:16位段寄存器,指令指针,20位地址加法器,总线控制逻辑,6字节指令队列。 作用:负责从内存指定单元中取出指令,送入指令流队列中排队;取出指令所需的操作数送EU单元去执行。 工作过程:由段寄存器与IP形成20位物理地址送地址总线,由总线控制电路发出存储器“读”信号,按给定的地址从存储器中取出指令,送到指令队列中等待执行。 *当指令队列有2个或2个以上的字节空余时,BIU自动将指令取到指令队列中。若遇到转移指令等,则将指令队列清空,BIU重新取新地址中的指令代码,送入指令队列。 *指令指针IP由BIU自动修改,IP总是指向下一条将要执行指令的地址。
2.指令执行部件EU(Execution Unit) 组成: ALU ,标志寄存器,寄存器组,EU控制系统等。 作用:完成指令的译码和执行指令的工作 工作过程:从队列中取得指令,进行译码若执行指令需要访问存储器或I/O端口,则EU将操作数的偏移地址送给BIU,由BIU取得操作数送给EU。根据指令要求向EU内部各部件发出控制命令,完成执行指令的功能。
3. 8086CPU结构的特点: 减少了CPU为取指令而等待的时间,提高了CPU的运行速度。
二、 8088/8086的寄存器结构 8088/8086有14个16位寄存器 1. 通用寄存器组 2. 指针/变址寄存器 3. 2个控制寄存器 4. 4个段寄存器
1. 通用寄存器组 *各寄存器隐含用法 * 4个16位的数据寄存器 (AX,BX,CX,DX)寄存器既可存放数据,也可存放地址。 * 既可作为16位寄存器也可作为8位寄存器使用。(例:AH,AL) 8bit寄存器只能存放数据。
2. 指针及变址寄存器(SP,BP,SI,DI) * BP,SP寄存器称为指针寄存器,与SS联用。 * DI,SI寄存器称为变址寄存器,与DS联用,在串指令中,SI,DI均为隐含寻址,此时,SI与DS联用, DI与ES联用。
3. 指令指针和状态寄存器 (1) 指令指针I P是一个16位的专用寄存器。当BIU从内存中取出一条指令,自动修改IP,始终指向下一条将要执行的指令在现行代码段中的偏移量。 8086/8088中的某些指令执行后会改变IP的内容,但用户不能编写指令直接改变IP 的内容。 * I P是指令地址在代码段内的偏移量(又称偏移地址),IP要与CS配合构成共同物理地址。 (2) 标志寄存器PSW(FLAGS) PSW 是一个16位的专用寄存器(6位状态位,3位控制位)存放运算结果的特征。
D15 D11 D8 D6 D4 D2 D0 CF(进位标志): 当运算结果的最高位(D7/D15)出现进位(借位)时,CF=1;(STC置位,CLC复位,CMC取反) PF(奇偶校验标志):当运算结果中“1”的个数为偶数时,PF=1; AF(辅助进位标志):当结果的D3向D4(低位字节)出现进位(借位)时,AF=1; ZF (零标志): 当运算结果为零时,ZF=1; SF (符号标志): 当运算结果的最高位D7/D15为1时,SF=1; OF (溢出标志):当运算结果超过机器所能表示的范围时,OF=1; DF(方向标志):在字符串操作时,决定操作数地址调整的方向,DF=1,为递减;(STD, CLD) IF (中断允许标志): IF=1,允许CPU响应外部的可屏蔽中断;(STI,CLI) TF (单步标志):当TF=1,CPU每执行一条指令便自动产生一个内部中断, 在中断服务程序中可检查指令执行情况。
4. 段寄存器 4个16位段寄存器,给出相应逻辑段的首地址,或称为段基址。 * CS(代码段寄存器)指向当前的代码段,指令由此段 取出; *SS (堆栈段寄存器)指向当前的堆栈段,栈操作的对象 是该段存储单元的内容; *DS(数据段寄存器)指向当前的数据段,该段中存放程 序的操作数; *ES (附加段寄存器)指向当前的附加段,主要用于字符 串数据的存放,也可以用于一般数据 的存放。
2-2 8088/8086的存储器组织 一、存储器地址的分段 1.存储器地址的分段 矛盾:存储器地址空间1MB,20bit地址线;内部各寄存器和数据总线均为16bit。 解决方法:将整个存储空间分为若干个逻辑段,每段内地址16bit,即最多地址空间64KB。 允许各逻辑段在整个存储空间浮动,段与段之间可以是连续的,也可以是分开的或重叠的。
00000H 逻辑段1起点 逻辑段1<=64KB 逻辑段2起点 逻辑段2<=64KB 逻辑段3起点 逻辑段3<=64KB 逻辑段4起点 逻辑段4<=64KB FFFFFH 每个段的起始地址必须能被16整除(XXXX0H) 程序执行前,分别对相应的段寄存器CS,DS,SS,ES置“段基值”,若程序长度大于64KB,则可通过对CS送新的“段基值”将程序转移到新段中。
段地址0000 段内有效地址 + 物理地址(20bit) 16bit 16bit 20bit 2. 20位物理地址的形成 逻辑地址:允许在程序中编排的地址; 物理地址:信息在存储器中实际存放的地址;00000~FFFFFH 对给定的任一存储单元,有两部分逻辑地址: 段基址(段地址)——由CS,DS,SS,ES决定 偏移地址(段内有效地址)——从段地址开始的相对偏移 位置 物理地址=段基址*16+偏移地址
操作类型 隐含段地址 替换段地址 偏移地址 取指令 CS 无 IP 堆栈操作 SS 无 SP BP间址 SS CS、DS、ES EA 存/取操作数 DS CS、SS、ES EA 源字符串 DS CS、SS、ES SI 目的字符串 ES 无 DI 3. 逻辑地址的来源; EA---有效地址,
二、8086存储器的分体结构 在8088CPU系统中,外部数据总线为8位,在存储器地址空间中数据存储格式以字节(8bit)为单位组织存储的,CPU访问一次存储器,只读写一个字节,读写一个字要两次访问存储器。 而8086CPU的数据总线为16位,CPU除了可以对一个字节寻址外,还必须能进行一个字的读写。即:如何组织数据存储格式使CPU访问一次存储器,获得一个字的数据。
D15 D8 D7 D0 00001 00000 00003 00002 00005 00004 512K*8bit A0=1 512K*8bit A0 =0 FFFFF FFFFE (3)用地址线A0和BHE信号选择存储体 硬件条件: (1)将1M的存储空间分成两个存储体:偶地址和奇地址存储体 (2)将数据总线的低8位与偶地址存储体数据线相连,数据总线的高8位与奇地址存储体数据线相连。
A1—A19 地址 锁存 器 8086 A0—A19 偶 存储 体 奇 存储 体 A0 D8—D15 D0—D7 BHE A0 操作 总线使用情况 0 0 从偶地址开始读/写一个字 AD15--AD0 0 1 从奇地址开始读/写一个字节 AD15--AD8 1 0 从偶地址开始读/写一个字节 AD7--AD0 1 1 无效 BHE BHE
1422DH 1422EH L(低8bit) 字节地址 字节地址 H(高8bit) 1422FH 字(16bit)数据地址1422EH 低位在低地址,高位在高地址 14230H 数据存放格式: 存储器二个连续字节组成一个字,一个字中的每一个字节都有各自的字节地址。存入时以低位字节在低地址,高位字节在高地址的次序存放,字单元的地址以低位地址表示。若要求8086在一个总线周期访问一个整字(16位)时,则该字的地址为偶地址(“对准存放”)。如果则该字的地址为奇地址(“未对准存放”),则8086要用两个连续的总线周期访问一个整字,每个周期访问一个字节。
三、堆栈的概念 堆栈是利用RAM区中某一指定区域(由用户规定),用来暂时保存数据或地址的存储区。堆栈段是由段定义语句在内存中定义的一个段,段基址由SS指定。堆栈的地址增长方式是由高向低增长。 堆栈的工作方式是“先进后出”,存取数据的方法是压入(PUSH)和弹出(POP)。 堆栈区的栈底是固定的最高地址,其栈顶根据堆栈数据的压入或取出的变化不断改变。栈顶是堆栈区的最低地址,用堆栈指针SP指示。堆栈以字为单位进行操作。 每执行一条PUSH指令, SP=SP-2,向堆栈压入16bit数据。( SP)=低字节;( SP+1)=高字节 每执行一条POP指令,从堆栈弹出16bit数据, SP=SP+2。
(AX)=9536H (BX)=0475H 36H 95H (AX)=0475H (BX)=9536H 00FAH 00FBH 00FCH 00FDH 00FEH 00FFH 0100H 4、(00FCH)→ AL (00FDH)→AH (SP)+2→SP (SP)=00FEH 2、 (SP)-2→SP (AH)→00FFH (AL)→00FEH (SP)=00FEH 3、 (SP)-2→SP (BH)→00FDH (BL)→00FCH (SP)=00FCH 75H 04H 75H 36H 04H 95H 5、 (00FEH) →BL (00FFH) →BH (SP)+2→SP (SP)=0100H 1、设栈底 (SP)=0100H 例:执行入栈和出栈的过程 1、MOV SP,0100H 2、PUSH AX 3、PUSH BX 4、POP AX 5、POP BX
一、 最小模式系统(MN/ MX引脚接+5V电源) 2-3 8086的系统配置及引脚功能 8086CPU是16位处理器,采用40引脚的DIP封装。40条引脚信号按功能可分为4部分:地址总线,数据总线,控制总线以及其他(时钟、电源,地线)。 特点:系统中存储器芯片,I/O芯片不多; 地址总线由AD0~AD15,A16/ S3 ~A19/ S6通过8282锁存器构成; 数据总线直接由AD0~AD15构成(也可加总线驱动8286); 控制总线由CPU的控制线提供,构成一小型、单处理机系统。
Vcc A -A 16 19 Vcc MN/MX RD WR CLK 8284 IO/M READY INTA 时钟 发生器 RESET INTR 地址总线 ALE STB 8086 CPU 8282 OE AD -AD 0 15 存储器 I/O接口 在最小模式系统中,还需加入: 1片8284A 3片8282/8283 2片8286/ 8287 BHE BHE 数据总线 DT/R T 8286 DEN OE 8086最小组态系统配置图
二、 最大模式(组态)系统(MN/ MX引脚接地) 8086最大组态系统配置图 系统控制信号由总线控制器8288提供, 用于多处理机和协处理机结构中。 8288为总线控制器,输入8086的总线状态信号,输出总线命令和控制信号。 8289为总线裁决器,用于裁决哪个处理器拥有对总线的使用权。
状态线S2、S1、S0的编码 性能 S2 S1 S0 0 0 0 中断响应 I/O 0 0 1 读 端口 I/O 0 1 0 写 端口 H alt 0 1 1 暂停 1 0 0 取指 1 0 1 读存储器 1 1 0 写存储器 1 1 1 无源
* 8088的指令队列长度为4个字节,队列中出现1个空闲字节时,BIU自动访问存储器取指令补充指令队列; *8088的地址/数据复用线为8条,即AD7~AD0,访问1个字需两个读写周期; * 8088 中的存储器/IO控制线为 IO /M ,与8086相反; * 8086的引脚BHE/S7在8088中为SS0 ,与DT/ R、IO/M一起决定最小模式中的总线周期操作。 三、 8088CPU与8086的不同之处
2-4 8086CPU时序 一. 指令周期、总线周期、时钟周期 指令周期(Instruction Cycle): 执行一条指令所需要的时间。 (一个指令周期由一个或若干个总线周期组成) 总线周期(Bus Cycle ): CPU完成对存储器或I/O端口一次访问所需的时间; 时钟周期(Clock Cycle):时钟频率的倒数,是CPU的时间基准(T状态);(若8086的主频为5MHZ,一个时钟周期为200ns)
T4 T1 T2 T3 Tw Tw T4 T1 T2 总线周期 一个总线周期至少由四个T状态(T1~T4)组成。 T1:输出地址;T2、T3:传送数据。若存储器或外设速度慢,可插入等待周期Tw 若一个总线周期后不执行下一个总线周期,即总线上无数据传输操作,系统总线处于空闲状态,此时执行空闲周期。
二. 几种基本时序 1. 读总线周期 地址A19---A0 M / IO :在整个读周期有效, 0=I/O读,1=M读; ALE:T1状态出现正脉冲, 下降沿锁存地址信息; RD: 在T2-T3状态有效; DT/ R:在整个总线周期为低 电平,表示读周期; DEN:在T2-T3期间为低电 平,表示数据有效。 存储器读时序
存储器读时序说明 1、T1开始(T1下降沿) M/ IO=1,存储器操作 20位地址信号输出,BHE信号有效 ALE=1, DT/R=0允许CPU读入 3、T2开始 RD=0,存储器开始读 DEN=0,DB上允许数据有效 4、T4开始 DB上数据稳定。RD、DEN恢复为1,CPU获得数据 5、T4结束 DT/R=1,存储器读周期结束 2、T1上升沿 ALE=0锁存地址信号A19~A0,
具有等待状态的存储器读时序 8086在T3状态的的前沿采样READY线,若发现其为低,则在T3周期结束后,插入一个Tw状态。以后在每个Tw周期的前沿采样READY线,只有在发现它为高电平时,才在这个Tw结束后进入T4周期。 具有等待状态的存储器读时序
WR:在T2~T4期间WR有效; DT/R:在整个总线周期内为高,表示写周期,在接有数据收发器的系统中,用来控制数据传输方向。 2. 存储器写周期 存储器写时序与存储器读时序相似,其不同点在于: AD15 ~ AD0:在T2~T4期间CPU送上欲输出的数据,而无高阻态; 存储器写时序
存储器写时序说明 1、T1开始 M/ IO=1,存储器操作 20位地址信号输出,BHE信号有效 ALE=1, DT/R=1,CPU输出 3、T2开始 WR=0,存储器开始写 DEN=0,DB上允许数据有效 4、T4开始 数据已写至存储器 WR、DEN恢复为1 2、T1上升沿 ALE=0锁存地址信号A19~A0 5、T4结束 写周期结束
复位时序 3. 系统复位 系统复位,各寄存器的状态: 当8086在RESET引线上检测到一个脉冲的正沿时,停止正在进行的所有操作,处于初始化状态,直到RESET信号变低。