【本章重点】本章主要讲述8086的硬件结构、外部引脚、内部寄存器的组织、和总线时序。【本章难点】引脚功能和总线时序。第2章8086微处理器2.2.18086的结构特点微处理器执行一段程序通常是通过重复执行如下步骤来完成。即:(1)从内存储器中取出一条指令,分析指令操作码;(2)读出一个操作数(如果指令需要操作数);(3)执行指令;(4)将结果写入内存储器(如果指令需要)。§2.18086CPU的结构AHALBHBLCHCLDHDLSPBPDISI通用寄存器CSDSSSESIP内部暂存器∑ALU运算寄存器执行部分控制电路123456输入/输出控制电路标志地址加法器20位地址16位地址外部总线指令队列缓冲器总线接口部件(BIU)执行部件(EU)16位地址AXBXCXDX8位图2-18086的结构框图1.总线接口部件(1)4个段地址寄存器CS--16位的代码段寄存器DS--16位的数据段寄存器ES--16位的扩展段寄存器SS--16位的堆栈段寄存器(2)16位的指令指针寄存器IP(3)20位的地址加法器(4)6字节的指令队列。2.执行部件(1)4个通用寄存器,即AX、BX、CX,DX;(2)4个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI;(3)标志寄存器Flag;(4)算术逻辑单元ALU;8086的执行部件(EU)有如下特点:(1)4个通用寄存器既可以作为16位寄存器使用,也可以作为8位寄存器使用。(2)AX寄存器也常称为累加器,8086指令系统中有许多指令都是通过累加器的动作来执行的。寄存器执行操作AX整字乘法,整字除法,整字I/OAL字节乘法,字节除法,字节I/O,转移,十进制算术运算AH字节乘法,字节除法BX转移CX串操作,循环次数CL变量移位或循环控制DX整字乘法,整字除法,间接寻址I/OSP堆栈操作SI字符串操作DI字符串操作表2-1寄存器的主要用途(3)加法器是算术逻辑部件主要部件,绝大部分指令的执行都是由加法器完成的。(4)标志寄存器共有16位,其中,7位未用,所用的各位含义如下:ODITSZAPC015状态标志有6个,即SF、ZF,PF、CF,AF和OF。符号标志SF(SignFlag):它和运算结果的最高位相同。若运算结果最高位为1,则SF=1,否则SF=0。零标志ZF(ZeroFlag):如果当前的运算结果为零,则ZF=1,否则ZF=0。奇偶标志PF(ParityFlag):如果运算结果的低8位中所含的1的个数为偶数,则PF=1,否则PF=0。进位标志CF(CarryFlag):当执行一个加法运算使最高位产生进位时,或者执行一个减法运算引起最高位产生借位时,则CF=1,否则CF=0。辅助进位标志AF(AuxiliaryCarryFlag):当加法运算时,如果第三位往第四位有进位,或者当减法运算时,如果第三位从第四位有借位,则AF=1,否则AF=0。溢出标志OF(OverflowFlag):当运算过程中产生溢出时,会使OF=1,否则OF=0。控制标志有3个,即DF、IF、TF。方向标志DF(DirectionFlag):这是控制串操作指令的标志。如果DF=0,则串操作过程中地址会不断增值,反之,如果DF=1,则串操作过程中地址会不断减值。中断标志IF(1uterruptEnableFlay):这是控制可屏蔽中断的标志。如IF=0,则CPU不能对可屏蔽中断请求作出响应,如果IF=1,则CPU可以接受可屏蔽中断请求。跟踪标志TF(TrapFlay):如果TF=1,则CPU按跟踪方式执行指令。2.2.28086的总线工作周期在8086中,一个最基本的总线周期由4个时钟周期组成一个总线同期T1T2T3TWT4一个总线同期T1T2T3TWT4T1T1①在T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元及外设端口的地址。②在T2状态,CPU从总线上撤消地址,而使总线的低16位浮置成高阻状态,为传输数据作准备。总线的最高4位(A19~A16)用来输出本总线周期状态信息。这些状态信息用来表示中断允许状态、当前正在使用的段寄存器名等。③在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。④在有些情况下,被写入数据或者被读取数据的外设或存储器不能及时地配合CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期TW。TW也叫等待状态。在Tw状态,总线上的信息情况和T3状态的信息情况一样。当指定的存储器或外设完成数据传送时,便在“READY”线上发出“准备好”信号,CPU接收到这一信号后,会自动脱离TW状态面进入T4状态.⑤在T4状态,总线周期结束。需要指出的是,只有在CPU和内存或I/O接口之间传输数据,以及填充指令队列时,CPU才执行总线周期。可见,如果在1个总线周期之后,不立即执行下1个总线周期。那么,系统总线就处在空闲状态,此时,执行空闲周期。§2.38086/8088的引脚信号和工作模式2.3.1最小模式和最大模式的概念所谓最小模式,就是在系统中只有8086一个微处理器。在这种系统中,所有的总线控制信号都直接由8086产生,因此,系统中的总线控制逻辑电路被减到最少。最大模式是相对最小模式而言,在此系统中,包含两个或两个以上的微处理器,其中一个主处理器就是8086,其他的处理器称为协处理器,它们是协助主处理器工作的。和8086配合的协处理器有两个。一个是数值运算协处理器8087,一个是输入/输出协处理器8089。2.3.28086的引脚信号和功能12345678910111213141516171819202122232425262728293031323334353637383940AD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGNDVCCA15A16/S3A17/S4A18/S5A19/S6BHE/S7MN/MXRDHOLD(RQ/GTHOLD(RQ/GTWR(LOCK)M/IO(S2)DT/R(S1)DEN(S0)ALE(QS0)INTA(QS1)TESTREADYRESETGND1.AD15~AD0地址/数据复用引脚(双向工作)2.A19/S6~A16/S3地址/状态复用引脚(输出)3.BHE/S7高8位数据总线允许/状态复用引脚(输出)BHEA0操作所用的数据引脚00从偶地址单元开始读/写一个字AD15~AD001从奇地址单元或端口读/写一十字节AD15~AD810从偶地址单元或端口读/写一个字节AD7~AD011无效01从奇地址开始读/写一个字AD15~AD010在第一个总线周期,将低8位数字送到AD15~AD8在第二个总线周期,将高8位数字送到AD7~AD04.NMI非屏蔽中断信号5.INTR可屏蔽中断请求信号6.RD读选通信号7.CLK时钟信号8.RESET复位信号9.READY准备就绪输入信号10.TEST测试信号11.MN/MX最小/最大模式控制信号12.GND地和VCC电源2.3.38086最小工作方式当8086第33脚MN/MX固定接到+5V时,就处于最小工作模式下第24脚~第3l脚的信号含义如下:1.INTA中断响应信号(输出)2.ALE地址锁存允许信号3.DT/R数据收发信号5.M/IO存贮器/输入/输出控制信号6.WR写信号数据传输方式I/O读001I/O写010存贮器读101存贮器写110M/IORDWR表2-3最小模式数据传输方式7.HOLD总线保持请求信号8.HLDA总线保持响应信号9.SS0状态输出线性能100中断响应101读IO/M端口110写IO/M端口111暂停000取指001读存贮器010写存贮器011无作用M/IODT/RSS0CLKRESETREADYMX/MNALEA19~A16BHEAD15~AD0DENR/DTIO/MWRREHOLDHLDAINTRINTA8086地址锁存器STB8282(三片)收发器8286(二片)(可选)OET地址总线BHE数据总线控制总线8284ARESETREADY+5V图2-7是8088在最小模式下的典型配置2.3.48086最大工作方式当MN/MX加上低电平时,8086CPU工作在最大模式下。此时8086CPU工作于多处理器系统。1.QSl和QS0指令队列状态信号2.S2,S1,S0总线周期状态信号3.LOCK总线封锁信号4.RQ/GT1,RQ/GT0总线请求信号输入/总线请求允许信号输出CLKRESETREADYMX/MNA19~A16BHEAD15~AD0INTR8086地址锁存器STB8282(三片)收发器8286(二片)TBHE8284ACLKRESETREADYOE地址总线0S1S2S总线控制器8288OE8259A及有关电路&INTA0GT/RQ1GT/RQ中断请求数据总线控制总线图2-88086最大工作模式的典型配置1.总线控制器8288命令信号发生器控制信号发生器状态译码器控制电路MRDCMWTCAMWTCIORCAIOWCINTAIOWCDT/RDENALEMCE/PDEN总线命令信号总线控制信号S2S1S0CLKIOBCENAEN状态信号控制输入12345678910111213141516171819208288IOBCLKS1DT/RALEAENMRDCAMWTCMWTCGNDVCCS0S2MCE/PDENDENCENINTAIORCIOWCAIOWC2.总线仲裁控制器8289多路总线接口局部总线接口控制电路INITBCLKBREQBPRNBPROBUSYCBRQ总线仲裁信号CLKIOBRESBLOCK控制输入状态译码器S2S1S0状态信号仲裁电路ANYRQSTCRQLCKSYSB/RESBAEN12345678910111213141516171819208289IOBCLKS1AENGNDVCCS0S2RESBBCLKINITBREQBPROBPRNLOCKCRQLCKANYRQSTCBRQBUSY2.3.58086系统复为和启动操作寄存器名称寄存器状态标志寄存器(FR)指令指针寄存器(IP)CS段寄存器DS段寄存器SS段寄存器ES段寄存器指令队列其它寄存器清零0000HFFFFH0000H0000H0000H空0000H表2-9复位时8086/8088个内部寄存器的值由表2-9中看到,在复位的时候,代码段寄存器CS和指令指针寄存器IP分别初始化为FFFFH和0000H。所以,8086/8088在复位之后再重新启动时,便从内存的FFFF0H处开始执行指令,使系统在启动时,能自动进入系统程序。在复位时,由于标志寄存器被清零,即所有标志位都被清除了,因而,系统程序在启动时,总是要通过指令来设置各有关标志。复位信号RESET从高电平到低电平的跳变会触发CPU内部的一个复位逻辑电路,经过7个时钟周期之后,CPU就被启动而恢复正常工作,即从FFFF0H处开始执行程序。§2.4存贮器组织2.4.1由段寄存器、段偏移地址确定物理地址20位物理地址=段寄存器的内容×16+偏移地址段寄存器的内容×16(相当于左移4位)变为20位,再在低端16位加上16位的偏移地址,便可得到20位的物理地址。这里仅以8086CPU复位后如何形成启动地址为例,说明物理地址的计算方法。复位时CS的内容为FFFFH,IP的内容为0000H。复位后的启动地址由CS段寄存器和IP的内容共同决定,即:启动地址=CS×16+IP=FFFF0H+0000H=FFFF0H20位物理地址偏移量段寄存器00001501501902.4.2段寄存器的使用代码段堆栈段数据段IPCSSPSSBXDS访问存贮器类型默认段寄存器可指定段寄存器段内偏移地址位源取指令码CS无IP堆栈操作SS无SP串操作源地址DSCS、ES、SSSI串操作目的地址ES无