在学习阶段,你不可以只生活在一个人的世界中,而应当尽量学会与各阶层的人交往和沟通,主动表达自己对各种事物的看法和意见,甚至在公众集会时发表演讲,锻炼自己的表达能力李开复8086/8088微处理器内部结构教学重点微处理器基本结构8088/8086的内部功能结构;8088/8086中的寄存器18086CPU内部结构1.算术逻辑单元(运算器)2.寄存器组3.指令处理单元(控制器)8088的内部结构1234内部暂存器IPESSSDSCS输入/输出控制电路外部总线执行部分控制电路∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列执行部件(EU)总线接口部件(BIU)16位20位8位8位返回18086CPU内部结构8086的内部结构从功能分成两个单元总线接口单元BIU——管理8086与系统总线的接口,负责CPU对存储器和外设进行访问执行单元EU——负责指令的译码、执行和数据的运算两个单元相互独立,分别完成各自操作两个单元可以并行执行,实现指令取指和执行的流水线操作取指取指取指取指得到数据等待执行执行执行执行1.1BIU(BusInterfaceUnit)功能完成所有外部总线的操作,提供总线控制信号。具体地说,完成:取指、指令排队、读写操作数、地址转换(将两个16位地址相加20位物理地址),总线控制。BIU使用指令队列实现流水线操作:当指令队列中有2个或2个(8088为1个)以上的字节空间,且EU未申请读写存储器,则BIU顺序预取后续指令代码Queue。1.1BIU(BusInterfaceUnit)组成代码段Reg:CS堆栈段Reg:SS数据段Reg:DS附加段Reg:ES②指令指针寄存器IP(下一条要取的指令在当前代码段内的偏移量)4个段寄存器③指令队列Queue④20位地址加法器Σ⑤总线控制逻辑⑥内部通信寄存器①1.2EU(ExecutionUnit)功能负责全部指令的执行;向BIU输出(地址及结果)数据;对Reg及PSW进行管理。1.2EU(ExecutionUnit)①数据寄存器:AX,BX,CX,DX(16位)8个通用寄存器变址寄存器:SI,DI②算术逻辑运算部件ALU16位加法器,用于对寄存器和指令操作数进行算术或逻辑运算.③标志寄存器PSW9个标志位,其中6个条件标志位用于存放结果状态.④运算寄存器⑤EU控制系统组成AH,AL,BH,BL,CH,CL,DH,DL(8位)指针:SP,BP接收从BIU的指令队列中取来的指令代码,译码并向EU内各有关部分发出时序命令信号,协调执行指令规定的操作。1.2EU(ExecutionUnit)EU的工作过程从BIU指令队列中取指译码电路分析相应控制命令控制数据经过“ALU数据总线”的流向:(1)若是运算操作:操作数暂存器ALU;运算结果经“ALU总线”相应Reg、并置PSW。(2)若从外设取数:EUBIU访问MEM或I/O内部通信寄存器向“ALU数据总线”传送数据。“流水线”结构总线接口部件BIU和执行部件EU并不是同步工作的,两者的动作管理遵循如下原则:每当8086的指令队列中有2个空字节,BIU就会自动把指令取到指令队列中。而同时EU从指令队列取出一条指令,并用几个时钟周期去分析、执行指令。当指令队列已满,而且EU对BIU又无总线访问请求时,BIU便进入空闲状态。在执行转移、调用和返回指令时,指令队列中的原有内容被自动清除。“流水线”结构在8086/8088中,EU和BIU这种并行的工作方式不仅有力地提高了工作效率,而且这也是它们的一大特点。EU和BIU之间是通过指令队列相互联系的。指令队列可以被看成一个RAM区,EU对其执行读操作,BIU对其执行写操作。28086/8088CPU主要性能字长:16位/准16位。时钟频率:8086/8088标准主频为5MHz,8086/8088-2主频为8MHz。数据、地址总线复用。最大内存容量:1MB。基本寻址方式:8种。指令系统:99条基本汇编指令。可以对位、字节、字、字节串、字串、压缩和非压缩BCD码等多种数据类型进行处理。端口地址:16位I/O端口地址可寻址64K端口地址。每一个地址对应一个字节宽的I/O端口。中断功能:可处理内部软件中断和外部硬件中断源达256个。支持单片CPU或多片CPU系统工作。(i)存储器空间20根地址线220=1MByte8086/8088率先打破微处理器只能访问64KB存储空间的限制,可寻址1MB。00000HFFFFFH……A19地址A010010111001011010101972D5H将存储器分成4种段,存放三类信息:代码、数据、中间结果和断点地址。972D5H12H段(972D5H)=12H分段原因:8086有20根地址线,但其内部可以表示的地址最多只能是16位。为了能寻址1MB空间,8086对存储器进行逻辑分段,每个段最大为64KB,最小为16B(此时最多64K个段)。3存储器分段与段寄存器+物理地址=段址×10H+偏址段址段寄存器CS、DS、ES、SS16偏址16指令地址(CS)×10H+(IP)数据地址(DS)×10H+EA(偏移地址也称为有效地址EA,出现在指令中)堆栈地址(SS)×10H+(SP)附加段地址(ES)×10H+EA(ii)4个段寄存器CS、DS、SS、ES分别指示存储区的段地址(段起始地址的高16位,段起始地址又称为段基地址),用来识别当前可寻址的四个段,不可互换使用。(iii)存储单元的逻辑地址和物理地址逻辑地址段地址0000H~FFFFH(由段寄存器提供)偏移地址段内某个单元到段基地址的距离(0000H~FFFFH,由指令提供)CPU访问存储器时,送出00000H~FFFFFH间的一个20位的物理地址。段基址00003210150偏移地址基址加法器物理地址015019物理地址的形成......20000H25F60H25F61H25F62H25F63H2000H段基址逻辑地址段内偏移地址5F62H逻辑地址与物理地址物理地址与逻辑地址的关系如下图:段缺省和段替换规则(CPU对段访问时应遵循这个原则):段缺省:段寄存器名不出现在指令和机器码中时,CPU对存储器的操作性质隐含指定;搭配规则:段寄存器和寄存器(指针、变址)有较固定的配用关系;替换(超越)规则:在指令之前可加上“CS”,”DS”,”SS”等前缀,以指定的段寄存器替代隐含的段寄存器。(ES)16d+(DI)DI无ES目标字符串(DS)16d+(SI)SICS,ES,SSDS源字符串(DS)16d+EA有效地址EACS,ES,SSDS存取变量(SS)16d+EA有效地址EACS,DS,ESSSBP间址(SS)16d+(SP)SP无SS堆栈操作(CS)16d+(IP)IP无CS取指令物理地址计算偏移地址可替换段寄存器正常使用(隐含)段寄存器操作类型代码段数据段堆栈段CSIPDSSI,DI或BXSSSP或BP段寄存器和其他寄存器组合指向存储单元示意图(iv)存储器分段的一般规律:a.可独立分开(最大不重叠16个段)b.连续c.重叠(部分重叠或完全重叠)如:数据段和附加段完全重叠,堆栈段和附加段部分重叠。因此对一个具体的存储单元,可以属于一个逻辑段,也可以同时属于几个逻辑段。控制寄存器8位寄存器IPFLAGCSDSSSES代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDI累加器基地址寄存器计数器数据寄存器堆栈指针寄存器基地址寄存器源变址寄存器目的变址寄存器(PC)指令指针寄存器(PSW)状态标志寄存器段寄存器16位寄存器通用寄存器寄存器组(RegisterSet)4.寄存器的配置(1)用途:存放8位或16位操作数或中间结果,以提高CPU的运算速度(减少存取MEM的时间)其中,AX是CPU使用最多的一个寄存器,功能最强。AX的作用:i)ALU之前保存一个操作数,ALU之后保存结果。ii)CPU与I/O、MEM交换数据所用到的最多的寄存器。(前者对算术运算,后者对I/O操作)1.数据Reg.(AX,BX,CX,DX)(2)特殊用法:i)BX——计算地址用作基址Reg.ii)CX——计数器,循环或移位时用。ⅲ)DX——在某些I/O操作时,用来保存I/O端口地址,或字的乘除法运算。4.1通用Reg2.指示器和变址Reg.(SP,BP,SI,DI,仅能用于字)用途:a.缩短指令代码的长度;b.建立可变的地址;c.寄存偏移量,与段寄存器的内容相加以获得物理地址。例:SP中通常存放的偏移量被认为是在堆栈段中(堆栈访问时)。DI、SI中的偏移量,通常被认为是在数据段中。BP通常用于存放当前堆栈段的一个偏移量。(通过堆栈传送数据或地址时,BP为偏移地址,SS中为段地址。)BP也可用于通用Reg.。SP——堆栈指针BP——基地址指针SI——源变址寄存器DI——目的变址寄存器指针寄存器变址寄存器通用寄存器的特殊用法(默认用法)寄存器特殊用法AX,AL乘法/除法指令,作累加器;I/O操作时,作数据寄存器AH在LAHF指令中用作目的寄存器((AH)←标志)AL在BCD码及ASCII码运算指令中作为累加器;在XLAT指令中作为累加器(AL)←((AL)+(BX))BX在间接寻址中作为基址寄存器和变址寄存器CX在循环程序中,作循环次数计数器CL在移位和循环移位指令中,作为移位位数和循环移位次数的计数寄存器DXI/O指令间接寻址时,作为地址寄存器;在乘法指令中作为辅助累加器(当乘积或被除数为32位时,存放高16位数)BP在间接寻址中,作为基址寄存器SP在堆栈操作中,作为堆栈指针SI间接寻址时,作为地址寄存器或变址寄存器;在串操作指令中作为源变址寄存器DI在间接寻址时,作为地址寄存器或变址寄存器;在串操作指令中作为目的变址寄存器CS内容+IP内容,为下一条指令的地址。DS内容+指令中的偏移量,为数据段内的某单元地址。SS内容+SP为堆栈段内的某单元地址。ES附加段的段地址。4.2段Reg.(CS,DS,SS,ES)4.3指令指针IP——其中总是包含下一条要取的指令在当前代码段中的偏移量,即程序运行过程中,IP始终指向下一次要取出的指令偏移地址。或称IP和CS一起指向下一条指令的物理地址。IP的内容由8086/8088的总线接口部件BIU修改(编程序时不能直接访问IP,但指令可引起它的改变、或将它的内容压入堆栈、或从堆栈恢复)。物理地址=CS×16+IP作用:存放ALU的操作结果的特征标志,这种标志可作为条件,用于判断是否控制程序转移;或对某一特定的功能起控制作用。进位标志CF(CarryFlag):当结果的最高位(D15或D7)产生一个进位或借位,则CF=1,否则CF=0。溢出标志OF(OverflowFlag):当带符号数的运算结果超出-2n-1~2n-1-1时,溢出,OF=1,否则OF=0。符号标志SF(SignFlag):结果的最高位(D15或D7)为1,则SF=1,否则SF=0。零标志ZF(ZeroFlag):若运算的结果为0,则ZF=1,否则ZF=0。奇偶标志PF(ParityFlag):若运算结果的低8位中‘1’的个数为偶数,则PF=1,否则,PF=0。辅助进位标志AF(AuxiliaryFlag):在进行8位或16位数运算时,由低4位向高4位(D3向D4)有进位或借位,则AF=1,否则AF=0。状态标志4.4标志寄存器FRCFPFAFZFSFTFIFDFOF4.4标志寄存器FR控制标志方向标志DF(DirectionFlag):DF=1,串操作时地址自动减量;DF=0,串操作时地址自动增量。中断允许标志IF(InterruptEnableFlag):IF=1,允许CPU接收外部中断请求,IF=0,屏蔽外部中断请求。追踪标志TF(TraceFlag):TF=1,使处理进入单步方式,以便于调试。CFPFAFZFSFTFI