第三章微机系统中的微处理器

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章微机系统中的微处理器3.1微处理器的一般结构(略)3.28086微处理器的功能结构3.38086的寄存器结构3.48086的存储器组织3.58086的I/O组织3.68086的寻址方式3.7Intel80×86系列高档微处理器简介(略)返回3.28086微处理器的功能结构·8086(88)CPU有20条地址线,直接寻址能力达1MB。·8086(88)CPU具有16(8)条外部数据总线,内部总线和ALU均为16位,可进行8位和16位操作,是16(准16)位微处理器。·8086(88)采取了如下三方面的措施,使其性能大大提高。·重叠:指第N条指令的取指与第N-1条指令的执行(在时间上)是重叠的(参重叠原理图)。返回提高性能的三个措施(1)、通过建立一个6(4)字节的指令预取队列及将CPU划分为EU和BIU这两个功能相对独立的功能部件,使指令的取指与执行实现了一定程度上的并行,大大地提高了CPU的利用率及总线的利用率(参8086微处理器的内部功能结构图)。(2)、引入段的概念,并设立了一些段寄存器,使8086的最大可直接寻址空间达到1MB。(3)、在结构和指令上考虑了多处理器的连接,从而支持多处理器系统。返回EU的定义、组成和工作过程·EU(ExecutionUnit):执行部件,由算术逻辑运算部件ALU、运算寄存器、标志寄存器、通用寄存器组和EU控制器构成。·EU的任务是:执行指令,进行全部算术逻辑运算、完成偏移地址的计算,向总线接口单元BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。·EU的工作过程返回EU的工作过程EU的工作过程如下:EU执行完一条指令后,就从BIU的指令预取队列中取出预先读入的指令代码加以执行。如此时指令预取队列是空的,EU处于等待状态。一旦指令预取队列中有指令,EU立即取出执行。在执行指令过程中,若需要访问存储器单元或I/O端口,EU就会发出命令,使BIU进入访问存储器或I/O端口的总线周期。若此时BIU正处于取指令总线周期,则必须在取指令总线周期结束后,BIU才能对EU的访问存储器或I/O端口的命令进行处理。返回算术逻辑运算部件·算术逻辑运算部件(ALU):专门进行诸如加、减、乘、除等算术运算以及诸如与、或、非、异或等逻辑运算和移位等运算的部件。它是运算器的核心,几乎所有的算术运算、逻辑运算和移位操作都是由ALU完成的。返回标志寄存器·标志寄存器(FLAG或PSW):专门用于存放机器的状态标志和控制标志的寄存器。返回通用寄存器组图3.6中8个16位通用寄存器分为两组:数据寄存器及地址指针和变址寄存器。ALAHBHBLCHCLDHDLSPBPDI通用寄存器运算寄存器ALU标志执行部分控制电路AX16位总线接口部分(BIU)1234指令队列缓冲器CSDSSSESIP内部暂存器SIBXCXDX8位执行部分(EU)输入输出控制电路20位地址加法器16位段寄存器外部总线返回1.数据寄存器数据寄存器包括AX、BX、CX和DX,为16位寄存器。在指令执行过程中既可用来存放操作数,也可用于存放操作的结果,还可以用来存放与地址有关的信息。它们中的每一个又可分成两个独立的8位寄存器来使用。16位数据寄存器主要用于存放数据,也可以用来存放与地址有关的信息。而8位寄存器(AH、AL、BH、BL、CH、CL、DH和DL)只能用于存放数据。返回2.地址指针和变址寄存器地址指针和变址寄存器包括SP、BP、SI和DI,均为16位寄存器。这4个寄存器可用作数据寄存器,也可用于存放段内偏移地址的全部或一部分。后面我们将说明偏移地址的概念和形成的方法。返回地址指针(SP和BP)SP(StackPointer)堆栈指针,用于指向当前栈顶单元的指针。用于存放当前栈顶单元地址在堆栈段中的段内偏移地址。其段基值存放于堆栈段寄存器SS中。BP(BasePointer)基址指针。在某些基址寻址方式中,BP用来存放段内偏移地址的的相关信息。特别值得注意的是,凡包含有BP的寻址方式中,如果无特别说明,返回变址寄存器(SI和DI)SI(SourceIndex)和DI(DestinationIndex)变址寄存器。在某些寻址方式中,SI和DI用来存放段内偏移地址的全部或一部分。在串操作指令中,SI用一般作源变址寄存器,DI一般用作目的变址寄存器。返回总线接口部件·BIU(BusInterfaceUnit):总线接口部件。总线接口部件的组成总线接口部件的任务总线接口部件的工作过程返回总线接口部件的组成总线接口部件BIU包括段寄存器(4个)、指令指针IP、指令预取队列、完成与EU通讯的内部暂存器、将段寄存器中保存的段基和由IP或EU部件提供的偏移地址(均为16位二进制数)两者相加、进而形成20位物理地址的加法器以及总线控制逻辑几个部分。返回总线接口部件的任务它的任务是执行各种总线操作,完成CPU与存储器和I/O设备之间信息的传送。具体地讲,取指令时,从存储器指定存储器单元取出指令送入指令预取队列排队。执行指令时,根据EU的命令对指定存储器单元或I/O端口进行存取数据的操作。返回·总线接口部件BIU的工作过程:8086(88)CPU中,若6(4)个字节的指令预取队列中出现两个以上的空闲字节,且EU没有命令BIU进入对存储器和I/O端口进行访问的总线周期时,则BIU将自动执行取指令总线周期从存储器中取出指令并送入来指令预取队列。当指令预取队列中已满,且EU没有发出进入存储器和I/O端口访问总线周期的命令时,BIU进入空闲状态。下一页在执行转移、子程序调用或返回指令时,指令预取队列的内容就被清空。BIU是通过对内部暂存器的检测来查看EU是否有对存储器或I/O端口的存取要求的,因此EU和BIU进行的操作是并行的,即EU从指令预取队列中取出指令、执行指令的工作与BIU从存储器中取出指令并送入指令预取队列的工作是在一定程度上同时进行的。这样大大提高了CPU的利用率,也降低了CPU对存储器速度的要求。返回ALAHBHBLCHCLDHDLSPBPDI通用寄存器运算寄存器ALU标志执行部分控制电路AX16位总线接口部分(BIU)1234指令队列缓冲器CSDSSSESIP内部暂存器SIBXCXDX8位执行部分(EU)输入输出控制电路20位地址加法器16位段寄存器外部总线图3.48086微处理器的内部功能结构图返回取指执行取指执行(a)取指执行取指执行取指执行(b)图3.5一般处理器与8086(88(a)一般处理器指令执行过程;(b)8086(88)处理器指令执行过程返回重叠的概念3、38086的寄存器结构8086CPU内部具有14个16位寄存器,用于提供参加运算的操作数,控制指令执行和对指令及操作数寻址,这就是我们前面所说的工作寄存器。其寄存器结构如图3.6所示。3.3.1通用寄存器组3.3.2段寄存器组3.3.3控制寄存器组返回图3.68086CPU的寄存器结构返回变址寄存器通用寄存器·工作寄存器:暂存用于寻址的相关信息或在计算过程中参加运算的操作数以及中间结果的寄存器。工作寄存器分为两组:数据寄存器组和地址寄存器组。但有的寄存器兼有双重用途。·由于访问寄存器要比访问存储器快得多,所以如要多次使用某些数据时,可以首先将这些数据存入数据寄存器,进行必要的计算,然后将结果送回存储器。一般情况下,CPU所含的数据寄存器越多,计算速度越快。·地址寄存器组一般用于操作数的寻址。·通用寄存器:可用作数据寄存器的工作寄存器。返回3.3.2段寄存器组前面已经指出。访问存储器单元的地址码由段基值和段内偏移地址两部分组成。段寄存器是专门用来存放段基值的寄存器。总线接口部件BIU中设置了4个段寄存器。CPU可通过4个段寄存器访问存储器中4个不同的段(每段的最大长度为64K字节)。代码段寄存器CS(CodeSegment)。数据段寄存器DS(DataSegment)。堆栈段寄存器SS(StackSegment)。附加段寄存器ES(ExtraSegment)。DS和ES都可由用户用程序设置初值。若DS和ES的初值相同,则数据段和附加段重叠。返回代码段寄存器CS(CodeSegment)。它存放当前执行程序所在段的段基。CS的内容左移四位再加上指令指针IP的内容就得到存放下一条将要执行的指令的单元的地址。下一条将要执行的指令存放单元的地址=CS*16+IP返回数据段寄存器DS(DataSegment)。它存放当前参加运算的数据所在段的段基。通常数据段用来存放数据和变量。DS的内容左移四位再加上按相应寻址方式计算出来的偏移地址,即为对数据段中要进行读写操作的单元的地址。数据段中存放数据单元的地址=DS*16+EA返回堆栈寄存器SS(StackSegment)。它存放当前堆栈段的段基。堆栈是存储器中开辟的按“后进先出”的原则组织的一个特别的存储区,它规定每次操作在栈顶单元进行。当前栈顶单元的地址由SS的内容左移四位加上SP的内容得到。当前栈顶单元的在堆栈段中的地址=SS*16+SP返回附加段寄存器ES(ExtraSegment)。附加段是一个附加的数据段。附加段可在进行串操作时作为目的区地址使用,此时,可用ES存放附加段的段基,DI存放相应单元在附加段中的段内偏移地址。附加数据段中存放数据单元的地址=ES*16+EA返回3.3.3控制寄存器组1.指令指针IP(InstructionPointer)是存放下一条将要执行指令的偏移地址的指针。在用户程序中不能直接用传送类指令对该寄存器置值,但可以用动态调试程序DEBUG中的命令改变其值,以改变程序执行的顺序,用于调试程序。某些指令如转移指令、子程序调用指令和子程序返回指令等将改变IP的内容。下一页2.标志寄存器(FLAG或PSW)8086CPU设立了一个两字节的标志寄存器,共9个标志。其中6个是反映上一次ALU运算结果的状态标志,3个是控制CPU操作特征的控制标志,如下所示:1514131211109876543210OFDFIFTFSFZFAFPFCF下一页状态标志有:CF(CarryFlag):进位标志。如果加法时最高位(对字节操作是D7位,对字操作是D15位)向更高位有进位或减法时最高位向更高位有借位,则CF=1,否则CF=0。PF(ParityFlag):奇偶标志。如果运算结果的低8位中含有偶数个1,则PF=1,否则PF=0。AF(AuxiliaryCarryFlag):辅助进位标志。如果在加法时D3位向D4位有进位或减法时D3位向D4位有借位,则AF=1,否则AF=0。这个标志位用于实现BCD码算术运算结果的校正。下一页ZF(ZeroFlag):零标志。如果运算结果各位都为零,则ZF=1,否则ZF=0。SF(SignFlag):符号标志。如果运算结果为正,则SF=0,如果运算结果为负,则SF=1。它总是和结果的最高位(字节操作时是D7,字操作时是D15)相同。因为在补码运算时最高位是符号位,所以运算结果为负时,SF=1,否则SF=0下一页OF(OverflowFlag):溢出标志。在加或减法运算中若结果超出8位或16位有符号数所能表示的数值范围(-128~+127或-32768~+32767)时,即产生溢出。此时,OF=1,否则OF=0。溢出:指要表示的数超出计算机所能表示的数的范围,则产生溢出。上溢:指要表示的数从绝对值大的方向超出计算机所能表示的数的范围,为错误状态。下溢:指要表示的数从绝对值小的方向超出计算机所能表示的数的范围,此时,只有精度上的损失。下一页例如,假设前一条指令执行加法:0010001101000101+01010010000110010111010101011110那么,执行完这条指令后各标志的状态是:SF=0,ZF=0,PF=0,AF=0,CF=0,OF=0。下一页假如前一条指令执行加法:0101010000111001+01000111011010101001101110100011那么,执行完这条指令后各标志是:SF=1,ZF=0,PF=1,AF=1,CF=0,OF=1下一页假如

1 / 77
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功