微处理器及指令系统.ppt_第1页
微处理器及指令系统.ppt_第2页
微处理器及指令系统.ppt_第3页
微处理器及指令系统.ppt_第4页
微处理器及指令系统.ppt_第5页
已阅读5页,还剩271页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第二章:x86 微处理器,2,第二章: x86微处理器,2.1 8086/8088微处理器 2.2 8086/8088存储器和I/O组织 2.3 8086/8088中断系统 2.4 8086/8088指令系统 2.5 x86系列CPU的技术发展,3,8086/8088微处理器的结构。 8086微处理器的结构。 8086/8088微处理器的寄存器结构 8086/8088系统中的存储器分段与物理地址的形成。 8086/8088微处理器的引脚功能和相关知识,达到“综合应用”层次。 8086/8088 CPU的引脚信号和工作模式 。 8086/8088两种工作方式最小方式与最大方式的区别。 最小模式的典型配置 8086/8088微处理器的总线时序。 三种周期指令周期、总线周期和时钟周期的区别及联系。 中断类型码,中断向量,中断子程序入口地址之间的联系 最小方式下的总线读/写操作时序,最小方式下的总线请求/保持 三态,2.1 8086/8088微处理器,本 节 要 点,4,8086/8088微处理器是Intel公司推出的第三代CPU芯片,它们的内部结构基本相同,都采用16位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的40脚双列直插组件中。,2.1.0 8086与8088,2.1 8086/8088微处理器,5,2.1 8086/8088微处理器,要了解一个CPU的工作性能和使用方法,首先应该了解其功能结构(是指从程序员和使用者的角度看到的结构,亦可称为编程结构)。从功能上来看,8086CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。,2.1.1 8086与8088微处理器的编程结构,6,2.1 8086/8088微处理器,总线接口部件(BIU),总线接口单元BIU的功能是负责完成CPU与存储器或I/O设备之间的数据传送。具体任务是:, 指令队列出现空字节(8088CPU 1个空字节,8086CPU2个空字节)时,从内存取出后续指令。BIU取指令时,并不影响EU的执行,两者并行工作,大大提高了CPU的执行速度。 EU需要从内存或外设端口读取操作数时,根据EU给出的地址从内存或外设端口读取数据供EU使用。 EU的运算结果、数据或控制命令等由BIU送往指定的内存单元或外设端口。,7,2.1 8086/8088微处理器,总线接口部件的组成,4个16位段寄存器: 包括代码段寄存器CS (Code Segment)、数据段寄存器DS(Data Segment)、堆栈段寄存器SS (Stack Segment)和附加数据段寄存器ES (Extra Segment); 1个16位的指令指针寄存器IP (Instruction Pointer); 1个20位地址加法器; 6字节指令队列缓冲器; 1个与EU通讯的内部寄存器; 总线控制电路等。,8,2.1 8086/8088微处理器,段寄存器,8086CPU的地址引脚有20根,能提供20位的地址信息,可直接对1M个存储单元进行访问,但CPU内部可用来提供地址信息的寄存器都是16位的,为了用16位寄存器实现20位地址的寻址,8086/8088采用了段结构的内存管理的方法。 将指令代码和数据分别存储在代码段、数据段、堆栈段、附加数据段中,这些段的段地址分别由段寄存器CS、DS、SS、ES提供,而代码或数据在段内的偏移地址则由有关寄存器或立即数给出。,9,2.1 8086/8088微处理器,代码段寄存器CS存储程序当前使用的代码段的段地址。代码段用来存放程序的指令代码。下一条要读取指令在代码段中的偏移地址由指令指针寄存器IP提供; 数据段寄存器DS用来存放程序当前使用的数据段的段地址。一般来说,程序中所用到的原始数据、中间结果以及最终结果都存放在数据段中,如果程序中使用了字符串处理指令,则源字符串也存放在数据段中; 堆栈段寄存器SS用来存放程序当前所使用的堆栈段的段地址。堆栈是在存储器中开辟的一个特定区域; 附加数据段寄存器ES用来存放程序当前使用的附加数据段的段地址。附加数据段通常用于存放字符串操作时的目的字符串。,段寄存器,10,2.1 8086/8088微处理器,段寄存器,8086/8088段寄存器与提供段内偏移地址的寄存器之间的默认组合,11,2.1 8086/8088微处理器,指令指针寄存器IP,指令指针寄存器IP用来存放下一条要读取的指令在代码段中的偏移地址。IP在程序运行中能自动加1修正,从而使其始终存放的是下一条要读取的指令在代码段的偏移地址。 由于CS和IP的内容决定了程序的执行顺序,因此程序员不能直接用赋值指令对其内容进行修改。 有些指令能使IP和CS的值改变(如跳转指令)或使其值压入堆栈或从堆栈中弹出恢复原值(如子程序调用指令和返回指令),12,2.1 8086/8088微处理器,20位地址加法器,8086/8088系统中存储器按字节编址,可寻址1M字节,由于1M字节是2的20次方,因此,每个字节所对应的地址应是20位,这20位的地址称为物理地址/绝对地址,物理地址由逻辑地址变换而来 ;逻辑地址由段基址和偏移地址两部分构成,段基址和偏移地址都是无符号的16位二进制数。段基址存放在段寄存器中,偏移地址存放在IP或者SP中。 CPU提供的用来对存储单元进行访问的20位地址是由BIU中的地址加法器产生的。,物理地址=段基址X16+偏移地址,例如: CS=2000H,指令指针寄存器存放的是偏移地址IP=2200H,存储器的物理地址为20000H+2200H=22200H。,13,2.1 8086/8088微处理器,指令队列缓冲器,8086的指令队列有6个字节,8088的指令队列有4个字节。对8086而言,当指令队列出现2个空字节,对8088而言,指令队列出现1个空字节时,BIU就自动执行一次取指令周期,将下一条要执行的指令从内存单元读入指令队列。它们采用“先进先出”原则,按顺序存放,并按顺序取到EU中去执行。 当EU执行一条需要到存储器或I/O端口读取操作数的指令时,BIU将在执行完现行取指令的存储器周期后的下一个存储周期,对指令所指定的存储单元或I/O端口进行访问,读取的操作数经BIU送EU进行处理。 当EU执行跳转、子程序调用或返回指令时,BIU就使指令队列复位,并从指令给出的新地址开始取指令,新取的第1条指令直接经指令队列送EU执行,随后取来的指令将填入指令队列缓冲器。,14,2.1 8086/8088微处理器,BIU和EU的动作协调原则 BIU和EU按以下流水线技术原则协调工作,共同完成所要求的任务: 每当8086的指令队列中有两个空字节,BIU就会自动把指令取到指令队列中。其取指的顺序是按指令在程序中出现的前后顺序。 每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者IO端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者IO端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求。 当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态。 在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。,15,2.1 8086/8088微处理器,BIU和EU的动作协调原则 指令队列的引入使得EU和BIU可并行工作,即BIU在读指令时,并不影响EU单元执行指令,EU单元可以连续不断地直接从指令队列中取到要执行的指令代码,从而减少了CPU为取指令而等待的时间,提高了CPU的利用率,加快了整机的运行速度。 指令队列可以被看成是一个特殊的RAM,它的工作原理是“先进先出”,写入的指令只能存放在队列尾,读出的指令是队列头存放的指令。EU和BIU之间就是通过指令队列协调工作。,16,2.1 8086/8088微处理器,执行单元EU,执行单元EU不与系统外部直接相连,它的功能只是负责执行指令。执行的指令从BIU的指令队列缓冲器中直接得到,执行指令时若需要从存储器或I/O端口读取操作数时,由EU向BIU发出请求,再由BIU对存储器或I/O端口进行访问。EU由下列部件组成:,1) 16位算术逻辑单元(ALU):进行算术和逻辑运算; 2) 16位标志寄存器(FR)FLAGS:存放运算的状态特征和控制标志; 3)数据暂存寄存器:协助ALU完成运算,暂存参加运算的数据;,17,4)四个通用寄存器:4个16位数据寄存器(AX、BX、CX、DX) 5)四个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI; 6) EU控制电路:控制、定时与状态逻辑电路,接收从BIU指令队列取来的指令,经过指令译码形成各种定时控制信号,对EU的各个部件实现特定的定时操作.,2.1 8086/8088微处理器,18,2.1 8086/8088微处理器,通用寄存器AX、BX、CX、DX,数据寄存器一般用于存放参与运算的操作数或运算结果。每个数据寄存器都是16位的,但又可将高、低8位分别作为两个独立的8位寄存器来用。高8位分别记作AH、BH、CH、DH,低8位分别记作AL,BL,CL,DL。例如AX可当作两个8位寄存器AH、AL使用。 8086/8088 CPU的14个寄存器除了这4个16位寄存器能分别当作两个8位寄存器来用之外,其它寄存器都不能如此使用。,19,2.1 8086/8088微处理器,通用寄存器AX、BX、CX、DX,20,2.1 8086/8088微处理器,MOV AL,41H; OUT DX,AL; MUL 50H;AL*50H-AX MUL 2030H; AX*2030H-DX(h),AX(l) DIV SRC; AX/SRC; (AL)商; (AH)余 (AX)(DX:AX)/(src)的商 (字除法) (DX)(DX:AX)/(src)的余数 LOOP; ROR AX,CL,21,2.1 8086/8088微处理器,地址指针寄存器SP、BP SP (Stack Pointer)称为堆栈指针寄存器。在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时,每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。 BP (Base Pointer)称为基址寄存器。作为通用寄存器可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。 变址寄存器SI、DI SI (Source Index)称为源变址寄存器。 DI (Destination Index)称为目的变址寄存器。 通常用在字符串操作时存放操作数的偏移地址,其中SI存放源串在数据段内的偏移地址,DI存放目的串在附加数据段内的偏移地址。,22,2.1 8086/8088微处理器,标志寄存器(FR)FLAGS FLAGS称为标志寄存器,为一个16位的寄存器,但只用了其中9位,包括6个状态标志位,3个控制标志位。 状态标志位:用来反映算术和逻辑运算结果的一些特征。如结果是否为“0”,是否有进位、借位、溢出等。不同指令对状态标志位的影响是不同的。 控制标志位:用来控制CPU的操作,由程序设置或清除。,控制标志位:TF、IF、DF 状态标志位:CF、PF、AF、ZF、SF、OF,23,2.1 8086/8088微处理器,24,2.1 8086/8088微处理器,例(标志寄存器),例A:设变量 x=11101111B, y=11001000B, 问执行x+y 操作后标志寄存 器中各状态位的状态如何? 11101111 +) 11001000,自动丢失,1 10110111 BF=1 CF=1,异或,25,2.1 8086/8088微处理器,例B:设变量 X=0101101000001010B, Y=0100110010100011B, 问执行X+Y 操作后标志寄存 器中各状态位的状态如何?,例(标志寄存器),26,2.1 8086/8088微处理器,8086/8088寄存器结构,27,2.1 8086/8088微处理器,8088CPU与8086CPU的异同,8088CPU内部结构与8086基本相似,两者的执行单元EU完全相同,其指令系统,寻址方式及程序设计方法都相同,所以两种CPU完全兼容。 8088CPU与8086CPU区别仅在于总线接口单元 BIU,归纳起来主要差异如下: 1)外部数据总线位数不同。8086外部数据总线16位,在一个总线周期内可以输入/输出一个字(16位数据),而8088外部数据总线8位,在一个总线周期内只能输入/输出一个字节(8位数据)。 2)指令队列缓冲器大小不同。8086指令队列可容纳6个字节,且在每一个总线周期中从存储器取出2个字节的指令代码填入指令队列;而8088指令队列只能容纳4个字节,在一个机器周期中取出一个字节的指令代码送指令队列。 3)部分引脚的功能定义有所区别。,28,2.1 8086/8088微处理器,2.1.2 8086总线周期概念,8086/8088CPU在与存储器或I/O端口交换数据时需要启动一个总线周期。按照数据的传送方向来分,总线周期可分为“读”总线周期(CPU从存储器或I/O端口读取数据)和“写”总线周期(CPU将数据写入存储器或I/O端口)。,8086CPU基本的总线周期由4个时钟周期组成,时钟周期是CPU的基本时间计量单位,由CPU主频决定,如8086的主频为5MHz,1个时钟周期就是200ns。 一个时钟周期又称为一个T状态,因此基本总线周期用T1、T2、T3、T4表示。 在T1状态CPU把要读/写的存储单元的地址或I/O端口的地址放到地址总线上。,29,2.1 8086/8088微处理器,2.1.2 8086总线周期概念,若是“写”总线周期,CPU从T2起到T4,把数据送到总线上,并写入存储器单元或I/O端口; 若是“读”总线周期,CPU则从T3起到T4从总线上接收数据,T2状态时总线浮空,允许CPU有个缓冲时间把输出地址的写方式转换成输入数据的读方式。,30,2.1 8086/8088微处理器,指令周期:一条指令从其代码被从内存单元中取出到其所规定的操作执行完毕,所用的时间,称为相应指令的指令周期。 总线周期:是指CPU与存储器或外设进行一次数据传送所需要的时间。 时钟周期:又称为T状态,是一个时钟脉冲的重复周期,是CPU处理动作的基本时间单位。它是由主频来确定,如8086的主频为5MHz,则一个时钟周期为200ns。 等待周期:是在一个总线周期的T3和T4之间,CPU根据Ready信号来确定是否插入TW,插入几个TW。 空闲周期:是指在二个总线周期之间的时间间隔(总线处在空闲状态)。若为3个时钟周期,则空闲周期为3个Ti。 时钟周期(T)作为基本时间单位,一个等待周期TW=T;一个空闲周期 Ti=T;一个总线周期通常由四个T组成,分别称为T1T2 T3 T4 ;一个指令周期由一到几个总线周期组成。,2.1.2 8086总线周期概念,31,2.1 8086/8088微处理器,具有空闲状态的总线周期 T1状态,发地址信息; T2状态,总线的高4位输出状态信息; T3状态,高4位状态信息,低16位数据信息; T3之后,可能插入TW; 在T4状态,结束。,只有在CPU和内存或I/O接口之间传输数据,以及填充指令队列时,CPU才执行总线周期。可见,如果在一个总线周期之后,不立即执行下一个总线周期,即CPU此时执行的指令不需要对存储器或I/O端口进行访问,且目前指令队列满而不需要到内存中读指令,那么系统总线就处于空闲状态,执行空闲周期TI。,32,2.1 8086/8088微处理器,总线空闲周期的状态,在空闲周期中可包括一个或多个时钟周期,在这期间,在高4位的总线上,CPU仍驱动前一个总线周期的状态信息;而在低16位的总线上,则根据前一个总线周期是读还是写周期来决定。 1)若前一个周期为写周期,CPU会在总线的低16位继续驱动数据信息; 2)若前一个总线周期为读周期,CPU则使总线的低16位处于浮空状态。 在空闲周期,尽管CPU对总线进行空操作,但在CPU内部,仍然进行着有效的操作,如执行某个运算、在内部寄存器之间传送数据等。,33,2.1 8086/8088微处理器,具有等待状态的总线周期,在总线周期的T3状态结束之前,CPU测试READY信号线,如果为有效的高电平,则说明数据已准备好,可进入T4状态;若READY为低电平,则说明数据没有准备好,CPU在T3之后插入1个或多个等待周期TW,直到检测到READY为有效高电平后,CPU会自动脱离TW而进入T4状态。 通过这种延长总线周期的措施允许系统使用低速的存储器芯片。,34,2.1 8086/8088微处理器,2.1.3 8086/8088引脚信号及其功能,35,2.1 8086/8088微处理器,2.1.3 8086/8088引脚信号及其功能,36,2.1 8086/8088微处理器,8086/8088芯片的引脚包括20根地址线,16根(8086)或8根(8088)数据线以及控制线、状态线、电源线和地线等; 若每个引脚只传送一种信息,那么芯片的引脚将会太多,不利于芯片的封装,因此,8086/8088CPU的部分引脚定义了双重功能。 例如:,第33引脚MN/-MX上电平的高低决定CPU两种不同的工作方式(最大工作方式和最小工作方式),而第31到24引脚在CPU两种不同的工作方式时具有不同的名称和定义; 引脚9到16(8088CPU)及引脚2到16和39(8086CPU)采用了地址/数据分时复用技术,即在不同的时刻分别传送地址或数据信息等。,8086CPU引脚按功能可分为三大类:电源线和地线,地址/数据引脚以及控制引脚。,37,2.1 8086/8088微处理器,电源线和地线,电源线VCC 第40引脚,输入,接入单一+5V电源。 地线GND 引脚1和20,输入,两条地线均应接地。,38,2.1 8086/8088微处理器,地址/数据(状态)引脚,30,2,地址/数据分时复用引脚AD15AD0(Address/ Data),引脚39及引脚216,传送地址时单向输出,传送数据时双向输入或输出。分时输出 低16位地址信号及进行数据信号的输入/输出,地址/状态分时复用引脚A19/S6A16/S3(Address /Status),引脚3538,输出、三态总线,采用分时输出,即在T1状态作地址线用,T2T4状态输出状态信息。当访问存储器时,T1状态输出A19A15,与AD15AD0一起构成访问存储器的20位物理地址;CPU访问I/O端口时,不使用这4个引脚,A19A16保持为0。,39,2.1 8086/8088微处理器,地址/数据(状态)引脚,30,2,状态信息:,S6,为0用来表示8086CPU 当前与总线相连,所以在T2T4状态,S6总为0,以表示CPU当前连在总线上; S5,表示中断允许标志位IF的当前设置,IF=1时,S5为1,否则为0; S4S3,用来指示当前正在使用哪个段寄存器。,40,2.1 8086/8088微处理器,控制引脚,30,2,NMI (Non-Maskable Interrupt ),INTR (Interrupt Request) :,引脚17,非屏蔽中断请求信号,输入,上升沿触发。 此请求不受标志寄存器FLAGS中中断允许标志位IF状态的影响,只要此信号一出现,在当前指令执行结束后立即进行中断处理。,引脚18,可屏蔽中断请求信号,输入,高电平有效 CPU在每个指令周期的最后一个时钟周期检测该信号是否有效,若此信号有效,表明有外设提出了中断请求,这时若IF=1,则当前指令执行完后立即响应中断;若IF=0,则中断被屏蔽,外设发出的中断请求将不被响应。程序员可通过指令STI或CLI将IF标志位置1或清零。,41,2.1 8086/8088微处理器,控制引脚,30,2,CLK (Clock),引脚19,系统时钟 时钟信号输入引脚,时钟信号的方波信号,占空比约为33%,即1/3周期为高电平,2/3周期为低电平。,RESET,引脚21,复位信号输入引脚,高电平有效; 复位信号使处理器马上结束现行操作,对内部寄存器进行初始化。 8086/8088要求复位脉冲宽度不得小于4个时钟周期。 复位后,内部寄存器处于初始默认状态。,42,2.1 8086/8088微处理器,30,2,READY 引脚22,数据“准备好(就绪)”信号线,输入引脚。是所寻址的存储器或I/O端口发来的数据准备就绪信号,高电平有效。该信号是协调CPU与内存单元或I/O端口之间进行信息传送的联络信号。 CPU在每个总线周期的T3状态对READY引脚采样,若为高电平,说明数据已准备好;若为低电平,说明数据还没有准备好,CPU在T3状态之后自动插入一个或几个等待状态TW,直到READY变为高电平,才能进入T4状态,完成数据传送过程,从而结束当前总线周期。 -TEST 引脚23,等待测试信号,输入引脚,低电平有效。 当CPU执行WAIT指令时,每隔5个时钟周期对 -TEST 引脚进行一次测试。若为高电平,CPU就仍处于空转状态进行等待,直到 -TEST 引脚变为低电平,CPU结束等待状态,执行下一条指令,以使CPU与外部硬件同步。,控制引脚,43,2.1 8086/8088微处理器,控制引脚,30,-RD (Read) 引脚32,读控制信号,输出 当 -RD =0时,表示将要执行一个对存储器或 I/O 端口的读操作。到底是从存储单元还是从 I/O 端口读取数据,取决于M/-IO (8086)或IO/-M (8088)信号。,-BHE/S7(Bus High Enable / Status) 引脚34,高8位数据总线允许/状态复用引脚,输出 在总线周期的T1状态时输出-BHE ,当该引脚输出为低电平时,表示当前数据总线上高8位数据有效。该引脚和地址引脚A0配合表示当前数据总线的使用情况。 在总线周期的T2及其以后的状态时,输出状态信号S7 。,8088的34引脚 定义为-SS0, 用来与28脚 -M/IO和27脚 DT/-R组合,决定当前总线周期的操作,44,2.1 8086/8088微处理器,控制引脚,30,引脚33,最小/最大方式控制信号,输入 MN/-MX引脚接高电平时,8086/8088 CPU工作在最小方式,在此方式下,全部控制信号由CPU提供; MN/-MX引脚接低电平时,8086/8088工作在最大方式,这时,CPU发出的控制信号经8288总线控制器进行变换和组合,从而使总线的控制功能更加完善。 第2431引脚的功能定义在最小方式下和最大方式下是不同的。,MN/-MX (Minimum/Maximum mode control),45,2.1 8086/8088微处理器,30,控制引脚,-INTA (Interrupt Acknowledge) 1)最小方式引脚24,中断响应信号,输出; 2)用于对外设的中断请求(经INTR引脚送入CPU)作出响应。 3)-INTA实际上是两个连续的负脉冲信号,第一个负脉冲通 知外设接口,它发出的中断请求已被允许;外设接口接到 第2个负脉冲后,将中断类型号放到数据总线上,以便 CPU根据中断类型号到内存的中断向量表中找出对应中断 的中断服务程序入口地址,从而转去执行中断服务程序。 ALE (Address Latch Enable) 1)最小方式引脚25,地址锁存允许信号,输出; 2)是8086/8088提供给地址锁存器的控制信号,高电平有 效。在任何一个总线周期的T1状态,ALE均为高电平,以 表示当前地址/数据复用总线上输出的是地址信息,ALE 由高到低的下降沿把地址装入地址锁存器中。,46,2.1 8086/8088微处理器,中断向量和中断向量表,0段的0000-03FFH区域设置为一个中断向量表。每个中断向量占4个存储单元。其中,前两个单元存放中断子程序入口地址的偏移量(IP),低位在前,高位在后;后两个单元存放中断子程序入口地址的段地址(CS),也是低位在前,高位在后。,例如: 类型号为17H的中断处理子程序存放在2345:7890H开始的内存区域中。而17H中断对应的中断向量存放在0000:005CH处,所以,0段005CH、005DH、005EH和005FH这4个单元中的数值分别为:90H、78H、45H及23H。,17H=23D 23D*4=92D 92D=5CH,CS:IP= 2345:7890H,90H,78H,45H,23H,cs,IP,005CH,005DH,005EH,005FH,47,2.1 8086/8088微处理器,30,控制引脚,-DEN (Data Enable): 1)最小方式引脚26,数据允许信号,输出; 2)当使用数据总线收发器时(例如使用8286/8287),该信号为收发器的OE端提供了一个控制信号,用于决定是否允许数据通过数据总线收发器。-DEN为高电平时,收发器在收或发两个方向上都不能传送数据,当-DEN为低电平时,允许数据通过数据总线收发器。 DT/-R (Data Transmit/Receive): 1)最小方式引脚27,数据发送/接收信号,输出; 2)用来控制数据的传送方向。当其为高电平时,8086 CPU通过数据总线收发器进行数据发送;当其为低电平时,则进行数据接收。在DMA方式,它被浮置为高阻状态。,48,2.1 8086/8088微处理器,30,控制引脚,M/-IO (Memory/Input and Output): 1)最小方式引脚28,存储器/I/O端口控制信号,输出; 2)用来区分CPU是进行存储器访问还是I/O端口访问。当其为高电平时,表示CPU正在和存储器进行数据传送;如为低电平,表明CPU正在和输入/输出设备进行数据传送。在DMA方式,该引脚被浮置为高阻状态。 -WR (Write): 1)最小方式引脚29,写信号,输出; 2)-WR有效时,表示CPU当前正在进行存储器或I/O写操作,到底是哪一种写操作,取决于M/-IO信号。在DMA方 式,该引脚被浮置为高阻状态。,8088的28脚 不是M/-IO而 是-M/IO,49,2.1 8086/8088微处理器,30,控制引脚,HOLD (Hold request): 1)最小方式引脚31,总线保持请求信号,输入; 2)当8086/8088 CPU之外的总线主设备要求占用总线时,通 过该引脚向CPU发一个高电平的总线保持请求信号。 HLDA (Hold Acknowledge): 1)最小方式引脚30,总线保持响应信号,输出; 2)当CPU接收到HOLD信号后,这时如果CPU允许让出总 线,就在当前总线周期完成时,在T4状态发出高电平有效 的HLDA信号给以响应。此时,CPU让出总线使用权,发 出HOLD请求的总线主设备获得总线的控制权。(DMA操 作时使用该信号),50,2.1 8086/8088微处理器,控制引脚,30,QS1、QS0 (Instruction Queue Status) 1)最大方式引脚24、25。指令队列状态信号,输出; 2)QS1、QS0两个信号电平的不同组合指明了8086/8088内 部指令队列的状态,其代码组合对应的含义如下页表所 示。,51,2.1 8086/8088微处理器,控制引脚,30,-S2、-S1、-S0 (Bus Cycle Status) 1)最大方式引脚26、27、28,总线周期状态信号,输出; 2)低电平有效的三个状态信号,被连接到总线控制器8288的 输入端,8288对这些信号进行译码后产生内存及I/O端口 的读写控制信号。,52,2.1 8086/8088微处理器,30,控制引脚,-LOCK (Lock): 1)最大方式引脚29,总线封锁信号,输出; 2)当-LOCK为低电平时,系统中其他总线主设备就不能获得 总线的控制权而占用总线。 3)-LOCK信号由指令前缀LOCK产生,-LOCK指令后面的一 条指令执行完后,便撤消了LOCK信号。8086两个中断响 应脉冲之间,/LOCK信号有效。 4)在DMA期间,/LOCK被浮空而处于高阻状态。 -RQ/-GT1、-RQ/-GT0 (Request/Grant) 1)最大方式引脚30、31,总线请求信号(输入)/总线请求允许 信号(输出) 2)可供8086/8088以外的2个总线主设备向8086/8088发出使 用总线的请求信号RQ(相当于最小方式时的HOLD信号)。 而8086/8088在现行总线周期结束后让出总线,发出总线 请求允许信号GT(相当于最小方式的HLDA信号),此时, 外部总线主设备便获得了总线的控制权。其中-RQ /-GT0 比-RQ /-GT1的优先级高。,53,2.1 8086/8088微处理器,30,2.1.4 最小模式和最大模式,最小模式和最大模式的概念 最小模式:在计算机系统中只有8086或8088一个 微处理器; 最大模式:在中等规模或大型的8086/8088计算机系统中,总是包含有两个或多个微处理器。其中一个主处理器就是8088或8086,其他的处理器称为协处理器。 8087:数值运算协处理器; 8089:输入输出协处理器。,54,2.1 8086/8088微处理器,30,8086最小模式,当MN/-MX接高电平(+5V)时,系统工作于最小模式,适用于小规模的微机系统。,MN / MX,VCC(5 V),CLK READY RESET,ALE BHE A19 /S6,A16 /S3 AD15 /AD,0,VCC,数据收发器 8286 (2片),STB 地址锁存器 8282 (3片),OE,地址总线AB,8086 CPU DEN DT / R M / IO INTR INTA RD WR HOLD HLDA,数据总线DB 控制总线CB,8284A 时钟发生器 RDY,最小模式下的典型配置,等待状态 产生器,1片8284A作为时钟发生器,3片8282用作地址锁存器;2片8286作为总线收发器,增加数据总线的驱动能力。,地址锁存器8282:8位的,而8086系统采用20位地址。 STB是其选通端。OE为输出允许。,产生恒定时钟;对准备信号和复位信号同步,8286是8位的,8086用2片;8088用1片。,55,2.1 8086/8088微处理器,30,8086最大模式,当MN/-MX接低电平时,系统工作于最大方式,即多处理器方式。,DEN,S1,S 2,8086 CPU,5 V,CLK READY RESET,A16 /S3 AD15 /AD0,8284A 时钟发生器,VCC,等待状态 产生器,地址锁存器 8282,(3片),数据收发器,8286,(2片),OE,地址总线AB,数据总线DB,控制总线CB,S0 S1 S 2,8288 总线 控制器,S0,CLK,CEN,AEN,IOB MRDC MWTC AMWC IORC,IOWC AIOWC INTA,STB,BHE A19 /S6,1,T,OE,MN / MX,DT / R ALE,最大模式下,以CPU为核心的多处理器控制系统共用一条外部总线,因此需要增加总线控制器8288完成多处理器的分时控制。,8286是8位的,8086用2片;8088用两片。,T:引脚用来控制数据传输方向,三个状态信号,56,2.1 8086/8088微处理器,30,2.1.4 最小模式和最大模式,比较最大方式和最小方式系统结构图可以发现,最 大方式和最小方式有关地址总线和数据总线的电路 部分基本相同,即都需要地址锁存器及数据总线收 发器。而控制总线的电路部分有很大差别。,1)在最小工作方式下,控制信号可直接从8086/8088 CPU得到,不需要外加电路。 2)最大方式是多处理器工作方式,需要协调主处理器和协处理器的工作。因此,8086/8088的部分引脚需要重新定义,控制信号不能直接从8086/8088 CPU引脚得到,需要外加8288总线控制器,通过它对CPU发出的控制信号(-S0,-S1,-S2)进行变换和组合,以得到对存储器和I/O端口的读写控制信号和对地址锁存器8282及对总线收发器8286的控制信号,使总线的控制功能更加完善。,57,2.1 8086/8088微处理器,30,2.1.5 8086的操作和时序 8086CPU的主要操作 1)系统的复位和启动操作 2)暂停操作 3)总线操作 4)中断操作 5)最小方式下的总线保持 6)最大方式下的总线请求/允许,58,2.1 8086/8088微处理器,系统的复位和启动操作,复位动作由RESET引脚上的触发信号来执行; 动作时间,要求上电初次为至少50us,其它为4个以上时钟周期(10ns) 的高电平; 复位后,CPU就被启动恢复正常工作,即从FFFF0H处开始执行程序。 (CS=FFFFH;IP=0000H),当RESET接受到高电平之后的第一个时钟周的正跳变,8086进入内部reset阶段,再过一个时钟周,所有三态输出线设置成高阻状态。,59,2.1 8086/8088微处理器,总线操作,CPU与存储器、I/O端口进行数据读写过程,称为总线操作,8086CPU有以下五种总线操作: (1)最小方式下的总线读操作; (2)最小方式下的总线写操作; (3)最大方式下的总线读操作; (4)最大方式下的总线写操作; (5)总线空操作,60,2.1 8086/8088微处理器,最小方式下的总线读操作时序,一个基本的读操作周期包含四个状态,有时候外设速度较慢时,插入一个或几个等待状态。,当系统中有数据总线收发器时,要用到DT/-R和-DEN作为控制信号。前者数据传输方向;后者实现选通。,61,2.1 8086/8088微处理器,最小方式下的总线写操作时序,数据输出,62,2.1 8086/8088微处理器,最大方式下的总线读操作,63,2.1 8086/8088微处理器,最大方式下的总线写操作,64,2.1 8086/8088微处理器,中断操作和中断系统,1)8086可以处理256个不同的中断,每个对应一个类型码0255; 2)8086的中断分为硬件中断和软件中断两种; 3)硬件中断是通过外部硬件产生的,所以,也常把硬件中断称为外部中断。硬件中断分为两类:1)外部引脚NMI引起的非屏蔽中断;2)引脚INTR引起的可屏蔽中断。 4)软件中断是由CPU内部根据指令或软件设置产生的,也称为内部中断,如除数为“0”中断等。,8086的中断分类,65,非屏蔽中断请求 INT 2 NMI(17号引脚) 中断逻辑,硬件(外部)中断,软件(内部)中断,可屏蔽中断请求 中断类型号32255 INTR(18号引脚),中断指令 INT n N=32255,溢出中断 INTO INT 4,断点 中断 INT 3,单步中断 (TF=1) INT 1,除法 错误 INT 0,中断分类,&IF,66,2.1 8086/8088微处理器,中断向量和中断向量表,中断向量:中断服务子程序的入口地址,每个中断类型对应一个中断向量 中断向量表:存放256个中断向量的内存区域,位于内存0段的000003FFH空间(1K Byte),67,2.1 8086/8088微处理器,中断向量和中断向量表,0段的0000-03FFH区域设置为一个中断向量表。每个中断向量占4个存储单元。其中,前两个单元存放中断子程序入口地址的偏移量(IP),低位在前,高位在后;后两个单元存放中断子程序入口地址的段地址(CS),也是低位在前,高位在后。,例如: 类型号为17H的中断处理子程序入口地址(2345:7890H)。而17H中断对应的中断向量存放在0000:005CH处,所以,0段005CH、005DH、005EH和005FH这4个单元中的数值分别为:90H、78H、45H及23H。,17H=23D 23D*4=92D 92D=5CH,CS:IP= 2345:7890H,90H,78H,45H,23H,cs,IP,005CH,005DH,005EH,005FH,存放的内容是CS:IP(入口地址),68,2.1 8086/8088微处理器,可屏蔽硬件中断 -INTR的响应,给出第一个 -INTA,回应 INTR; 给出第二个 -INTA,从数据总线上读取中断类型码; 将标志寄存器的值推入堆栈; 把标志寄存器的中断允许标志IF和跟踪标志TF清零; 将断点保存到堆栈中; 根据开始时得到的中断类型码,到中断向量表中找到中断向量,再根据中断向量转入相应的中断服务子程序;,执行两个中断响应总线周期,中间间隔23个空闲状态,在第二个总线周期,通过低8位数据线接收中断类型码。,断点概念:响应中断时候,主程序当前指令下面的一条指令的地址。,69,2.1 8086/8088微处理器,不可屏蔽硬件中断NMI(掉电),中断类型码固定为2(中断处理子程序入口地址存放在0000段的0008H、0009H、000AH、000BH这四个单元),不需要另外提供类型码,软件中断,通过中断指令使CPU执行中断服务子程序的方法; 用一条指令进入中断服务子程序,中断类型码由指令提供 进入中断时,不需要执行中断响应总线周期 不受中断允许标志IF的影响 中断服务子程序执行过程中可以响应其他中断 软件中断没有随机性,断点概念:响应中断时候,主程序当前指令下面的一条指令的地址。,70,2.1 8086/8088微处理器,最小方式下的总线保持,8086CPU通过两个信号HOLD/HLDA的输入/输出配合,出让系统总线的控制权。,每个时钟周期的上升沿,CPU对HOLD引脚信号检测,如果是高电平且允许出让总线,那么在TI或T4之后的下一个时钟周期,CPU发HLDA信号。直到发总线请求的设备将HOLD变为低电平,CPU才收回总线控制权。出让总线后,地址/数据线、地址/状态线、图示控制信号引脚处于浮空。不过,ALE信号引脚不浮空。,71,2.1 8086/8088微处理器,最大方式下的总线请求/允许,最大方式下总线控制信号不再是HOLD、HDLA,而是将这两个引脚变成功能更加完善的两个双向信号引脚-RQ/-GT0和-RQ/-GT1,二者都称为总线请求/总线允许信号端,可以分别连接两个其他的总线主模块。 -RQ/-GT0比-RQ/-GT1的优先级要高。 总线操作不允许“嵌套”。 每次总线控制权改变后,总线上必须有一个谁都不使用的空闲周期,72,2.1 8086/8088微处理器,73,2.2 8086/8088存储器和I/O组织,2.2.1 8086/8088存储器组织 8086/8088存储空间 8086/8088有20条地址线,可直 接对1 M个存储单元进行访问。每 个存储单元存放一个字节型数 据,且每个存储单元都有一个20 位的地址,1 M个存储单元对应的 地址为00000HFFFFFH。,每个存储单元中存放的信息称为 该存储单元的内容。例如00001H 单元的内容为9FH,则记为: (00001H)=9FH。,78H 9FH 46H DFH 6CH 98H 65H,5EH A6H 66H 6FH,00000H 00001H 0011FH 00120H 00121H E8009H E800AH,E800BH E800CH E800DH FFFFFH,74,若存放的是字型数据(16位二进制数),则,将字的低位字节存放在低地址单元,高位 字节存放在高地址单元。例如从地址 0011FH开始的两个连续单元中存放一个 字型数据DF46H,则记为: (0011FH)=DF46H。 若存放的是双字型数据(32位二进制数,这 种数一般作为地址指针,其低位字是被寻 址地址的偏移量,高位字是被寻址地址所 在段的段地址),这种类型的数据要占用连 续的4个存储单元,同样,低字节存放在 低地址单元,高字节存放在高地址单元。 例如从地址E800AH开始的连续4个存储单 元中存放了一个双字型数据66A65E65H, 则记为:(E800AH)=66A65E65H。,2.2 8086/8088存储器和I/O组织,75,存储器的段结构 8086/8088 CPU中有关可用来存放地址的寄存器如 IP、SP等都是16位的,故只能直接寻址64 KB。为 了对1 M个存储单元进行管理,8086/8088采用了段 结构的存储器管理方法。 8086/8088将整个存储器分为许多逻辑段,每个逻 辑段的容量小于或等于64 KB,允许它们在整个存 储空间中浮动,各个逻辑段之间可以紧密相连,也 可以互相重叠。 用户编写的程序(包括指令代码和数据)被分别存储 在代码段、数据段、堆栈段和附加数据段中,这些 段的段地址分别存储在段寄存器CS、DS、SS和ES 中,而指令或数据在段内偏移地址可由对应的地址 寄存器或立即数给出。,2.2 8086/8088存储器和I/O组织,76,存储器操作时段地址和段内偏移地址的来源 存储器操作时段地址和偏移地址的约定是由系统设计时事先 已规定好的,编写程序时必须遵守这些约定 读指令时,段地址由代码段寄存器CS提供,当前要读取指令 在代码段中的偏移地址由指令指针寄存器IP提供; 在读取或存储操作数时,根据具体操作,段地址由DS、ES 或SS提供,段内偏移地址通常由寄存器BX、SI、DI以及立 即数等提供,这类偏移地址也被称为“有效地址”(EA, Effective Address)。,2.2 8086/8088存储器和I/O组织,77,逻辑地址与物理地址 逻辑地址:通过段地址和偏移地址来表示的存储单元 的地址称为逻辑地址,记为:段地址:偏移地址。 物理地址:CPU与存储器进行数据交换时在地址总线 上提供的20位地址信息称为物理地址,是由CPU内部 总线接口单元BIU中的地址加法器根据逻辑地址产生 的。 当由IP提供或由EU根据指令所提供寻址方式计算出寻址单元 的16位段内偏移地址后,把该偏移地址和段寄存器内容左移 四位(相当于乘以10H)得到的段基址(段内第一个存储单 元的物理地址)同时送到BIU中的地址加法器,形成一个20 位的物理地址,从而实现对存储单元的访问。,2.2 8086/8088存储器和I/O组织,78,由逻辑地址求物理地址的公式为: 物理地址=段地址10H+段内偏移地址 若设当前(CS)=20A8H,(IP)=2008H,则下一条从内存中读 取的指令所在存储单元的物理地址为: 20A8H10H+2008H=22A88H 若某操作数在数据段内的偏移地址为8000H, (DS)=2A0FH,则该操作数所在存储单元的物理地址为: 2A0FH10H+8000H=320F0H,2.2 8086/8088存储器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论