第2章微处理器微处理器,又称中央处理单元(CentralProcessingUnit,CPU)是采用大规模(LSI)或超大规模集成电路(VLSI)技术制成的半导体芯片。它将控制单元,寄存器组,算术逻辑单元(ALU)及内部总线集成在芯片上,组成具有运算器和控制器功能的部件。2.18086微处理器的结构8086是Intel系列的第三代16位微处理器,采用了HMOS高密度工艺,每片集成4万多只晶体管,单一+5v电源,主频为5MHz/10MHz。它的内部和外部的数据总线宽度是16位,地址总线宽度20位,可寻址空间达220,即1MB。2.1.18086的功能结构8086微处理器的内部功能结构(如图)由两个独立的工作部件——执行部件EU(ExecutionUnit)和总线接口部件BIU(BusInterfaceUnit)构成:1.执行部件EU:由运算器、寄存器组、控制器等组成,负责指令的执行2.总线接口部件BIU:由指令队列、地址加法器、总线控制逻辑等组成,负责与系统总线打交道数据寄存器指针和变址寄存器AHALBHBLCHCLDHDLSPBPSIDIAXBXCXDX暂存寄存器ALU标志寄存器FREU控制器ALU数据总线(16位)指令队列缓冲器123456总线控制逻辑8086总线地址加法器CSDSSSESIP内部暂存器AB(20位)执行部件(EU)总线接口部件(BIU)DB(16位)(8位)队列总线8086CPU的内部功能结构框图1.执行部件EU(1)EU的功能:A.从BIU的指令队列缓冲器中取出指令,由EU控制器的指令译码器译码产生相应的操作控制信号给各部件B.对操作数进行算术运算和逻辑运算,并将运算结果的状态特征保存到状态寄存器FR中C.EU不直接与CPU外部系统相连,当需要与主存储器或I/O设备交换数据时,EU向BIU发出命令,并提供给BIU16位有效地址及所需传送的数据(2)执行部件EU的组成A.EU由算术逻辑单元ALUB.通用数据寄存器组(4个16位通用寄存器)AX、BX、CX、DXC.地址指针和变址寄存器(4个16位专用寄存器)SP、BP、SI、DID.标志寄存器(FR/PSW)E.数据暂存寄存器F.EU控制器组成(3)EU的特点:A.通用数据寄存器AX,BX,CX,DX,既可以作16位寄存器使用,也可以分成高、低8位分别作两个8位寄存器使用。地址指针BP,SP和变址寄存器SI,DI都是16位寄存器。B.ALU的核心是16位二进制加法器C.16位状态标志寄存器(7位未用)存放操作后的状态特征和设置的控制标志。如下图所示:D.EU控制器是执行指令的控制电路,实现从队列中取指令、译码、产生控制信号等。D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0CFPFAFZFSFTFIFDFOFPSW2.总线接口部件BIU(1)BIU的功能:1)BIU从主存取指令送到指令队列缓冲器2)CPU执行指令时,总线接口单元要配合EU从指定的主存单元或外设端口中取数据,将数据传送给EU或把EU的操作结果传送到指定的主存单元或外设端口中3)计算并形成访问存储器的20位物理地址(3)BIU的组成:1)4个16位段寄存器DS、ES、CS、SS2)16位指令指针寄存器(IP)3)20位物理地址加法器4)6字节指令队列及总线控制逻辑(3)BIU的特点:1)指令队列是由6个字节的寄存器组成(8088指令队列由4个字节组成),采用“先进先出”原则。(3)BIU的特点:2)地址加法器是用来产生20位存储器物理地址的。物理地址的计算公式为:•物理地址(20位)=段基址(16位)×16+偏移地址(16位){由寻址方式计算出的有效地址EA(EffectiveAddress)}3)8086分配20条引脚线分时传送20位地址,16位数据和4位状态信息。2.1.28086的寄存器结构8086CPU内部设有三组信息寄存器(通用数据寄存器组,地址指针和变址寄存器,段寄存器组)和一个标志寄存器及一个指令指针寄存器IP。1.通用数据寄存器EU中设置了四个16位通用寄存器,它们分别是AX,BX,CX和DX。它们可以拆成两个独立的8位寄存器使用。通用寄存器可参与算术和逻辑运算,但它们还有各自特殊的用途。它们的具体用法如图所示:寄存器一般用法隐含用法AX16位累加器(Accumulator)字乘时提供一个操作数并存放积的低字;字除时提供被除数的低字并存放商ALAX的低8位字节乘时提供一个操作数并存放积的低字节;字节除时提供被除数的低字节并存放商;BCD码运算指令和XLAT指令中作累加器;字节I/O操作中存放8位输入/输出数据AHAX的高8位字节乘时提供一个操作数并存放积的高字节;字节除时提供被除数的高字节并存放余数;LAHF指令中充当目的操作数BX基址(Base)寄存器,支持多种寻址,常用作地址寄存器XLAT指令中提供被查表格中源操作数的间接地址CX16位计数器(Counter)串操作时用作串长计数器;循环操作中用作循环次数计数器CL8位计数器移位或循环移位时用作移位次数计数器DX16位数据(Data)寄存器在间接寻址的I/O指令中提供端口地址;字乘时存放积的高字,字除时提供被除数高字并存放余数表2-18086中通用寄存器的一般用法和隐含用法2.指针及变址寄存器(4个16位寄存器)EU中有两个地址指针寄存器和两个变址寄存器,它们分别为:SP(StackPointer),堆栈指针寄存器BP(BasePointer),基址指针寄存器SI(SourceIndex),源变址寄存器DI(DestinationIndex),目的变址寄存器它们的应用如图所示:寄存器一般用法隐含用法SP堆栈指针(StackPointer),与SS配合指示堆栈栈顶的位置压栈、出栈操作中指示栈顶BP基址指针(BasePointer),它支持间接寻址、基址寻址、基址加变址等多种寻址手段。在子程序调用时,常用它来取压栈的参数SI源变址(SourceIndex)寄存器。它支持间接寻址、变址寻址、基址加变址寻址等多种寻址串操作时用作源变址寄存器,指示数据段(段默认)或其他段(段超越)中源操作数的偏移地址DI目的变址(DestinationIndex)寄存器。它支持间接寻址、变址寻址、基址加变址寻址等多种寻址串操作时用作目的变址寄存器,指示附加段(段默认)中目的操作数的偏移地址表2-28086中地址寄存器的一般用法和隐含用法8086寄存器的特别说明:(1)8086的堆栈及堆栈操作有以下特点:双字节操作。即每次进、出栈的数据均为两字节。且高位字节对应高地址,低位字节对应低地址。无论是源操作数还是目的操作数,也无论是存储器操作数还是寄存器操作数,都必须按这个原则执行。堆栈向低地址方向生成。数据每次进栈时堆栈指针SP向低地址方向移动(减2);反之,数据出栈时,SP向高地址方向移动(加2)(2)BP、BX都被称为基址指针,但两者用法不同。BP只能寻址堆栈段(段缺省),不允许段跨越;BX可以寻址数据段(段缺省),也可以寻址附加段(段跨越)。(3)由于大多数算术和逻辑运算中又可以使用BP、SP和变址寄存器,因而也将这4个寄存器归入通用寄存器组。使用中应该注意这4个寄存器只能用于16位的存取操作3.段寄存器8086CPU中有4个段寄存器,用于存放当前程序所用的各段的起始地址,也称为段的基地址。1.代码段寄存器CS(CodeSegment)•其内容左移4位再加上指令指针IP的内容,就形成下一条要执行的指令存放的实际物理地址。2.数据段寄存器DS(DataSegment)•DS中的内容左移4位再加上按指令中存储器寻址方式计算出来的偏移地址,即为数据段指定的单元进行读写的地址。3.堆栈段寄存器SS(StackSegment)•堆栈是按“后进先出”原则组织的一个特别存储区。操作数的存放地址是由SS的内容左移4位再加上SP的内容而形成的。4.附加段寄存器ES(ExtendedSegment)•附加段是在进行字符串操作时作为目的区地址使用的一个附加数据段。在字符串操作指令中SI作为源变址寄存器,DI作为目的变址寄存器,其内容都是偏移地址。SP,BP,SI,DI与段寄存器联用说明(1)SP,BP与SS联用→确定堆栈段中某一存储器单元的地址,SP用来表示栈顶的偏移地址,BP可作为堆栈区中的一个基地址以便访问堆栈中的其他信息。(2)SI,DI与DS联用→确定数据段中某一存储器单元的地址,SI和DI有自动增量和自动减量的功能。在串处理指令中,SI和DI作为隐含的源变址和目的变址寄存器,SI和DS联用,DI和ES联用,分别达到在数据段和附加段中寻址的目的。(3)DF为1,SI、DI减量,由高地址向低地址处理;DF为0,SI、DI增量,由低地址向高地址处理4.指令指针寄存器和标志寄存器(1)指令指针寄存器IP指令指针寄存器IP是一个16位的表示地址指针的寄存器(2)标志寄存器FR(FlagRegister)标志寄存器也称为程序状态字PSW(ProgramStatusWord)寄存器,它是一个16位的标志寄存器,但仅使用其中的9位。其中CF,OF,AF,ZF,SF,PF为6个状态标志位;DF,IF和TF为3个控制标志位。如下图所示:D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0CFPFAFZFSFTFIFDFOFPSW图2-28086CPU标志寄存器状态信息由中央处理机根据计算机的结果自动设置,6位状态位的意义说明如下:OF(OverFlag)溢出标志:溢出为18位带符号数范围+127~~-12816位带符号数范围+32767~~-32768SF(SignFlag)符号标志:负为1,取最高有效位ZF(ZeroFlag)零标志:是0为1CF(CarryFlag)进位标志:有进位为1AF(AuxiliaryFlag)辅助进位标志:第3位有进位置1(半字节)PF(ParityFlag)奇偶进位标志:结果中低8位1的个数为偶数置1。控制信息由系统程序或用户程序根据需要用指令设置,控制标志(3个):DF(DirectionFlag)方向标志:DF为1,SI、DI减量,由高地址向低地址处理;DF为0,SI、DI增量,由低地址向高地址处理IF(InteruptFlag)中断标志:IF为1时允许中断TF(TrapFlag)陷阱标志(又叫跟踪标志):每执行一条指令就引起一个内部中断。用于单步方式操作,TF为1,指令执行完后产生陷阱,由系统控制计算机;TF为0,CPU不产生陷阱,正常工作.在本书第三章中介绍的汇编程序调试软件DEBUG中提供了测试标志位的方法,标志位0或1是用两个字母来表示的。标志位OFDFIFSFZFAFPFCF1/0OV/NVDN/UPEI/DING/PLZR/NZAC/NAPE/POCY/NC4.指令指针寄存器和标志寄存器例题例1:MOVAX,2345HMOVBX,3219HADDAX,BX指令执行后,(AX)=555EHOF=0,CF=0,ZF=0,SF=0,AF=0,PF=0例2:MOVAX,0FFFFHMOVBX,1ADDAX,BX指令执行后,(AX)=0OF=0,CF=1,ZF=1,SF=0,AF=1,PF=1答案1:001000110100010100110010000110010101010101011110指令执行后,(AX)=555EHOF=1,CF=0,ZF=0,SF=0,AF=0,PF=05.存储器组织与分段所谓存储器分段技术就是把1MB空间分成若干逻辑段,每个逻辑段的容量≤64KB。段内地址是连续的,段与段之间是互相独立的。逻辑段可以在整个存储空间浮动,即段的排列可以连续、分开、部分重叠或完全重叠,非常灵活。这里所谓的重叠是指存储单元可以分属于不同的逻辑段。存储器的逻辑分段断开排列A段B段C段D段E段4