《[信息与通信]微机原理与接口技术14微处理器.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]微机原理与接口技术14微处理器.ppt(79页珍藏版)》请在三一办公上搜索。
1、微处理器,Intel8086/80881.8086/8088的功能结构 8086是一种单片微处理器芯片,内外部数据总线16位(8088内部数据总线16位,外部数据总线8位)对外40条引脚,主时钟5MHz、8MHz、10MHz等。20条地址引脚,直接寻址220=1MByte,可访问64K个I/O端口。,8086 CPU按功能可分为两大部分:一部分为BIU(BUS Interface Unit)专门负责取指令和存取操作数。它与BUS打交道。一部分为EU(Execution Unit)专门负责分析指令与执行指令。它不与系统BUS打交道。,1.EU,EU单元负责指令的执行,由算术逻辑单元ALU、标志寄
2、存器F、通用寄存器及EU控制器等组成,主要进行16位的各种运算及有效地址的计算。EU不与计算机系统总线(外部总线)相关,而从BIU中的指令队列取得指令。这个指令队列中,存放着BIU预先由存储器中取出的若干个字节的指令(8088为4个字节,8086为6个字节长队列)。,1)执行单元EU数据寄存器 AX、BX、CX、DX专用寄存器 SP、BP、SI、DI标志寄存FLAG算数逻辑部件 ALUEU控制逻辑单元,执行部分控制电路,ALU,标志寄存器,通用寄存器,执行部件(EU),16位,8位,8088CPU的内部寄存器,8088CPU内部共有14个16位的寄存器,其中包括4个16位的数据寄存器AX、BX
3、、CX、DX;2个16位的指针寄存器SP、BP;2个16位的变址寄存器SI、DI;2个16位的控制寄存器IP、F及4个16位的段寄存器CS、DS、ES、SS,如图2.1所示。,1.通用寄存器组 通用寄存器组包括4个数据寄存器AX、BX、CX、DX;2个指针寄存器SP、BP及2个变址寄存器SI、DI。4个数据寄存器用来存放16位数据,也可以将每个数据寄存器分为2个8位的寄存器,用于存放8位数据。此时,AX可分为AH及AL;BX可分为BH及BL;CX分为CH及CL;DX分为DH及DL,它们可作为8位寄存器单独使用。这样既可以进行16位的算术运算和逻辑运算,也可以进行8位的算术运算和逻辑运算,这是8
4、088指令系统的一个特点。,两个指针寄存器中的SP是堆栈指针寄存器,它和堆栈段寄存器一起就可以确定堆栈在内存中的位置。BP是基数指针寄存器,通常用来存放基地址,使得8088的寻址更加灵活。两个变址寄存器:SI是源变址寄存器,DI是目的变址寄存器,均用于指令的变址寻址。SI通常指向源操作数,而DI通常指向目的操作数。,不仅4个数据寄存器可以任意参加算术运算和逻辑运算,而且BP,SP,SI,DI也可以任意参加算术运算和逻辑运算,因而称以上寄存器为通用寄存器。,为了充分地利用这些通用寄存器,在某些指令中又对其中的寄存器作了特殊的约定,使这些寄存器在通用的基础上附加了一点特殊性。这些特殊的约定虽然增加
5、了掌握指令的难度,但是当学完指令系统后会发现,这点难度是不大的,是容易克服的。,例如,虽然通用寄存器都可作为累加器使用,但在某些算术运算中(如乘法运算、除法运算、十进制调整等),还是指定了以AX作为累加器,这就使AX与其它的通用寄存器有所区别,因而在8088中,把AX称为累加器。由于在变址寻址中,指定BX为基址寄存器,因此,BX便被称为基址寄存器。,在循环控制或重复操作的指令中,常把循环或重复的次数放在CX或CL中,因而称CX为计数寄存器。在乘法、除法中,乘积或被除数超过16位时,总是用DX与AX存放,故DX便被称为数据寄存器。,对于SI和DI寄存器也有类似的情况,即在专用的串操作指令中,指定
6、SI作为源串的地址指针,DI作为目标串的地址指针,并在串指令执行时,自动地改变SI或DI的值,因而称SI、DI为变址寄存器。,SP作为堆栈栈顶元素的指针,不能指向栈顶以外的元素,为此,增加了一个基址指针寄存器BP,使它可以指向由SS作为堆栈段基址的栈中的任意位置。BP与SP具有不同的概念和用途,我们要注意将它们区别开来。,2.专用寄存器组,专用寄存器组包括作为控制寄存器使用的指令指针寄存器IP和状态标志寄存器F,此外还有4个用于实现1MB存储器寻址的段寄存器CS、DS、SS、ES。以上寄存器都是16位的寄存器。8088指令中给出的地址最多只有16位,而与寻址有关的寄存器也是16位的,由于16位
7、地址最多只能寻址64KB。,4个段基地址CS、DS、ES、SS仅仅指出了段从哪个地址开始,但还不能决定正在使用的具体的存储单元的地址,因此我们把正在使用的存储单元的地址与所在段的基地址的偏移量称为段内偏移量或者称为有效地址EA,真正的物理地址是由段寄存器值左移4位与段内偏移量相加后的结果,如图2.2所示。,例如取指令时,CS值为2000H,而IP值为3500H,则被取指令的物理地址为:20000H CS左移4位)3500H 段偏移 23500H 物理地址 又如SS值为7900H,已知栈顶元素的物理地址为7B450H,则堆栈指针SP的值为:7B450H)79000H 2450H 即SP值为245
8、0H.,1MB是16个64KB存储器的总和,但这并不意味着1MB只能包括16个逻辑段。因为这些段既可以首尾相连,可以相互间隔开。也可以相互重叠或者部分重叠,只要不影响程序的正常执行(例如不会取错指令或数据等)即行,所以,逻辑段个数可能多于16个也可能少于16个。,此外,段寄存器如何与偏移量形成相应的物理地址,这在8088中有个基本约定。正常情况下一般按这个基本约定形成所需的物理地址,但也允许有特例情况,被称为段超越,即不用约定的段基址,而是用可修改的段基址与某偏移量来形成所需的物理地址,见表2.1。,表2.1 段寄存器使用约定,专用寄存器组中的指令寄存器IP只能与CS寄存器相互结合,才能形成指
9、令的真正的物理地址。,执行单元EU的组成1:标志寄存Flag,标志寄存器F则用来反映系统的状态及指令执行的结果,8088的F使用了9个标志位,各位有不同的意义,如图2.3所示。,(1)进位标志CF 当指令执行的结果在最高位出现进位或借位时,CF1;否则CF0。8088中,字节操作的最高位为D7;字操作的最高位为D15。在执行加、减、比较、移位等指令时,将根据结果改变CF标志位的状态。(2)奇偶标志PF 当指令执行的结果中1的个数为偶数时,PF1;否则PF0。在执行逻辑运算的指令时,将根据结果改变PF标志位的状态。,(3)辅助进位标志AF 当指令执行的结果,若低半字节(低4位)向高半字节进位或借
10、位时,AF1;否则AF0。该标志常用于十进制数运算结果的调整,以得到十进制的结果。(4)零标志位ZF 当指令执行的结果为0时,ZF1;否则ZF0。,(5)符号标志位SF 当运算结果的最高位(字节操作时为D7位,字操作时为D15位)为1时,SF1;否则SF0。因SF与结果的最高位一致,故可用SF值反映结果是正或负。OF溢出标志:当补码运算有溢出时,OF为1;否则为0。,1)所有的逻辑/算术运算2)计算16位的偏移地址送到BIU,以形成 20 位的物理地址,以便对 1 兆空间的存储器寻址。3)影响标志位Flag,执行单元EU的组成2:算数逻辑部件 ALU,EU控制逻辑单元,8086CPU的中心控制
11、单元,是控制 定时与状态逻辑电路。接受指令队列缓冲器送来的指令代码,用于控制执单元中各部件按制定的要求协调工作。,总线接口BIU,段寄存器 CS、DS、ES、SS地址加法器指令指针寄存器 IP指令队列总线控制逻辑,内部暂存器,IP,ES,SS,DS,CS,输入/输出控制电路,外部总线,1 2 3 4 5 6,地址加法器,指令队列缓冲器,总线接口部件(BIU),20位,16位,8位,2.BIU,BIU单元用来实现EU的所有总线操作。它由地址加法器,段寄存器CS、DS、SS、ES,指令指针IP,指令队列缓冲器和总线控制逻辑组成。BIU负责CPU与存储器或外部设备之间的信息交换。,将取指令部分和执行
12、指令部分分开的好处是,在EU执行指令的过程中,BIU可以取出多条指令放入指令流队列中。当EU执行完一条指令后,就可以立即执行下一条指令,从而减少了CPU为取指令而等待的时间,提高了运算的速度。这是8088CPU的一大优点。,段寄存器 CS、DS、ES、SS,BIU的组成1:段寄存器,BIU的组成2:地址加法器,BIU的组成3:指令指针寄存器 IP,IP(Instruction Pointer):为16位,终始保持着EU要执行的下一条指令的偏移地址(其值自动增加),不能用指令直接修改,但可以用间接方法修改(例如:中断,返回,转移,调用等等)。,BIU的组成4:指令队列(缓冲器),指令队列缓冲器由
13、6个8位(80866个,80884个)的FIFO寄存器构成,其工作流程如下:(1)BIU中的指令队列有2个或2个以上字节为空时,BIU自动启动总线周期,取指填充指令队列。直至队列满,进入空闲状态。(2)EU每执行完一条指令,从指令队列队首取指。系统初始化后,指令队列为空,EU等待BIU从内存取指,填充指令队列。,(3)EU取得指令,译码并执行指令。若指令需要取操作数或存操作结果,需访问存储器或I/O,EU向BIU发出访问总线请求。(4)当BIU接到EU的总线请求,若正忙(正在执行取指总线周期),则必须等待BIU执行完当前的总线周期,方能响应EU请求;若BIU空闲,则立即执行EU申请总线的请求。
14、(5)EU执行转移、调用和返回指令时,若下一条指令不在指令队列中,则队列被自动清除,BIU根据本条指令执行情况重新取指和填充指令队列。,BIU的组成5:总线控制逻辑,提供系统总线的控制信号,实现数据、地址和状态信息的分时传送。由于8086/8088仅有40pin,而16位的DB 及20位的AB若分离设置的话将占用36pin,故8086采取了AB/DB分时复用的方法,但这样增加了总线控制的复杂程度.,BIU:负责与存储器接口,即8088与存储器之间的信息传送 EU:负责指令的执行。将CPU分为两个单元,可以使取指令和执行指令同时进行,减少了CPU为取指令而等待的时间,从而提高了CPU的利用率,提
15、高了系统的运行速度。,8088与8086微处理器的差别,1.结构区别 8086的指令队列长度为6个字节,当队列空闲两个字节时,BIU自动从存储器取出指令字节,存入指令队列中;而8088的指令队列为4个字节长,当队列空闲一个字节时,BIU就自动取指令字节,并存到指令队列中去。,2.端脚上的区别 8088对外数据总线为8位,故仅分时复用地址线的低8位,即AD0AD7这8条为地址/数据线。A8A15专门用于地址线。8086对外数据总线为16位,故与16位的地址线分时复用,即AD0AD15这16条均为地址/数据线。,2.8086引脚功能和工作模式,(1)、8086的引脚说明,8086/8088 的引脚
16、信号,8086/8088芯片的各类信号线包括20根地址线,8根(8088)或16根(8086)数据线及控制线、状态线、时钟、电源和地线等。总数大大超过了40根线。因此,为满足封装的要求,必须采用一线多用的办法。8086/8088引脚定义的方法大致可以分为五类。,第一类的每个引脚只传送一种信息。例如,第32脚只传送CPU发出的读信号 第二类的每个引脚电平的高低代表不同的信号,例如,第三类引脚在8086/8088的两种不同工作方式最小模式和最大模式下有不同的名称和定义。例如:第29脚为。当8086/8088工作在最小模式时,该引脚传送CPU发出的写信号,而当8086/8088工作在最大模式时,该引
17、脚传送的是括号内的信号 即总线锁定信号。,第四类的每个引脚可以传送两种信息。这两种信息在时间上是可以分开的。因此可以用一个引脚在不同时刻传送不同的信息,一般称这类引脚为分时复用线。例如,AD7_AD0是地址和数据的分时 复用线。当CPU访问内存或I/O设备时,在AD7_AD0上首先出现的是被访问的内存单元或I/O设备某端口的地址信息的低8位。然后,在这些线上就出现CPU进行读写的8位数据。,第五类引脚在输入和输出时分别传送不同的信息,如。输入时传送总线请求信号,输出时传送总线请求允许信号。,3.8086的两种工作方式,1)两种工作方式:最大方式和最小方式2)如何设定工作方式:MN/MX 接到+
18、5V即为最小方式3)两种工作方式的主要特点:最小方式:当所连的存储器容量不大,I/O端口不多时。系统的地址总线CPU的AD0AD7,A8A15,A15A19 通过地址锁存器8282 构成。系统的数据总线直接由AD0AD7提供,或通过数据收发器8286供给。系统的控制总线直接由CPU的控制线供给。,最大方式 当要构成的系统较大,要求较强的驱动能力时。系统的地址总线CPU的AD0AD7,A8A15,A15A19 通过地址锁存器8282 构成。系统的数据总线或通过数据收发器8286供给。系统的控制总线通过总线控制器8288供给。两种组态通过8088引脚信号 决定。,最小方式下的引脚说明 地址/数据(
19、或状态)信号,l AD15AD0(Address Data Bus):地址/数据复用信号,双向,三态。在T1状态(地址周期)AD15AD0上为地址信号的低16位A15A0;在T2 T3状态(数据周期)AD15AD0 上是数据信号D15D0。l A19/S6A16/S3(Address/Status):地址/状态复用信号,输出。在总周期的T1状态A19/S6A16/S3上是地址的高4位。在T2T4状态,A19/S6A16/S3上输出状态信息。l(Bus High Enable/Status):数据总线高8位使能和状态复用信号,输出。在总线周期T1状态 有效,表示数据线上高8位数据有效。在T2T4
20、状态 输出状态信息S7。S7在8086中未定义。,S5-表示中断允许标志IF的状态S6-始终保持低电平,l,lALE(Address Latch Enable):地址锁存使能信号,输出,高有效。用来作为地址锁存器的锁存控制信号。l(Data Enable):数据使能信号,输出,三态,低电平有效。用于数据总线驱动器的控制信号。l(Data Transmit/Receive):数据驱动器数据流向控制信号,输出,三态。在8086系统中,通常采用8286或8287作为数据总线的驱动器,用 信号来控制数据驱动器的数据传送方向。当 1时,进行数据发送;0时,进行数据接收。,控制与系统信号,(Data En
21、able):数据使能信号,输出,三态,低电平有效。用于数据总线驱动器的控制信号。(Data Transmit/Receive):数据驱动器数据流向控制信号,输出,三态。在8086系统中,通常采用8286或8287作为数据总线的驱动器,用 信号来控制数据驱动器的数据传送方向。当 1时,进行数据发送;0时,进行数据接收。,l(Memory/Input and Output):存储器或I/O控制信号(标号28),输出,三态。输出为高电平时表示和存储器之间数据交互;如果为低电平,表示CPU和I/O接口之间数据传输。l(Read):读信号,输出,三态。信号有效,表示CPU执行一个对存储器或I/O端口的读
22、操作,在一个读操作的总线周期中,在T2T3状态中有效,为低电平。l(Write):写信号,输出,三态。信号有效,表示CPU执行一个对存储器或I/O端口写操作,在写操作总线周期中,在T2T3状态中有效,为低电平。,lNMI(Non-Maskable Interrupt):非屏蔽中断请求(中断类型号为2),输入,上升沿有效。NMI不受中断允许标志的影响。lINTR(Interrupt Request):可屏蔽中断请求,输入,高电平有效。如果INTR信号有效,CPU是否响应中断请求,受控于中断允许标志IF。,lHOLD(Hold Request):总线保持请求,输入,高电平有效。当系统中总线主模块(
23、如DMA)要求使用总线时,由该模块向CPU发送HOLD信号。lHLDA:总线保持响应信号,输出,高电平有效。HLDA有效时表示CPU响应了其他总线主的总线请求。CPU的数据/地址控制信号呈高阻态,而请求总线的总线主(DMA)获得了总线权。,lCLK(Clock):时钟信号,输入。为CPU和总线控制逻辑提供定时。要求时钟信号的占空比为33。lRESET(Reset):复位信号,输入,高电平有效。复位信号有效时,CPU结束当前操作并对标志寄存器FLAG、IP、DS、SS、ES及指令队列清零,并将CS设置为FFFFH。当复位信号撤除时,(即电平由高变低时)CPU从FFFF0H开始执行程序。l REA
24、DY(Ready):准备好信号,输入,高电平有效。当READY信号有效时表示存储器或I/O准备好发送或接收数据。,系统的复位和启动操作 RESET:4个时钟周期的高电平,初次加电复位,不小于50s的高电平。标志寄存器 清零CS寄存器 FFFFHDS寄存器 0000HSS寄存器 0000HES寄存器 0000H指令指针(IP)0000H指令队列 空其他 0000H,l(Minimum/Maximum Mode Control):最大最小模式控制信号,输入。决定8086工作在哪种工作模式。如果 1(5V),CPU工作在最小模式。0(接地),CPU则工作在最大模式。l(Test):测试信号,输入,低
25、电平有效。和WAIT指令结合起来使用,在CPU执行WAIT指令时,CPU处于空转状态,进行等待。当8086检测到 信号有效时,等待状态结束,继续执行WAIT之后的指令。lGND 为地。lVCC 为电源,接5V。,最小方式的系统组成,最小模式的典型配置,最大方式与最小方式的引脚差异,lQS1、QS0(Instruction Queue Status,最小模式为ALE、INTA#):指令队列状态信号,输出。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,以便从外部对芯片的测试。lS2#、S1#、S0#(Bus Cycle Status,最小模式为M/IO#、D/TR#、DEN#):总线周
26、期状态信号,输出。这三个信号的组合表示当前总线周期的类型。在最大模式下,由这三个信号输入给总线控制器8288,用来产生存储器、I/O的读写等相关控制信号。,l LOCK#(Lock,最小模式为WR#):总线封锁信号,输出。当LOCK#为低电平时,系统中其他总线主就不能占用总线。LOCK#信号是由指令前缀LOCK产生的。在LOCK前缀后的指令执行完之后,硬件上便撤销了LOCK#信号。lRQ#/GT1#、RQ#/GT0#(Request/Grant,最小模式为HOLD、HLDA):总线请求信号,输入/总线请求允许信号,输出,此信号为双向信号。CPU以外的处理器可以用其中之一来请求总线并接受CPU对总线请求的回答。RQ#/GT0#优先级高于RQ#/GT1#。,最大方式的系统组成,最大模式的典型配置,8288总线控制器结构框图,最大方式的系统组成:总线控制器 8288,小结,1.重点掌握8086/8088地址和数据线的特点。2.重要的控制线:NMI,INTR,MEMR,MEMW,IOR,IOW线的含义。,