《微处理器及指令系统.ppt》由会员分享,可在线阅读,更多相关《微处理器及指令系统.ppt(276页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理与控制技术微机原理与控制技术 卢晓红卢晓红 第二章:第二章:x86 微处理器微处理器1第二章:第二章:x86x86微处理器微处理器2.1 8086/8088微处理器微处理器2.2 8086/8088存储器和存储器和I/O组织组织2.3 8086/8088中断系统中断系统2.4 8086/8088指令系统指令系统2.5 x86系列系列CPU的技术发展的技术发展2 28086/80888086/8088微处理器的结构。微处理器的结构。80868086微处理器的结构。微处理器的结构。8086/80888086/8088微处理器的寄存器结构微处理器的寄存器结构8086/80888086/808
2、8系统中的存储器分段与物理地址的形成。系统中的存储器分段与物理地址的形成。8086/80888086/8088微处理器的引脚功能和相关知识,达到微处理器的引脚功能和相关知识,达到“综合应用综合应用”层次。层次。8086/8088 CPU8086/8088 CPU的引脚信号和工作模式的引脚信号和工作模式 。8086/80888086/8088两种工作方式两种工作方式最小方式与最大方式的区别。最小方式与最大方式的区别。最小模式的典型配置最小模式的典型配置8086/80888086/8088微处理器的总线时序。微处理器的总线时序。三种周期三种周期指令周期、总线周期和时钟周期的区别及联系。指令周期、总
3、线周期和时钟周期的区别及联系。中断类型码,中断向量,中断子程序入口地址之间的联系中断类型码,中断向量,中断子程序入口地址之间的联系最小方式下的总线读最小方式下的总线读/写操作时序,最小方式下的总线请求写操作时序,最小方式下的总线请求/保持保持三态三态2.1 8086/80882.1 8086/8088微处理器微处理器本本 节节 要要 点点3 38086/80888086/8088微处理器是微处理器是IntelIntel公司推出的第三代公司推出的第三代CPUCPU芯片,芯片,它们的内部结构基本相同,都采用它们的内部结构基本相同,都采用1616位结构进行操作及存储位结构进行操作及存储器寻址,但外部
4、性能有所差异,两种处理器都封装在相同的器寻址,但外部性能有所差异,两种处理器都封装在相同的4040脚双列直插组件中。脚双列直插组件中。n2.1.0 80862.1.0 8086与与808880882.1 8086/80882.1 8086/8088微处理器微处理器4 42.1 8086/80882.1 8086/8088微处理器微处理器要了解一个要了解一个CPUCPU的工作性能和使用方法的工作性能和使用方法,首先应该了解其功能结构首先应该了解其功能结构(是指是指从程序员和使用者的角度看到的结构,亦可称为编程结构从程序员和使用者的角度看到的结构,亦可称为编程结构)。从功能。从功能上来看,上来看,
5、8086CPU8086CPU可分为两部分,即可分为两部分,即总线接口部件总线接口部件BIUBIU(Bus Bus Interface UnitInterface Unit)和)和执行部件执行部件EUEU(Execution UnitExecution Unit)。)。n2.1.1 80862.1.1 8086与与80888088微处理器的编程结构微处理器的编程结构5 52.1 8086/80882.1 8086/8088微处理器微处理器n总线接口部件(总线接口部件(BIUBIU)总线接口单元总线接口单元BIUBIU的功能是负责完成的功能是负责完成CPUCPU与存储器或与存储器或I/OI/O设备
6、之间的数据传送。具体任务是:设备之间的数据传送。具体任务是:指令队列出现空字节(指令队列出现空字节(8088CPU 18088CPU 1个空字节,个空字节,8086CPU28086CPU2个空字节个空字节)时,从内存取出后续指令。时,从内存取出后续指令。BIUBIU取指令时,并不影响取指令时,并不影响EUEU的执行,两者并行工作,大大的执行,两者并行工作,大大提高了提高了CPUCPU的执行速度。的执行速度。EUEU需要从内存或外设端口读取操作数时,根据需要从内存或外设端口读取操作数时,根据EUEU给给出的地址从内存或外设端口读取数据供出的地址从内存或外设端口读取数据供EUEU使用。使用。EUE
7、U的运算结果、数据或控制命令等由的运算结果、数据或控制命令等由BIUBIU送往指定的送往指定的内存单元或外设端口。内存单元或外设端口。6 62.1 8086/80882.1 8086/8088微处理器微处理器n总线接口部件的组成总线接口部件的组成4 4个个1616位段寄存器:位段寄存器:包括代码段寄存器包括代码段寄存器CS(Code Segment)CS(Code Segment)、数据段寄存器、数据段寄存器DSDS(Data Data Segment)Segment)、堆栈段寄存器、堆栈段寄存器SS(Stack Segment)SS(Stack Segment)和附加和附加数据段寄存器数据段
8、寄存器ES ES(Extra Segment)(Extra Segment);1 1个个1616位的指令指针寄存器位的指令指针寄存器IP IP(Instruction Pointer)(Instruction Pointer);1 1个个2020位地址加法器;位地址加法器;6 6字节指令队列缓冲器;字节指令队列缓冲器;1 1个与个与EUEU通讯的内部寄存器;通讯的内部寄存器;总线控制电路等。总线控制电路等。7 72.1 8086/80882.1 8086/8088微处理器微处理器n段寄存器段寄存器8086CPU8086CPU的地址引脚有的地址引脚有2020根根,能提供,能提供2020位的地址信
9、息,可直接对位的地址信息,可直接对1M1M个存储单元进行访问,但个存储单元进行访问,但CPUCPU内部可用来提供地址信息的寄存器内部可用来提供地址信息的寄存器都是都是1616位的位的,为了用,为了用1616位寄存器实现位寄存器实现2020位地址的寻址,位地址的寻址,8086/80888086/8088采用了段结构的内存管理的方法。采用了段结构的内存管理的方法。将指令代码和数据分别存储在代码段、数据段、堆栈段、附加数据段将指令代码和数据分别存储在代码段、数据段、堆栈段、附加数据段中,这些段的段地址分别由段寄存器中,这些段的段地址分别由段寄存器CSCS、DSDS、SSSS、ESES提供,而代提供,
10、而代码或数据在段内的偏移地址则由有关寄存器或立即数给出。码或数据在段内的偏移地址则由有关寄存器或立即数给出。8 82.1 8086/80882.1 8086/8088微处理器微处理器代码段寄存器代码段寄存器CSCS存储程序当前使用的代码段的段地址。代码段存储程序当前使用的代码段的段地址。代码段用来存放程序的指令代码。下一条要读取指令在代码段中的偏移用来存放程序的指令代码。下一条要读取指令在代码段中的偏移地址由指令指针寄存器地址由指令指针寄存器IPIP提供;提供;数据段寄存器数据段寄存器DSDS用来存放程序当前使用的数据段的段地址。一用来存放程序当前使用的数据段的段地址。一般来说,程序中所用到的
11、原始数据、中间结果以及最终结果都存般来说,程序中所用到的原始数据、中间结果以及最终结果都存放在数据段中,如果程序中使用了字符串处理指令,则源字符串放在数据段中,如果程序中使用了字符串处理指令,则源字符串也存放在数据段中;也存放在数据段中;堆栈段寄存器堆栈段寄存器SSSS用来存放程序当前所使用的堆栈段的段地址。用来存放程序当前所使用的堆栈段的段地址。堆栈是在存储器中开辟的一个特定区域;堆栈是在存储器中开辟的一个特定区域;附加数据段寄存器附加数据段寄存器ESES用来存放程序当前使用的附加数据段的段用来存放程序当前使用的附加数据段的段地址。附加数据段通常用于存放字符串操作时的目的字符串。地址。附加数
12、据段通常用于存放字符串操作时的目的字符串。n段寄存器段寄存器9 92.1 8086/80882.1 8086/8088微处理器微处理器n段寄存器段寄存器8086/80888086/8088段寄存器与提供段内偏移地址的寄存器之间的默认组合段寄存器与提供段内偏移地址的寄存器之间的默认组合段寄存器段寄存器提供段内偏移地址的寄存器提供段内偏移地址的寄存器CSCSIPIPDSDSBXBX、SISI、DIDI或一个或一个1616位数位数SSSSSPSP或或BPBPESESDI(DI(用于字符串操作指令用于字符串操作指令)10102.1 8086/80882.1 8086/8088微处理器微处理器n指令指针
13、寄存器指令指针寄存器IPIP指令指针寄存器指令指针寄存器IPIP用来存放下一条要读取的指令在代用来存放下一条要读取的指令在代码段中的偏移地址。码段中的偏移地址。IPIP在程序运行中能自动加在程序运行中能自动加1 1修正,修正,从而使其始终存放的是下一条要读取的指令在代码段从而使其始终存放的是下一条要读取的指令在代码段的偏移地址。的偏移地址。由于由于CSCS和和IPIP的内容决定了程序的执行顺序,因此程的内容决定了程序的执行顺序,因此程序员序员不能直接用赋值指令不能直接用赋值指令对其内容进行修改。对其内容进行修改。有些指令能使有些指令能使IPIP和和CSCS的值改变(如跳转指令)或使的值改变(如
14、跳转指令)或使其值压入堆栈或从堆栈中弹出恢复原值(如子程序调其值压入堆栈或从堆栈中弹出恢复原值(如子程序调用指令和返回指令用指令和返回指令)11112.1 8086/80882.1 8086/8088微处理器微处理器n2020位地址加法器位地址加法器8086/80888086/8088系统中存储器按字节编址,可寻址系统中存储器按字节编址,可寻址1M1M字节,由于字节,由于1M1M字节字节是是2 2的的2020次方,因此,每个字节所对应的地址应是次方,因此,每个字节所对应的地址应是2020位,这位,这2020位的地址位的地址称为物理地址称为物理地址/绝对地址,物理地址由逻辑地址变换而来绝对地址,
15、物理地址由逻辑地址变换而来 ;逻辑地址由;逻辑地址由段基址和偏移地址两部分构成,段基址和偏移地址都是无符号的段基址和偏移地址两部分构成,段基址和偏移地址都是无符号的1616位二位二进制数。段基址存放在段寄存器中,偏移地址存放在进制数。段基址存放在段寄存器中,偏移地址存放在IPIP或者或者SPSP中。中。CPUCPU提供的用来对存储单元进行访问的提供的用来对存储单元进行访问的2020位地址是由位地址是由BIUBIU中的地址加中的地址加法器产生的。法器产生的。物理地址物理地址=段基址段基址X16+偏移地址偏移地址例如:例如:CS=2000H,指令指针寄存器,指令指针寄存器存放的是偏移地址存放的是偏
16、移地址IP=2200H,存储器的物理地址为,存储器的物理地址为20000H+2200H=22200H。12122.1 8086/80882.1 8086/8088微处理器微处理器n指令队列缓冲器指令队列缓冲器80868086的指令队列有的指令队列有6 6个字节个字节,80888088的指令队列有的指令队列有4 4个字节个字节。对。对80868086而言,当指令队列出现而言,当指令队列出现2 2个空字节,对个空字节,对80888088而言,指令队列出现而言,指令队列出现1 1个空字个空字节时,节时,BIUBIU就自动执行一次取指令周期,将下一条要执行的指令从内存单就自动执行一次取指令周期,将下一
17、条要执行的指令从内存单元读入指令队列。它们采用元读入指令队列。它们采用“先进先出先进先出”原则,按顺序存放,并按顺序取原则,按顺序存放,并按顺序取到到EUEU中去执行。中去执行。当当EUEU执行一条需要到存储器或执行一条需要到存储器或I/OI/O端口读取操作数的指令时,端口读取操作数的指令时,BIUBIU将将在执行完现行取指令的存储器周期后的下一个存储周期,对指令所指定的在执行完现行取指令的存储器周期后的下一个存储周期,对指令所指定的存储单元或存储单元或I/OI/O端口进行访问,读取的操作数经端口进行访问,读取的操作数经BIUBIU送送EUEU进行处理。进行处理。当当EUEU执行跳转、子程序调
18、用或返回指令时,执行跳转、子程序调用或返回指令时,BIUBIU就使指令队列复位,就使指令队列复位,并从指令给出的新地址开始取指令,新取的第并从指令给出的新地址开始取指令,新取的第1 1条指令直接经指令队列送条指令直接经指令队列送EUEU执行,随后取来的指令将填入指令队列缓冲器。执行,随后取来的指令将填入指令队列缓冲器。13132.1 8086/80882.1 8086/8088微处理器微处理器BIUBIU和和EUEU的动作协调原则的动作协调原则BIUBIU和和EUEU按以下流水线技术原则协调工作,共同完成所要求的任务:按以下流水线技术原则协调工作,共同完成所要求的任务:每当每当80868086
19、的指令队列中有两个空字节,的指令队列中有两个空字节,BIUBIU就会自动把指令取到指令就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。队列中。其取指的顺序是按指令在程序中出现的前后顺序。每当每当EUEU准备执行一条指令时,它会从准备执行一条指令时,它会从BIUBIU部件的指令队列前部取出指部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者果必须访问存储器或者I IOO端口,那么端口,那么EUEU就会请求就会请求BIUBIU,进入总线周期,进入总线周期,
20、完成访问内存或者完成访问内存或者I IOO端口的操作;如果此时端口的操作;如果此时BIUBIU正好处于空闲状态,正好处于空闲状态,会立即响应会立即响应EUEU的总线请求。如的总线请求。如BIUBIU正将某个指令字节取到指令队列中,正将某个指令字节取到指令队列中,则则BIUBIU将首先完成这个取指令的总线周期,然后再去响应将首先完成这个取指令的总线周期,然后再去响应EUEU发出的访问发出的访问总线的请求。总线的请求。当指令队列已满,且当指令队列已满,且EUEU又没有总线访问请求时,又没有总线访问请求时,BIUBIU便进入空闲状态。便进入空闲状态。在执行转移指令、调用指令和返回指令时,由于待执行指
21、令的顺序发在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,生了变化,则指令队列中已经装入的字节被自动消除,BIUBIU会接着往指会接着往指令队列装入转向的另一程序段中的指令代码。令队列装入转向的另一程序段中的指令代码。14142.1 8086/80882.1 8086/8088微处理器微处理器BIUBIU和和EUEU的动作协调原则的动作协调原则指令队列的引入使得指令队列的引入使得EUEU和和BIUBIU可并行工作,即可并行工作,即BIUBIU在读指令时,并不影响在读指令时,并不影响EUEU单元执行指令,单元执行指令,EUEU单元可以连
22、续不断地直接从指令队列中取到要执行的指令代单元可以连续不断地直接从指令队列中取到要执行的指令代码,从而减少了码,从而减少了CPUCPU为取指令而等待的时间,提高了为取指令而等待的时间,提高了CPUCPU的利用率,加快了整的利用率,加快了整机的运行速度。机的运行速度。指令队列可以被看成是一个特殊的指令队列可以被看成是一个特殊的RAMRAM,它的工作原理是,它的工作原理是“先进先出先进先出”,写入,写入的指令只能存放在队列尾,读出的指令是队列头存放的指令。的指令只能存放在队列尾,读出的指令是队列头存放的指令。EUEU和和BIUBIU之间就之间就是通过指令队列协调工作。是通过指令队列协调工作。151
23、52.1 8086/80882.1 8086/8088微处理器微处理器n执行单元执行单元EUEU执行单元执行单元EUEU不与系统外部直接相连,它的功能只是负责执行指令。不与系统外部直接相连,它的功能只是负责执行指令。执行执行的指令从的指令从BIUBIU的指令队列缓冲器中直接得到,执行指令时若需要从存储器的指令队列缓冲器中直接得到,执行指令时若需要从存储器或或I/OI/O端口读取操作数时,由端口读取操作数时,由EUEU向向BIUBIU发出请求,再由发出请求,再由BIUBIU对存储器或对存储器或I/OI/O端口进行访问。端口进行访问。EUEU由下列部件组成:由下列部件组成:1 1)1616位算术逻
24、辑单元位算术逻辑单元(ALU)(ALU):进行算进行算术和逻辑运算;术和逻辑运算;2 2)1616位标志寄存器(位标志寄存器(FRFR)FLAGSFLAGS:存放运算的状态特征和控制标志;存放运算的状态特征和控制标志;3 3)数据暂存寄存器:数据暂存寄存器:协助协助ALUALU完成运完成运算,暂存参加运算的数据;算,暂存参加运算的数据;16164 4)四个通用寄存器:四个通用寄存器:4 4个个1616位数位数据寄存器(据寄存器(AXAX、BXBX、CXCX、DXDX)5 5)四个专用寄存器,)四个专用寄存器,即基数指针即基数指针寄存器寄存器BPBP,堆栈指针寄存器,堆栈指针寄存器SPSP,源变
25、址寄存器源变址寄存器SISI,目的变址寄存,目的变址寄存器器DIDI;6 6)EUEU控制电路控制电路:控制、定时与:控制、定时与状态逻辑电路,接收从状态逻辑电路,接收从BIUBIU指令队指令队列取来的指令,经过指令译码形列取来的指令,经过指令译码形成各种定时控制信号,对成各种定时控制信号,对EUEU的各的各个部件实现特定的定时操作个部件实现特定的定时操作.2.1 8086/80882.1 8086/8088微处理器微处理器17172.1 8086/80882.1 8086/8088微处理器微处理器n通用寄存器通用寄存器AXAX、BXBX、CXCX、DXDX数据寄存器一般用于存放参与运算的操作
26、数或运算结果。数据寄存器一般用于存放参与运算的操作数或运算结果。每个数据寄存器都是每个数据寄存器都是1616位的,但又可将高、低位的,但又可将高、低8 8位分别作位分别作为两个独立的为两个独立的8 8位寄存器来用。高位寄存器来用。高8 8位分别记作位分别记作AHAH、BHBH、CHCH、DHDH,低,低8 8位分别记作位分别记作ALAL,BLBL,CLCL,DLDL。例如。例如AXAX可当作两个可当作两个8 8位寄存器位寄存器AHAH、ALAL使用。使用。8086/8088 CPU8086/8088 CPU的的1414个寄存器除了这个寄存器除了这4 4个个1616位寄存器位寄存器能分别当作两个
27、能分别当作两个8 8位寄存器来用之外,其它寄存器都不能位寄存器来用之外,其它寄存器都不能如此使用。如此使用。18182.1 8086/80882.1 8086/8088微处理器微处理器n通用寄存器通用寄存器AXAX、BXBX、CXCX、DXDX寄存器寄存器用用 途途AXAXAX(Accumulator)AX(Accumulator)称为累加器。用该寄存器存放运算结果可使指令称为累加器。用该寄存器存放运算结果可使指令简化,提高指令的执行速度。此外,简化,提高指令的执行速度。此外,所有的所有的I/OI/O指令都使用该寄存器指令都使用该寄存器与外设端口交换信息与外设端口交换信息。AL:AL:字字节节
28、乘,字乘,字节节除,字除,字节节I/OI/O,十,十进进制算制算术术运算;运算;AHAH:字:字节节乘,字乘,字节节除除BXBXBX(Base)BX(Base)称为基址寄存器。称为基址寄存器。8086/8088CPU8086/8088CPU中有两个基址寄存器中有两个基址寄存器BXBX和和BPBP。BXBX用来存放操作数在内存中数据段内的偏移地址,用来存放操作数在内存中数据段内的偏移地址,BPBP用来存放用来存放操作数在堆栈段内的偏移地址。操作数在堆栈段内的偏移地址。CXCXCX(Counter)CX(Counter)称为计数器。在设计循环程序时使用该寄存器存放循称为计数器。在设计循环程序时使用
29、该寄存器存放循环次数环次数CLCL变变量移位,循量移位,循环环控制控制DXDXDX(Data)DX(Data)称为数据寄存器。在称为数据寄存器。在寄存器间接寻址的寄存器间接寻址的I/OI/O指令中存放指令中存放I/OI/O端口地址端口地址;在做双字长乘除法运算时,;在做双字长乘除法运算时,DXDX与与AXAX一起存放一个双字长一起存放一个双字长操作数,其中操作数,其中DXDX存放高存放高1616位数。位数。19192.1 8086/80882.1 8086/8088微处理器微处理器MOV AL,41H;OUT DX,AL;MUL 50H;AL*50H-AXMUL 2030H;AX*2030H-
30、DX(h),AX(l)DIV SRC;AX/SRC;(AL)AX/SRC;(AL)商商;(AH);(AH)余余 (AX)(DX:AX)/(src)(AX)(DX:AX)/(src)的商的商 (字除法字除法)(DX)(DX:AX)/(src)(DX)(DX:AX)/(src)的余数的余数LOOP;LOOP;ROR AX,CLROR AX,CL20202.1 8086/80882.1 8086/8088微处理器微处理器n地址指针寄存器地址指针寄存器SPSP、BPBPSP(Stack Pointer)SP(Stack Pointer)称为堆栈指针寄存器称为堆栈指针寄存器。在使用堆栈操作指令。在使用堆
31、栈操作指令(PUSH(PUSH或或POP)POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将会自动将SPSP的内容减的内容减2 2或加或加2 2,以使其始终指向栈顶。,以使其始终指向栈顶。BP(Base Pointer)BP(Base Pointer)称为基址寄存器称为基址寄存器。作为通用寄存器可以用来存放。作为通用寄存器可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。n变址寄存器变址寄存器SISI、DIDISI(Source Index)SI(So
32、urce Index)称为源变址寄存器。称为源变址寄存器。DI(Destination Index)DI(Destination Index)称为目的变址寄存器。称为目的变址寄存器。通常用在字符串操作时存放操作数的偏移地址,其中通常用在字符串操作时存放操作数的偏移地址,其中SISI存放源串在数存放源串在数据段内的偏移地址,据段内的偏移地址,DIDI存放目的串在附加数据段内的偏移地址。存放目的串在附加数据段内的偏移地址。21212.1 8086/80882.1 8086/8088微处理器微处理器n标志寄存器(标志寄存器(FRFR)FLAGSFLAGSFLAGSFLAGS称为标志寄存器,为一个称为
33、标志寄存器,为一个1616位的寄存器,但只用了其中位的寄存器,但只用了其中9 9位,包位,包括括6 6个状态标志位,个状态标志位,3 3个控制标志位。个控制标志位。状态标志位:状态标志位:用来反映算术和逻辑运算结果的一些特征。如结果是否为用来反映算术和逻辑运算结果的一些特征。如结果是否为“0”0”,是否有进位、借位、溢出等。不同指令对状态标志位的影响是不,是否有进位、借位、溢出等。不同指令对状态标志位的影响是不同的。同的。控制标志位控制标志位:用来控制:用来控制CPUCPU的操作,由程序设置或清除。的操作,由程序设置或清除。CFCFPFPFAFAFZFZFSFSFTFTFIFIFDFDFOFO
34、F0 01 12 23 34 45 56 67 78 89 9101011111212131314141515控制标志位:控制标志位:TFTF、IFIF、DFDF状态标志位:状态标志位:CFCF、PFPF、AFAF、ZFZF、SFSF、OFOF22222.1 8086/80882.1 8086/8088微处理器微处理器CFCFPFPFAFAFZFZFSFSFTFTFIFIFDFDFOFOF0 01 12 23 34 45 56 67 78 89 9101011111212131314141515名称名称符号符号功能功能进位标志进位标志CFCF做加法时最高位出现进位或做减法时最高位出现借位,该位
35、置做加法时最高位出现进位或做减法时最高位出现借位,该位置1 1,反,反之为之为0 0,用来判断无符号数是否溢出。,用来判断无符号数是否溢出。奇偶标志奇偶标志PFPF运算结果的低运算结果的低8 8位中位中1 1的个数为偶数时,则该位置的个数为偶数时,则该位置1 1,反之为,反之为0 0辅助进位标志辅助进位标志AFAF加法时第加法时第3 3位往第位往第4 4位有进位,或者减法时,第位有进位,或者减法时,第3 3位往第位往第4 4位有借位。位有借位。一般在一般在BCDBCD码运算中作为是否进行十进制调整的判据码运算中作为是否进行十进制调整的判据零标志零标志ZFZF运算结果为运算结果为0 0时,该标志
36、位置时,该标志位置1 1,否则清,否则清0 0符号标志符号标志SFSF与运算结果的最高位相同,当数据用补码表示时,负数的最高位为与运算结果的最高位相同,当数据用补码表示时,负数的最高位为1 1,所以,所以,SFSF表示运算结果是正还是负。表示运算结果是正还是负。跟踪标志跟踪标志TFTF当该位置当该位置1 1时,进入单步工作方式,通常用于程序的调试。时,进入单步工作方式,通常用于程序的调试。中断标志中断标志IFIF若用若用STISTI指令将该位置指令将该位置1 1,则,则CPUCPU可以响应从可以响应从INTRINTR引脚引入的可屏蔽引脚引入的可屏蔽中断请求;若用中断请求;若用CLICLI指令将
37、指令将IFIF清清0 0,则禁止,则禁止CPUCPU接受可屏蔽中断请求接受可屏蔽中断请求信号;信号;IFIF的状态对非屏蔽中断及内部中断没有影响。的状态对非屏蔽中断及内部中断没有影响。方向标志方向标志DFDF若该位用若该位用STDSTD置置1 1,则串操作指令的地址不断减值;反之,若该位用,则串操作指令的地址不断减值;反之,若该位用CLDCLD清零,则串操作指令的地址不断增值。清零,则串操作指令的地址不断增值。溢出标志溢出标志OFOF运算结果是否超出了运算结果是否超出了8 8位(位(-128127-128127)或)或1616位(位(-3276832767-3276832767)带符号数所能表
38、达的范围,溢出为带符号数所能表达的范围,溢出为1 1,用来判断带符号数是否溢出。,用来判断带符号数是否溢出。23232.1 8086/80882.1 8086/8088微处理器微处理器n例(标志寄存器)例(标志寄存器)例A:设变量x=11101111B,y=11001000B,问执行x+y 操作后标志寄存器中各状态位的状态如何?11101111+)11001000自动丢失1 10110111BF=1CF=1状态位状态位执行执行x x+y y后后CFCF 高高 位位 向向 前前 有有 进位,进位,CF=1CF=1PFPF低低8 8位中位中1 1的个数为偶数的个数为偶数(6)(6),PF=1PF=
39、1AFAF低低4 4 位向前有进位,位向前有进位,AF=1AF=1ZFZF计算结果不为计算结果不为 0 0,ZF=0ZF=0SFSF最高位为最高位为1 1,SF=1SF=1OFOFCF CF BF=0 BF=0,没,没 有有 溢出,溢出,OF=0OF=0异或24242.1 8086/80882.1 8086/8088微处理器微处理器例B:设变量X=0B,Y=B,问执行X+Y 操作后标志寄存器中各状态位的状态如何?n例(标志寄存器)例(标志寄存器)25252.1 8086/80882.1 8086/8088微处理器微处理器8086/80888086/8088寄存器结构寄存器结构26262.1 8
40、086/80882.1 8086/8088微处理器微处理器n8088CPU8088CPU与8086CPU8086CPU的异同8088CPU8088CPU内部结构与内部结构与80868086基本相似,两者的执行单元基本相似,两者的执行单元EUEU完全相同,完全相同,其指令系统,寻址方式及程序设计方法都相同,所以两种其指令系统,寻址方式及程序设计方法都相同,所以两种CPUCPU完全兼完全兼容。容。8088CPU8088CPU与与8086CPU8086CPU区别仅在于总线接口单元区别仅在于总线接口单元 BIUBIU,归纳起来主要,归纳起来主要差异如下:差异如下:1)外部数据总线位数不同。8086外部
41、数据总线16位,在一个总线周期内可以输入/输出一个字(16位数据),而8088外部数据总线8位,在一个总线周期内只能输入/输出一个字节(8位数据)。2)指令队列缓冲器大小不同。8086指令队列可容纳6个字节,且在每一个总线周期中从存储器取出2个字节的指令代码填入指令队列;而8088指令队列只能容纳4个字节,在一个机器周期中取出一个字节的指令代码送指令队列。3)部分引脚的功能定义有所区别。27272.1 8086/80882.1 8086/8088微处理器微处理器n2.1.2 80862.1.2 8086总线周期概念总线周期概念8086/8088CPU在与存储器或I/O端口交换数据时需要启动一个
42、总线周期。按照数据的传送方向来分,总线周期可分为“读”总线周期(CPU从存储器或I/O端口读取数据)和“写”总线周期(CPU将数据写入存储器或I/O端口)。8086CPU8086CPU基本的总线周期由基本的总线周期由4 4个时钟周期组成个时钟周期组成时钟周期时钟周期是是CPUCPU的基本时间计量单位,由的基本时间计量单位,由CPUCPU主频决定,如主频决定,如80868086的的主频为主频为5MHz5MHz,1 1个时钟周期就是个时钟周期就是200ns200ns。一个时钟周期又称为一个一个时钟周期又称为一个T T状态,因此基本总线周期用状态,因此基本总线周期用T1T1、T2T2、T3T3、T4
43、T4表示。表示。在在T1T1状态状态CPUCPU把要读把要读/写的存储单元的地址或写的存储单元的地址或I/OI/O端口的地址放到地端口的地址放到地址总线上。址总线上。28282.1 8086/80882.1 8086/8088微处理器微处理器n2.1.2 80862.1.2 8086总线周期概念总线周期概念若是若是“写写”总线周期总线周期,CPUCPU从从T2T2起到起到T4T4,把数据送,把数据送到总线上,并写入存储器单元或到总线上,并写入存储器单元或I/OI/O端口;端口;若是若是“读读”总线周期总线周期,CPUCPU则从则从T3T3起到起到T4T4从总线上从总线上接收数据,接收数据,T2
44、T2状态时总线浮空,允许状态时总线浮空,允许CPUCPU有个缓冲时有个缓冲时间把输出地址的写方式转换成输入数据的读方式。间把输出地址的写方式转换成输入数据的读方式。29292.1 8086/80882.1 8086/8088微处理器微处理器指令周期:指令周期:一条指令从其代码被从内存单元中取出到其所规定的操作执一条指令从其代码被从内存单元中取出到其所规定的操作执行完毕,所用的时间,称为相应指令的指令周期。行完毕,所用的时间,称为相应指令的指令周期。总线周期总线周期:是指是指CPUCPU与存储器或外设进行一次数据传送所需要的时间。与存储器或外设进行一次数据传送所需要的时间。时钟周期:时钟周期:又
45、称为又称为T T状态,是一个时钟脉冲的重复周期,是状态,是一个时钟脉冲的重复周期,是CPUCPU处理动作处理动作的基本时间单位。它是由主频来确定,如的基本时间单位。它是由主频来确定,如80868086的主频为的主频为5MHz5MHz,则一个,则一个时钟周期为时钟周期为200ns200ns。等待周期等待周期:是在一个总线周期的是在一个总线周期的T T3 3和和T T4 4之间,之间,CPUCPU根据根据ReadyReady信号来确定信号来确定是否插入是否插入T TWW,插入几个,插入几个T TWW。空闲周期:空闲周期:是指在二个总线周期之间的时间间隔是指在二个总线周期之间的时间间隔(总线处在空闲
46、状态总线处在空闲状态)。若为若为3 3个时钟周期,则空闲周期为个时钟周期,则空闲周期为3 3个个T Ti i。时钟周期时钟周期(T)(T)作为基本时间单位,一个等待周期作为基本时间单位,一个等待周期T TWW=T=T;一个空闲周期;一个空闲周期T Ti i=T=T;一个总线周期通常由四个;一个总线周期通常由四个T T组成,分别称为组成,分别称为T T1 1T T2 2 T T3 3 T T4 4 ;一个指令;一个指令周期由一到几个总线周期组成。周期由一到几个总线周期组成。n2.1.2 80862.1.2 8086总线周期概念总线周期概念30302.1 8086/80882.1 8086/808
47、8微处理器微处理器具有空闲状态的总线周期具有空闲状态的总线周期T1状态,发地址信息;状态,发地址信息;T2状态,总线的高状态,总线的高4位输出状态信息;位输出状态信息;T3状态,高状态,高4位状态信息,低位状态信息,低16位数据信息;位数据信息;T3之后,可能插入之后,可能插入TW;在在T4状态,结束。状态,结束。只有在只有在CPUCPU和内存或和内存或I/OI/O接口之间传输数据,以及填充指令队列时,接口之间传输数据,以及填充指令队列时,CPUCPU才执行才执行总线周期。总线周期。可见,如果在一个总线周期之后,不立即执行下一个总线周期,即可见,如果在一个总线周期之后,不立即执行下一个总线周期
48、,即CPU此时执行的指令不需要对存储器或此时执行的指令不需要对存储器或I/O端口进行访问,且目前指令队列满而端口进行访问,且目前指令队列满而不需要到内存中读指令,那么系统总线就处于空闲状态,执行空闲周期不需要到内存中读指令,那么系统总线就处于空闲状态,执行空闲周期TI。31312.1 8086/80882.1 8086/8088微处理器微处理器n总线空闲周期的状态总线空闲周期的状态在空闲周期中可包括一个或多个时钟周期,在这期间,在高在空闲周期中可包括一个或多个时钟周期,在这期间,在高4 4位的总位的总线上,线上,CPUCPU仍驱动前一个总线周期的状态信息;而在低仍驱动前一个总线周期的状态信息;
49、而在低1616位的总线上,位的总线上,则根据前一个总线周期是读还是写周期来决定。则根据前一个总线周期是读还是写周期来决定。1 1)若前一个周期为写周期,)若前一个周期为写周期,CPUCPU会在总线的低会在总线的低1616位继续驱动位继续驱动数据信息;数据信息;2 2)若前一个总线周期为读周期,)若前一个总线周期为读周期,CPUCPU则使总线的低则使总线的低1616位处于位处于浮空状态。浮空状态。在空闲周期,尽管在空闲周期,尽管CPUCPU对总线进行空操作对总线进行空操作,但在,但在CPUCPU内部,仍然进行内部,仍然进行着有效的操作,如执行某个运算、在内部寄存器之间传送数据等。着有效的操作,如
50、执行某个运算、在内部寄存器之间传送数据等。32322.1 8086/80882.1 8086/8088微处理器微处理器n具有等待状态的总线周期具有等待状态的总线周期在总线周期的在总线周期的T3T3状态结束之前,状态结束之前,CPUCPU测试测试READYREADY信号线,如果为有信号线,如果为有效的高电平,则说明数据已准备好,可进入效的高电平,则说明数据已准备好,可进入T4T4状态;若状态;若READYREADY为低为低电平,则说明数据没有准备好,电平,则说明数据没有准备好,CPUCPU在在T3T3之后插入之后插入1 1个或多个等待周个或多个等待周期期T TWW,直到检测到,直到检测到READ