第二章Intel8086/8088微机系统结构一、Intel8086/8088内部结构二、功能结构三、存储器组织四、指令运行五、指令执行时间内部暂存器IPESSSDSCS输入/输出控制电路外部总线执行部分控制电路123456∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列缓冲器执行部件(EU)总线接口部件(BIU)16位20位16位8位一、8086/8088内部结构1.结构•寄存器结构AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGCSDSSSES(A)累加器基地址寄存器计数器数据寄存器(SP)堆栈指针寄存器基地址寄存器源变址寄存器目的变址寄存器(PC)指令指针寄存器(PSW)状态标志寄存器代码段寄存器数据段寄存器堆栈段寄存器附加段寄存器通用寄存器控制寄存器段寄存器8位寄存器16位寄存器状态标志寄存器ODITSZAPC进位标志C(CarryFlag)——当结果的最高位产生一个进位或借位,则C=1,否则C=0。溢出标志O(OverflowFlag)——在算术运算中,带符号数的运算结果超出了8位或16位带符号数能表达的范围,则O=1,否则O=0。8位(字节)运算-128~+12716位(字)运算-32768~+32767符号标志S(SignFlag)——结果的最高位(D15或D7)为1,则S=1,否则S=0。零标志Z(ZeroFlag)——若运算的结果为0,则Z=1,否则Z=0。奇偶标志P(ParityFlag)——若结果中‘1’的个数为偶数,则P=1,否则,P=0。辅助进位标志A(AuxitiaryFlag)——在字节操作时,由低半字节(第3位)向高半字节,字操作时低字节向高字节有进位或借位,则A=1,否则A=0。方向标志(DirectionFlag)——D=1,串操作时地址自动减量,D=0,串操作时地址自动增量。中断允许标志(Interrupt—enableFlag)——I=1,则允许CPU接收外部的中断请求,I=0,则屏蔽外部中断请求。追踪标志(TraceFlag)——T=1,使处理进入单步方式,以便于调试。状态标志控制标志例:两个带符号数64h,64h相加。01100100+0110010011001000O=1(运算结果超过127);C=0;Z=0;S=1;P=0;A=0。•算术逻辑单元负责各种算术和逻辑运算。•地址加法器将左移4位的段寄存器的内容与偏移地址相加,形成20位的物理地址,以便对1兆空间的存储器寻址。•指令队列指令队列中包含若干个(8086—6个,8088—4个)8位寄存器,用于顺序存放从存储器中取出的指令,供执行单元执行。•输入/输出控制电路提供系统总线的控制信号,实现数据、地址和状态信息的分时传送。•执行单元控制电路是控制、定时与状态逻辑电路。用于控制执行单元中各部件按制定的要求协调工作。二、功能结构8088从功能上来说分成两大部分,总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit).•BIU:负责与存储器接口,即8088与存储器之间的信息传送,都是由BIU负责进行的,即:(1)BIU从内存的指定部分取出指令,送至指令队列排队。(2)从内存的指定部分取出执行指令时所需的操作数,送至EU部分。•EU:负责指令的执行。特点:将CPU分为两个单元,可以使取指令和执行指令同时进行,减少了CPU为取指令而等待的时间,从而提高了CPU的利用率,提高了系统的运行速度。三、存储器组织8088有20条地址线,它的直接寻址能力为220=1M,所以在一个8088组成的系统中,可以有多达1M字节的存储器,这1M字节在逻辑上可以组成一个线性矩阵,地址从00000到FFFFF。给定一个20位的地址,就可以从中取出所需的指令和数据。在8088内部,ALU能进行16位的运算,有关地址寄存器如:IP、SP、BX、BP、SI、DI等都是16位的,因而对地址的运算也只能是16位。其寻址的范围最多是216=64K。在8088中怎样形成这20位的地址呢?——分段!将内存的1M字节以64K为范围,分成若干段;在8088中设置4个段寄存器CS、DS、SS、ES,在寻址一个具体的内存单元(物理地址)时,由一个段寄存器中保存的16位基地址,加上由IP(或SP,或BP,或BX,或SI,或DI)中保存的、可由CPU处理的16位偏移量,来形成20位的物理地址。在形成物理地址时,地址加法器将段寄存器中的16位数左移4位,然后与16位偏移地址相加,形成20位的物理地址。20220=FFFFFh+1FFFFFhFFFFEhFFFFDhFFFFCh00001h00000h0FFFFh16216=FFFFh+10FFFFh0FFFEh0FFFDh00001h00000h四、指令运行操作:将两个数相加.指令:moval,[2000]addal,02hlt机器指令:10100000A0hmoval,[2000]0000000000h0010000020h0000010004haddal,020000101002h11110100F4hhlt(运算过程展示见动画)五、指令执行时间•指令周期——执行一条指令所需的时间称为指令周期。在8088/8086中,由于它的并行处理的特点,一条指令的执行时间为:取操作数+执行指令+传送结果进一步说:基本时间+计算有效地址的时间+为了读取操作数和存放操作结果而访问内存的时间(但是,在8086/8088中不同的指令的指令周期是不同的,因此我们再将其细划,把一个指令周期划分为一个个总线周期。)•总线周期——CPU从存储器或输入输出端口,存(或取)一个字节所需的时间,即为总线周期。•T状态——每个总线周期通常包含4个T状态。T状态是8088中处理动作的最小时间单位,它就是时钟周期。(8088的时钟频率为5MHZ,故时钟周期,也即一个T状态为200ns。)CLKALEA0~A19MEMRD0~D7T1T3T2T4存储器读总线周期8086的总线周期有4个时钟周期组成:T1、T2、T3、T4(四个状态)•T1状态:CPU向总线上发出地址信息,指出要寻址的内存单元或外设端口地址(内存为20位A19~A0,外设为8位地址A7~A0)•T2状态:地址的低16位呈高阻状态,最高4位(A19~A16)输出本总线周期的状态信息(中断允许状态、当前正在使用的寄存器名等)•T3状态:最高4位继续提供状态,低16位出现要读写的数据(8088CPU则位低8位)•Tw状态:当外设或存储器速度不能跟上CPU的速度时,外设或存储器会通过“READY”信号线在T3状态开始前向CPU发出一个“数据未准备好”信号,则CPU会在T3状态之后插入一个或多个Tw状态,当READY线变低,表明数据准备好后,CPU自动脱离Tw状态,进入T4状态•T4状态:总线周期结束•空闲周期:只有在取指、内存、I/O访问时才执行总线周期,如果不马上执行下一个总线周期,则在总线进入空闲状态,执行空闲周期在空闲周期中,高4位仍是上一总线的状态信息,如果上一总线周期为写周期,低16位上仍是写数据,如位读周期,则低16位呈高阻状态。8086的引脚信号和工作模式•最小模式和最大模式的概念–最小模式:系统中只有一个8086/8088微处理器,所有的总线控制信号由它产生–最大模式:系统中有多个微处理器,其中一个主处理器为8086/8088,其它的称为协处理器。•8087数值运算协处理器:高精度的整数和浮点运算,超越函数的计算•8089输入/输出协处理器:两个DMA通道的管理•8086/8088的引腿信号和功能(见下页)•8086/8088的数据线和地址线是复用的。•第28脚和34脚8086和8088的定义不一样,其它一样。•第28脚的定义电平意义刚好相反,8088:M/IO;8086:M/IO•第34脚:8086:BHE/S7,因为8086可以传送16位、高8位、低8位的数据,而8088只是8位的数据宽度传送,故派作状态用(SS0)1、GND/VCC:地/电源,8086和8088都用+5V电源。2、AD15~AD0地址/数据复用,在T1状态为地址,T2、T3状态读为高阻,写为数据(双向)AD0为低电平,则表明AD7~AD0和偶地址交换数据8086微处理器引脚图括号中为最大模式时引脚名1202140Vcc(5V)地AD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLK地AD15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET19181716151413121110987654322223242526272829303233353637383931341202140Vcc(5V)地A14A13A12A11A10A9A8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLK地A15A16/S3A17/S4A18/S5A19/S6SS0MN/MXRDHOLD(RQ/GT0)HLDA(RQ/GT1)WR(LOCK)MIO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESET1918171615141312111098765432222324252627282930323335363738393134808680888086的引脚信号和工作模式3、A19/S6~A16/S3地址/状态复用,输出。•总线周期的T1状态输出A19~A16高4为地址,T2、T3、TW、T4时输出状态信息。•S6为0用来指示8086/8088当前与总线连接(告诉其它处理器)。•S5中断允许标记的状态,1:允许可屏蔽中断,0:禁止可屏蔽中断。•S4~S3指出当前的使用的段寄存器。00ES01SS10CS或者未使用任何段寄存器11DS4、BHE/S7高8位数据允许/状态:输出BHE和A0结合赋予读写操作不同的含义:BHEA0操作数据引脚00从偶地址开始读/写一个字AD15~AD010从偶地址开始读/写一个字节AD7~AD001从奇地址开始读/写一个字节AD15~AD801从奇地址开始读/写一个字AD15~AD810AD7~AD08086中从奇地址开始读写一个字需要两个总线周期8086的引脚信号和工作模式5、NMI非屏蔽中断:输入正沿触发,不受IF的影响,中断的类型号为26、INTR可屏蔽中断请求:输入8086/8088在执行每条指令的最后一个时钟周期时采样INTR,当IF为1,则响应该中断。7、RD读信号:输出执行读内存和读I/O操作,是内存还是I/O由M/IO决定。8、CLK时钟输入占空比为33%,1/3为高电平,2/3为低电平9、RESET复位信号输入至少维持4个时钟周期,清除寄存器及指令队列,CS=FFFFH,当RESET变为低电平时,从FFFF0H地址开始执行复位程序。10、READY就绪或准备好信号输入11、TEST测试信号输入该信号和WAIT指令配合使用:当执行了WAIT指令后,8086接收到该引脚信号,则结束等待状态,CPU继续往下执行。12、MN/MX最小/最大模式控制信号输入(固定)8086的引脚信号在最小模式时的含义1、INTA中断响应信号输出在T2、T3和TWINTA连续输出两个低电平,第一个负脉冲通知外设中断请求已被允许,第二个负脉冲要求外设放中断类型码。2、ALE地址锁存允许信号在T1周期输出有效电平3、DEN数据允许信号:CPU当前准备发送或接收一个数据4、DT/R数据传送方向表示:低接收,高发送5、M/IO存储器/输入输出控制信号输出6、WR写信号输出7、HOLD总线请求信号,输入8、HLDA总线响应信号,输出8088CPU的第34引脚称SS0,它和M/IO、DT/R组合决定当前