金陵科技学院教案【封面】任课系部:课程名称课程编号授课对象专业课程类别必修课公共基础课□;学科基础课□;专业核心课□选修课专业方向课□;专业拓展课□;公选课□总学时数学分数学时分配课堂讲授学时;实践课学时教材名称作者出版社及出版时间指定参考书作者出版社及出版时间授课教师职称单位金陵科技学院教案【教学单元首页】第1次课授课学时3教案完成时间:章、节第二章主要内容8086/8088CPU内部结构,8086/8088存储器管理,8086/8088微处理器的引脚功能目的与要求理解8086/8088CPU内部结构;掌握8086/8088存储器管理,8086/8088微处理器的引脚功能。重点与难点重点:8086/8088存储器管理,8086/8088微处理器的引脚功能;难点:8086/8088CPU内部结构,8086/8088存储器管理,8086/8088微处理器的引脚功能。教学方法与手段多媒体课件展示;通过有针对性的例题对8086/8088CPU内部结构、8086/8088存储器管理、8086/8088微处理器的引脚功能进行深入的讲解。授课内容内容备注第2章8086/8088的结构2.18086/8088CPU内部结构一、8086/8088的内部结构框图8086微处理器与8088微处理器内部结构基本相同,内部均由算术逻辑器(ALU)、通用寄存器、段寄存器、专用寄存器、控制器、总线控制逻辑、指令队列及地址加法器等单元组成。从功能上可分执行部件(EU)和总线接口部件(BIU)两大部分:1.执行部件EU(ExecutionUnit)执行部件EU由算术逻辑器ALU、通用寄存器、标志寄存器(FLAGS)、暂存器及EU控制电路等单元组成。EU的主要任务是执行指令,其功能为:从BIU部件指令队列取出指令,由控制器单元内部的指令译码器将其译码,并将译码信息给各部件发出相应的操作控制信号。对操作数进行算术和逻辑运算,并将运算结果的特征保存到标志寄存器中。控制BIU部件与存储器或I/O接口进行数据交换,并提供访问存储器和I/O端口的有效地址。2.总线接口部件BIU(BusInterfaceUnit)总线接口部件BIU由段寄存器、指令指针寄存器、总线控制逻辑、地址加法器及指令队列等单元组成。BIU的主要任务是完成取指令与数据的输入/输出,其功能为:从内存特定的区域取出指令送入指令队列。对存储器、I/O端口进行数据的输入或输出。计算并形成访问存储器的20位物理地址。3.EU与BIU的关系EU和BIU是组成8086/8088微处理器的两个基本功能部件。它们相互配合完成指令操作,如当EU从指令队列中取走指令后,指令队列出现空字节,BIU就立即自动地从内存中取出后续的指令放入队列;当EU执行指令需要操作数时,BIU就根据EU给出的操作数有效地址,从指定的内存单元或I/O端口取出数据供EU使用;当EU运算结束后,BIU将运算结果写指定的内存单元或I/O端口。4.8088与8086的区别8088微处理器与8086内部功能结构基本相同,而它们的指令系统则完全相同,唯一的区别在于它们的BIU部件略有不同。第一,8086的指令队列是6字节长,而8088的指令队列为4字节长;第二,8086数据总线引脚是16位,而8088是数据总线引脚为8位。因此,称8088为准16位微处理器,而8086为标准16位微处理器.讲解原理,注重在理解的基础上记忆内部结构AHALBHBLCHCLDHDLSPBPDISIAXBXCXDX执行部件(EU)通用寄存器组ALU数据总线ESSSDSCS内部通信寄存器123456标志寄存器(16位)ALU地址加法器段寄存器数据总线(16位)指令队列20位地址总线总线接口部件(BIU)外部总线暂存器FLAGSEU控制器总线控制部件IP图2-18086/8088微处理器编程结构示意图EU和BIU这两个功能部件又是相互独立的。大多数情况下,EU的执行指令操作与BIU的取指令操作是在时间上可重叠的,即EU进行某条指令执行操作时,BIU可同时进行后继指令的取指令操作,这两个部件并行连续工作可形成指令处理流水线。这样,可减少了CPU取指令的等待时间,加快了CPU的指令执行速度,也提高了系统总线的利用率。在微处理器内,多个部件重叠进行指令各个操作的处理方式被称为指令流水线处理。二、编程结构——寄存器结构8086/8088微处理器内部可供程序员使用的有14个16位寄存器,如图2-3所示。1.通用寄存器有8个通用寄存器,可分为三组,即:(1)数据寄存器数据寄存器有4个,包括累加器AX(Accumulator)、基址寄存器BX(Base)、计数寄存器CX(Count)和数据寄存器DX(Data)。数据寄存器的特点是,这4个16位寄存器可分为高8位(AH、BH、CH和DH)与低8位(AL、BL、CL和DL),这两组8位寄存器可分别寻址、独立操作。这样,可以将数据寄存器作为一个16位寄存器进行操作,也可用作两个8位寄存器。数据寄存器可以用来存放8位或16位的二进制操作数,这些操作数可以是参加操作的数据、操作的中间结果,也可以是操作数的地址。大多数算术和逻辑运算指令都可以使用这些数据寄存器。AHALBHBLCHCLDHDLSPBPDISIAXBXCXDXESSSDSCSIPFLAGS累加寄存器基址寄存器计数寄存器数据寄存器堆栈指针寄存器基址指针寄存器目的变址寄存器源变址寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器指令指针寄存器标志寄存器图2-38086/8088内部寄存器(2)地址指针寄存器地址指针寄存器有堆栈指针寄存器SP(StackPointer)和基址指针寄存器BP(BasePointer)两个。它们既可作为16位数据寄存器使用,也可用来存放堆栈数据区存储单元的偏移地址。具体来分,SP用来存放堆栈在内存中的地址,BP用来存放在现行堆栈段的一个数据的“基地址”。(3)变址寄存器变址寄存器有源变址寄存器SI(SourceIndex)和目的变址寄存器DI(DestinationIndex)两个。它们既可以作为16位数据寄存器使用,也可用来存放源操作数和目的操作数的变址值。在8086的指令系统中,许多情况下,一条指令只能用一个特定的寄存器或寄存器组来完成其功能,对某些用来完成特定操作的8086指令,上述通用寄存器具有一些隐含用法,如表2-1所示。表2-1通用寄存器的隐含用法寄存器操作AX字乘除指令中用作累加器;字I/O指令中作数据寄存器ALAH字节乘除指令、XLAT查表指令、BCD码和ASCII码运算指令中作累加器;字节I/O操作时作为数据寄存器;字节乘除指令中;在LAHF指令中用作目的寄存器BXXLAT查表指令中作基址寄存器;间接寻址时作为地址寄存器和基址寄存器CX串操作时的循环次数计数器;循环操作时的循环次数计数器CL循环移位和移位指令中用作移位次数的计数器DX字乘、除指令中作辅助寄存器;I/O指令间接寻址时作端口地址寄存器SP堆栈操作中作堆栈指针SI串操作指令中作源变址寄存器DI串操作中作目的变址寄存器2.指令指针寄存器IP(InstructionPointer)指令指针寄存器IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称为偏移地址(OffsetAddress)或有效地址(EA,EffectiveAddress)。它与CS段寄存器内容的左移四位值相加,求得下一条指令在1MB空间中的物理地址,即CS×16+IP。程序员不能对IP进行存取操作,程序中的转移指令、返回指令及中断处理能对IP进行操作。3.标志寄存器FLAGS(FlagRegister)标志寄存器FLAGS,用来存放CPU算术和逻辑运算的结果特征状态和设置指令操作控制位。FLAGS是一个16位的寄存器,但8086/8088只用了其中的9位,其中包括6个状态标志位和3个控制标志位。如图2-4所示。简述如下:OFDFIFTFSFZFAFPFCF0246789101115图2-4标志寄存器FLAGS(1)状态位状态标记位记录了算术和逻辑运算结果的一些特征状态,常用于条件转移指令的判断条件,故也称条件标志。各位定义如下:CF—进位标志位(CarryFlag),若运算结果的最高位有进位或借位时CF=1,否则CF=0。PF—奇偶标志位(ParityFlag),若运算结果中“1”的个数为偶数时PF=1,否则PF=0。AF—辅助进位标志位(AuxiliaryCarryFlag),运算中第3位(半个字节)向第4位有进位或借位时AF=1,否则AF=0。ZF—零标志位(ZeroFlag),若运算结果为零时ZF=1,否则ZF=0。SF—符号标志位(SignFlag),若运算结果的最高位为“1”时SF=1,否则SF=0。OF—溢出标志位(OverflowFlag),若运算结果超过带符号数表示范围时OF=1,否则OF=0。8位带符号数范围为-128~+127,16位带符号数范围为-32768~+32767。注意:“溢出”与“进位”是两种不同的概念,某次运算结果有“溢出”不一定有“进位”,反之有“进位”也不一定有“溢出”。上述6个状态标志由执行部件EU设置,反映算术或逻辑运算结果的某些特征,这些状态标志常用来影响或控制某些后续指令(例如,条件转移指令、循环指令等)的执行。不同指令对状态标志的影响不一样,有些指令不影响状态标志。另外进位标志CF可由指令设置。(2)控制位控制标志位用来使CPU对后继的指令操作产生控制作用,各位定义如下:DF—方向标志位(DirectionFlag),在进行字符串操作时,每执行一条串操作指令,对源或目的操作数的地址要进行一次调整(对字节操作为加1或减1,对字操作为加2或减2),由DF决定地址是递增还是递减。DF=1,为递减,即从高地址向低地址进行,DF=0为递增。IF—中断允许标志(InterruptEnableFlag),表示系统是否允许响应外部的可屏蔽中断,IF=1,表示允许响应。IF=0,表示CPU禁止响应可屏蔽中断请求。IF对不可屏蔽中断请求及内部中断不起作用。TF—陷阱标志/跟踪标志位(TrapFlag),若设置TF=1,CPU进入单步执行指令工作方式。这种方式便于对程序进行调试和跟踪。即每执行完一条指令后,便自动产生一次单步中断,从而使程序员能逐条指令地检查和跟踪程序;TF=0时,CPU为基本工作方式。上述3个控制标志位用来控制微处理器的某些操作,可以由指令来设置。为了对状态标志进一步了解,现举例如下:例设有2345H+3219H,试分析对状态标志位的影响?解:SF:由于运算结果最高位为0,所以SF=0ZF:由于运算结果不为0,所以ZF=0AF:由于第3位没有向第4位进位,AF=0PF:由于1的个数为奇(9个1),PF=00010001101000101+00110010000110010101010101011110CF:由于最高位没有产生进位,CF=0OF:由于最高位没有产生进位Cs,次高位没有向最高位进位CP,故OF=0一般讲:PSCCOF,异或结果为0表示无溢出;异或结果为1表示有溢出。需要指出:OF用来表示有符号数溢出,而CF则用来表示无符号数溢出(CF=1溢出,反之则不溢出)。4.段寄存器(SegmentRegister)在微机系统的内存单元中通常存放着三类信息,即:代码(指令)——指示微处理器执行何种操作;数据(字符、数值)——程序处理的对象;堆栈信息——被保存的返回地址和中间结果。在8086/8088系统中,这三类信息通常分别存放在各自的内存区域中——8086/8088存储系统中的不同存储段。8086/8088系统中把可直接寻址的1M字节内存空间分为称作“段”的逻辑区域,每个段的物理长度为64K字节,而段的起始地址由称为“段寄存器”的4个16位寄存器决定,这4个段寄存器为:CS—代码段寄存器(CodeSegment),指向当