《微机原理与接口技术》主讲易凡wdyifan@163.com武汉大学物理学院电子科学与技术系第二章微型计算机的体系结构2.1微机执行原理指令是规定计算机执行特定操作的命令通常条指令包括两部分:操作码。操作码指明要完成操作的性质,如加、减、乘、除、数据传送、移位等;地址码。地址码指明参加上述规定操作的数据存放地址或操作数。计算机将指令(2进制编码)按顺序存放存储器单元中1.微机执行过程1.微机执行过程(续)微机顺序从存储器取出一条指令执行;每执行一条指令都是分成三个阶段进行:①取指令(Fetch)②分析指令(Decode)③执行指令(Execute)取指令阶段的任务是根据程序计数器PC中的值,从存储器读出现行指令,送到指令寄存器IR,然后PC自动加1指向下一条指令地址。1.微机执行过程(续)分析指令阶段的任务是将IR中的指令操作码译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。执行指令阶段的任务是取出操作数,执行指令规定的操作。根据指令不同还可能写入操作结果。微型机程序的执行过程实际上就是周而复始地完成这三阶段操作的过程,直至遇到停机指令时才结束整个机器的运行。2.指令执行示例汇编语言源程序对应机器码内存单元地址指令说明ORG1000HMOVA,5CHB0H1000H操作码5CH1001H立即数ADDA,2EH04H1002H操作码2EH1003H立即数JO100AHCAH1004H操作码0AH1005H地址10H1006H地址MOV[0200H],AA2H1007H操作码00H1008H地址02H1009H地址HLTF4H100AH操作码指令执行过程图CBABDBALU累加器ACC暂存器标志寄存器FR寄存器组操作控制器OC指令译码器ID指令寄存器IR操作码,地址码内部总线地址缓冲器数据缓冲器程序计数器PC地址译码读控制B0H5CH04H2EH地址1001H1002H1003H内容1000H内存储器MOVAL,5CHADDAL,2EH+1CPU外CPU内①②③④⑤⑥①②③④⑤⑥①③④⑤⑥②①②③④⑤⑥⑦⑧2.28086CPU的内部逻辑结构8086是Intel系列的16位微处理器,常用HMOS工艺制造,它有16位数据线和20根地址线,可寻址的地址空间达220即1MB。8088微处理器是准16位,其内部逻辑按16位设计,但外部数据总线只有8条。8086由执行部件(EU)和总线接口部件(BIU)构成,两者可以并行工作。1.8086的内部逻辑结构1.8086的内部逻辑结构(续)执行部件EU(ExecutionUnit)•EU的功能是执行指令;•EU从指令队列中取出指令代码,将其译码,发出相应的控制信息;•控制数据在ALU中进行运算,运算结果的特征保留在FLAGS中。EU由以下各部分组成:•算术逻辑单元ALU•标志寄存器FLAGS(FR)•通用寄存器组•执行部件控制电路1.8086的内部逻辑结构(续)总线接口部件BIU(BusInterfaceUnit)•BIU负责与存储器I/O端口传送信息。•BIU从内存中取出指令送到指令队列;•当EU需要数据时,BIU与EU配合,从指定的内存或I/O端口取出数据给EU;•当运算结束时,BIU将运算结果送入指定的内存单元或外设。BIU的组成:•专用寄存器组•地址加法器•指令队列(6字节)•总线控制逻辑2.BIU与EU的动作管理当指令队列中有2个空字节时,BIU自动把指令取到指令队列中。当指令队列已满,而EU无总线访问请求时,BIU进入空闲状态。EU从指令队列的头部取出指令,并执行。在执行中,如需要访问内存或I/O设备,则EU请求BIU取操作数,并直等到需要的操作数到来后,EU才继续操作。若BIU处于空闲态,它立即响应请求,若BIU正在取指令到指令对列,它先完成取指令操作,再响应EU的请求。EU在执行转移、调用、返回等指令时,指令队列中的指令被清除,BIU重新从存储器中取出指令送入指令队列,EU才继续执行指令。因为EU与BIU并行工作,在整个运行期间,BIU总是忙碌的,充分利用了总线,CPU效率很高。演示2.BIU与EU的动作管理(续)2.38086的寄存器结构存储器是计算机存储信息的地方。掌握数据存储格式,以及存储器的分段管理对以后的汇编程序设计非常重要存储器也就是平时所说的主存,也叫内存,可直接与CPU进行数据交换。主存各单元利用地址区别寄存器是微处理器(CPU)内部暂存数据的存储单元,以名称表示,例如:AX,BX..….等外存主要指用来长久保存数据的外部存储介质,常见的有硬盘、光盘、磁带、U盘等。外存的数据只能通过主存间接地与CPU交换数据程序及其数据可以长久存放在外存,在运行需要时才进入主存你能区别寄存器、存储器(主存)、外存(包括硬盘、光盘、磁带等存储介质)吗?2.38086的寄存器结构(续)AX(Accumulator)累加器•用于算术、逻辑运算以及与外设传送信息等BX(BaseaddressRegister)基址寄存器。•常用做存放存储器地址CX(Count)计数寄存器。•在循环和串操作时,常用作计数器。DX(Data)数据寄存器。•常用来存放双字长数据的高16位,或存放外设端口地址1.通用寄存器组AX:AH,ALBX:BH,BLCX:CH,CLDX:DH,DL例如上述4个寄存器皆为16位寄存器,但又可将高、低8位分别作为两个独立的8位寄存器使用。1.通用寄存器组(续)SP(StackPointer)堆栈指针寄存器BP(BasePointer)基址寄存器SI(SourceIndex)源变址寄存器DI(DestinationIndex)目的变址寄存器以上4个寄存器只能作为16位的寄存器用。1.通用寄存器组(续)2.段寄存器CS(CodeSegment)代码段寄存器SS(StackSegment)堆栈段寄存器DS(DataSegment)数据段寄存器ES(ExtraSegment)附加段寄存器段寄存器都是16位的寄存器,用于存放段基值(16位的无符号数)3.控制寄存器IP(InstructionPointer)指令指针寄存器•存放预取指令的偏移地址,指示预取指令在主存储器中的位置。•随着指令的执行,IP将自动加1,以指示下一条指令所在的存储器位置;•IP寄存器与CS段寄存器联合使用以确定下一条指令的存储单元地址3.控制寄存器(续)FLAGS(FlagsRegister)标志寄存器•FLAGS是16位寄存器,但只用其中的9位;•这9位包括6个状态标志位和3个控制标志位14151213OFDF1011IFTF89SFZF67AF45PF23CF01FLAGS的6个条件标志位:CF(CarryFlag):进位标志•CF=1表示本次运算中,最高位(D7位或D15位)发生进位(加法运算)或借位(减法运算);•CF=0表示没发生进位(或借位)PF(ParityFlag):奇偶标志•PF=1运算结果的低8位中有偶数个“1”•PF=0运算结果的低8位中有奇数个“1”3.控制寄存器(续)AF(AuxiliaryCarryFlag):辅助进位标志(又称半进位标志)•AF=1表示本次运算D3位向D4位有进位(加法运算)或借位(减法运算)。•AF=0表示无半进位3.控制寄存器(续)ZF(ZeroFlag):零标志。•ZF=1表示本次运算结果为0;•否则ZF=0。SF(SignFlag):符号标志。•SF=1表示本次运算结果的最高位(D7或D15位)为“1”,否则,SF=0。OF(OverflowFlag):溢出标志•OF=1表示本次运算结果超出了带符号数范围,即溢出,否则OF=03.控制寄存器(续)8位补码的整数范围是:-128~+12716位补码的整数范围是:-32768~+32767关于进位与溢出•2个n位的无符号二进制数相加,结果大于2n-1,称为进位,应用CF标志位作判断。•2个n位的带符号二进制数相加,结果大于2n-1-1或小于-2n-1,称为溢出,应用OF标志位作判断。•上述的n为字长,8086的n为8或16。3.控制寄存器(续)进位与溢出举例二进制数无符号数带符号数加数1000001004+4加数20000101111+11和0000111115+15CFOFZFSFPFAF000010二进制数无符号数带符号数加数1000001117+7加数211111011251-5和000000102+2CFOFZFSFPFAF100001进位与溢出举例二进制数无符号数带符号数加数1000010019+9加数201111100124+124和10000101133-123CFOFZFSFPFAF010101进位与溢出举例二进制数无符号数带符号数加数110000111135-121加数211110101245-11和01111100124+124CFOFZFSFPFAF110000进位与溢出举例FLAGS的三个控制标志位为:DF(DirectionFlag):方向标志•DF=1,使串操作按减地址方式进行;•DF=0,使串操作按增地址方式进行。IF(InterruptFlag):中断标志•IF=1,允许CPU响应可屏蔽中断;•IF=0,禁止CPU响应可屏蔽中断。TF(TrapFlag):单步标志。•TF=1,CPU进入单步工作方式;•TF=0,CPU正常执行。2.48086CPU的外部引脚及功能8086CPU芯片是40条引脚的双列直插式封装;8086CPU有两种工作模式:最大模式和最小模式引脚采用了分时复用方式,有8条引脚在两种工作模式中具有不同的功能。GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0MNIINTRCLKGNDVcc(+5V)AD15A16/S3A17/S4A18/S5A19/S6BHE#/S7MN/MX#RD#HOLD#(RQ#/GT0#)HLDA#(RQ#/GT1#)WR#(LOCK#)M/IO#(S2#)DT/R#(S1#)DEN#(S0#)ALE(QS0)INTA#(QS1)TEST#READYRESET123456789101112131415161718192040393837363534333231302928272625242322218086CPU图2.48086CPU的封装外型与引脚信号1.8086CPU在小模式中的各引脚功能AD15~AD0(AddressDataBus)分时复用地址/数据线•传送地址时三态输出;•传送数据时可双向三态输入/输出A19/S6~A16/S3(Address/Status)分时复用地址/状态线•作地址用时,A19~A16与AD15~AD0一起构成访问内存的20位物理地址•当CPU访问I/O端口时,A19~A16保持为“0”•作状态用时,S6~S3输出状态信息。(见表2.1)表2.1S4S3状态编码S4S3段寄存器00ES01SS10CS(I/O,INT)11DS•S5指示中断标志状态,当IF=1时,S5=1。•S6恒为“0”。BHE#/S7(BusHighEnable/Status)•总线高位有效信号。三态输出,低电平有效;•在读写存储器或I/O端口时,BHE#用作体选信号。(见表2.2)表2.2BHE#和AD0编码的含义AD0BHE#总线使用情况0016位数据总线上进行字传送01高8位数据总线上进行字节传送10低8位数据总线上进行字节传送11无效1.8086CPU在小模式中的各引脚功能(续)RD#(Read)•读信号。三态输出,低电平有效,指示CPU正在读内存或I/O端口。WR#(Write)•写信号。三态输出,低电平有效,指示CPU正在写内存或I/O端口。M/IO#(Memory/IO)•存储器或I/O端口访问信号。•M/IO#为高电平时,表示当前CPU正访问存储器;•M/IO#为低电平时,表示当前CPU正访问I/O端口READ