《微处理器及其体系结构060927讲解》由会员分享,可在线阅读,更多相关《微处理器及其体系结构060927讲解(80页珍藏版)》请在金锄头文库上搜索。
1、微机原理及应用,主讲教师 陈 玮,第二章 8086/8088微处理器及其体系结构,一、8086/8088CPU的编程结构 二、8086/8088的存储器组织 三、8086/8088的I/0组织 四、8086/8088CPU的引脚功能和工作方式 五、8086/8088的操作及其时序 作业,一、8086/8088CPU的编程结构,1、8086/8088CPU的内部结构 2、8086/8088CPU的寄存器结构,二、8086/8088的存储器组织,1、存储器组织 2、存储器的分段和物理地址的形成,三、8086/8088的I/0组织,由于I/O设备的工作速度远远低于CPU,所以I/O设备不能直接和CP
2、U总线相连,必须通过I/O接口芯片。 每个I/O接口芯片都有一个或几个端口,一个端口对应一个I/O地址,就象存储单元地址一样。 8086/8088设有输入指令IN和输出指令OUT用于访问I/O端口。,四、8086/8088CPU的引脚功能和工作方式,8086/8088CPU是采用40条引脚DIP(双列直插式)封装。 1、8086/8088CPU两种工作方式 2 、两种工作方式的公用引脚 3、最小工作方式引脚 4、最大工作方式引脚,CPU工作方式,1、最小工作方式 系统中只有一个微处理器8088(或8086),所有的总线控制信号都直接由8088(或8086)产生,这种方式适合较小规模的应用。 2
3、、最大工作方式 系统中可以只有一个处理器,也可以有两个或以上的微处理器,其中一个作为主处理器,其他作为后援处理器,用来协助主处理器处理某些方面的工作,这种方式是在需要8088构成中等或较大系统。,五、8086/8088的操作及其时序,1、时钟周期(Clock Cycle) 8086/8088CPU的所有操作均是在时钟脉冲CLK的统一控制下进行的。由外部的一片8284A芯片提供; 若时钟频率为5MHz(也称主频),则时钟周期或一个T状态是200ns。 2、指令周期 执行一条CPU指令所需的时间,称为一个指令周期。 一个指令周期是由若干个总线周期组成。,五、8086/8088的操作及其时序,3、总
4、线周期(Bus Cycle) CPU执行指令过程中,执行访问存储器或I/O端口的操作都统一交给BIU的外部总线完成,进行一次访问(存取一个字节)所需的时间称为一个总线周期(分“读”和“写”) 。 一个基本的总线周期有四个T状态组成。 在第一个T状态( T1 )CPU发送20位地址,并产生地址锁存信号,把地址装入地址锁存器;,五、8086/8088的操作及其时序,在第二个T状态( T2 ),CPU从数据/地址总线上撤销地址,并将总线低16位输出设置成高阻,为读入数据作准备;或在低16位总线上送出写数据,准备进行写操作。 在数据/地址总线的高4位,输出总线周期状态( S6S3 ),这些状态信息主要
5、用于诊断监视。,3、总线周期(Bus Cycle),五、8086/8088的操作及其时序,在T3状态,CPU高4位继续提供状态信息;在低16位地址/数据线上,或者连续发出写数据,或者采样读入数据。 如果被选中的存储器或 I/O不能以CPU的最大传送速率传送数据,则该设备必须通知CPU“未准备好”,迫使CPU在T3状态后插入等待状态TW。 CPU在T3的上升沿采样READY信号,是低电平,就插入等待状态TW 。,3、总线周期(Bus Cycle),五、8086/8088的操作及其时序,当选中的设备完成它的读写操作时,它就发出“准备就绪(READY)”信号,迫使CPU脱离TW状态并继续工作。 如果
6、执行的总线周期是读周期,CPU则在最后一个等待状态的结束读取数据。 总线周期在T4状态结束,选中的设备在逻辑上与总线脱离。,3、总线周期(Bus Cycle),五、8086/8088的操作及其时序,4、CPU时序 一个微机系统要完成各种任务,需要执行许多操作,这些操作也是在时钟周期的同步下,按时序一个状态一个状态地执行,这样,就构成了CPU的操作时序。 系统复位和启动操作;总线操作;中断操作;暂停操作;总线保持或总线请求/允许操作。 最小方式下的读总线周期 最小方式下的写总线周期,最小方式下的读总线周期,最小方式下的写总线周期,1、8086/8088CPU的内部结构,8位微处理器执行一段程序是
7、通过重复执行以下步骤来完成的。 从内存中取出一条指令,分析指令操作码; 读出一个操作数(如果指令需要操作数); 执行指令; 将结果写入内存储器(如果指令需要)。 微处理器在取指令、取操作数和存储操作数时要占用总线; 分析操作码和执行指令时不占用总线。(图示),1、8086/8088CPU的内部结构(2),8086/8088CPU内部结构基本相同,有20条外部地址总线,可以寻址1M内存空间; 8086CPU的内部和外部数据总线均是16位,是典型的16位微处理器; 8088CPU内部数据总线是16位,外部数据总线是8位,所以被称为准16位微处理器。,1、8086/8088CPU的内部结构,8086
8、/8088CPU设计成两个独立的功能部件: (1)执行部件EU; (2)总线接口部件BIU。 EU和BIU能相互独立地工作,能使大部分的取指令和执行指令重叠进行。 EU执行的是BIU在前一时刻取出的指令; 同时,BIU又再取出EU在下一时刻要执行的指令。(图示) 8086/8088CPU的内部结构简图,执行部件(Execution UnitEU),作用:执行指令,与外界的联系必须通过总线接口部件。 EU负责从BIU(总线接口部件)的指令队列中取指令,并对指令译码; 根据指令要求,向EU内部各部件发出控制命令以完成各条指令的功能。 说明:对8086/8088来说,EU完全一样,执行部件(Exec
9、ution UnitEU),EU主要完成两种类型的操作: 算术运算和逻辑运算(由算术逻辑单元ALU完成); 按指令的寻址方式计算出16位的偏移地址,并将它送到BIU(总线接口部件)中,形成20位的实际地址。 当EU执行完一条指令,就再到BIU的指令队列前部取出BIU预先读入的指令代码。 若指令队列是空的,则EU处于等待状态;一旦指令队列中有一条指令,EU立即取出执行。,总线接口部件(Bus Interface UnitBIU),作用:根据EU的请求,完成CPU与存储器、CPU与I/O之间的信息传送。 取指令时,从存储器指定地址取出指令送入指令队列排队; 执行指令时,根据EU命令对指定存储单元或
10、I/O端口存取数据。 说明:对8086/8088来说,BIU有差别: 8088外部数据总线是8位,指令队列是4个字节; 8086的外部数据总线是16位,指令队列是6个字节。,总线接口部件(Bus Interface UnitBIU),BIU指令队列中,若出现一个空字节(8086是两个空字节),而且EU(执行部件)没有命令BIU对存储器或I/O端口进行访问,则BIU自动执行总线操作,读出指令并填入指令队列中,直至满为止(8088是4个字节,8086是6个字节)。 当EU(执行部件)执行完转移、调用和返回指令时,BIU将清除原队列中的内容,从新地址重新开始取指令,新取的第一条指令将直接送到EU去执
11、行,随后取来的指令填入指令队列。 当指令队列已填满指令,而又没有访问存储器或I/O端口的命令,BIU进入空闲状态。,8088微处理器的内部结构框图,通用寄存器组,暂存寄存器,标志寄存器,EU 控制器,段寄存器组 指令指针IP,内部寄存器,指令队列,总线 控制电路,BIU(总线接口部件),ALU数据总线(16位),地址总线(20位),数据总线(16位),(执行部件)EU,(8位),8086/8088,总线,EU与BIU之间的通讯,16位的ALU数据总线和8位的指令队列总线用于EU内部和EU与BIU之间的通讯。 16位CPU内部工作过程简述如下: 1)EU部件从BIU部件的指令队列前部取出指令(指
12、令代码和数据),然后对指令进行译码,并执行指令规定的操作; 2)在执行指令的过程中,如果指令要求访问存储器或I/O端口,那么,EU(执行部件)就会请求BIU(总线接口部件),进入总线周期,完成要求的操作。,ALUArithmetic and Logic Unit ALU算术逻辑单元;,取指令和执行指令示意图(1),8位CPU(如8080),取指令和执行指令示意图(2),8位CPU(如8080),16位CPU(8086/8088),8086/8088的寄存器结构,8086/8088CPU内部具有13个16位寄存器和1个16位但只用了9位的标志寄存器: 1)通用寄存器组(8个); 2)段寄存器组(
13、4个); 3)控制寄存器组(2个)。,图示,通用寄存器组,共有8个16位的通用寄存器: 数据寄存器 地址指针寄存器和变址寄存器,数据寄存器,AX、BX、CX、DX,用于存放16位的数据和地址。 可以拆分成AH、AL、BH、BL、CH、CL、DH、DL,用来存放8位数据,可以独立寻址,独立使用。 隐含使用:AX作为累加器; BX作为基址寄存器; CX作为计数寄存器; DX在乘除运算中做辅助累加器。,地址指针寄存器和变址寄存器,SP、BP、SI、DI,都是16位寄存器,可以存放数据,通常用来存放逻辑地址的偏移量,是形成20位物理地址的其中一部分。,地址指针寄存器和变址寄存器,SP堆栈指针,是栈顶的
14、偏移量; BP基址指针,用于存放位于堆栈段中的一个数据区基址的偏移地址; SI源变址寄存器,存放源操作数地址的偏移量; DI目的变址寄存器,存放目的操作数地址的偏移量。 SP、BP的段基址由寄存器SS提供,SI、DI其段基址由寄存器DS提供。,段寄存器组(Segment register),8086/8088CPU把可以直接寻址的1M字节的内存空间,分成称为“段”的逻辑区域,每个“段”的物理长度为64K(216),而段的起始地址由4个“段寄存器”决定。 CS代码段寄存器,指向当前的代码段,指令由此段中取出; DS数据段寄存器,指向当前的数据段; SS堆栈段寄存器,存放当前的堆栈段的段基址; E
15、S附加段寄存器,存放附加数据段的段基址,在进行字符串操作时,作为目的地址使用。,控制寄存器组,指令指针IP 标志寄存器,指令指针(Instruction PointerIP),指令指针IP是一个16位寄存器,总是存放着下一次要取出的指令的偏移地址。 特点: 1)用户程序不能使用IP,它由BIU(总线接口部件)自动修改; 2)转移指令、过程调用指令和返回指令会改变IP的内容。,标志寄存器(Flag RegisterFR),标志寄存器FR是一个16位寄存器,其中9位作为标志位: 其中6个状态标志由EU(执行部件)设置,反映ALU算术或逻辑运算结果的某些特征; 其他3个是控制标志位,用来控制微处理器
16、的某些操作,可以由指令设置。,6个状态标志位,CF进位标志,加法时的最高位(D7或D15)产生进位或减法时最高位出现借位,则CF=1,否则CF=0; AF辅助进位标志,供BCD码使用。当D3位出现进位或借位时AF=1,否则AF=0; OF溢出标志,带符号数进行算术运算时,其结果超出了8位或16位的表示范围,产生溢出,则OF=1,否则OF=0;,6个状态标志位,ZF零标志,运算结果各位都为零,则ZF=1,否则ZF=0; SF符号标志,运算结果为负数时,即运算结果的最高位为1,则SF=1,否则SF=0; PF奇偶标志,反映操作结果中“1”的个数的情况,若有偶数个“1”,则PF=1,否则PF=0。,3个控制标志位,DF方向标志,用来控制数据串操作指令的步进方向; 当设置DF=1时,将以递减顺序对数据串中的数据进行处理。当设置DF=0时,递增。 IF中断允