第2章8086微处理器及其系统2.18086微处理器2.28086系统的存储器组织及I/O组织2.38086系统配置2.48086的操作时序2.18086微处理器1978年,Intel公司推出16位微处理器8086。8086CPU具有16位数据总线和20位地址总线,数据总线与地址总线分时复用,寻址范围为1MB。CPU存储器存储器I/O接口I/O接口外部设备ABDBCB2.1.18086CPU的结构AHALBHBLCHCLDHDLSPBPSIDICSDSSSESIP124653标志寄存器总线控制逻辑指令队列EU控制ALU∑BIU单元EU单元AXBXCXDX两个独立的功能部件:执行部件EU、总线接口部件BIU。内部寄存器地址加法器段寄存器指令指针寄存器外部总线AHALBHBLCHCLDHDL四个通用数据寄存器AX、BX、CX、DX均可用作16位寄存器也可用作8为寄存器。用作8位寄存器分别记作:AH、AL、BH、BL、CH、CL、DH、DL。内部寄存器●8086共有8个16位的内部寄存器,分为两组:SPBPSIDIAXBXCXDX●通用寄存器●指针和变址寄存器●SP(StackPointerRegister)堆栈指针寄存器●BP(BasicPointerRegister)基址指针寄存器●SI(SourceIndexRegister)源变址寄存器●DI(DestinationIndexRegister)目的变址寄存器标志寄存器标志寄存器(FlagRegister)共有16位,其中7位未用。标志寄存器内容如图:OFDFIFTFSFZF―AF―PF―CF15~12111098765432101.条件标志-----共6位,用于寄存程序运行的状态信息,这些标志往往用作后续指令判断的依据。2.控制标志-----共3位,用于控制机器或程序的某些运行过程。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●CF(CarryFlag)进位标志-----反映在运算结果的最高位有无进位或借位。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●PF(ParityFlag)奇偶标志-----反映运算结果中“1”的个数的奇偶性,主要用于判断数据传送过程中是否出错。若结果的低8位中有偶数个“1”,则PF=1,否则PF=0。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●AF(AuxiliaryFlag)辅助进位标志-----加减运算时,若D3向D4产生了进位或借位则AF=1,否则AF=0。在BCD码运算时,该标志用于十进制调整。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●ZF(ZeroFlag)零标志-----反映计算结果是否为0。若结果为零则ZF=1,否则ZF=0。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●SF(SignFlag)符号标志-----反映计算结果最高位即符号位的状态。如果运算结果的最高位为1则SF=1(对带符号数即为负数),否则SF=0(对带符号数即为正数)。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●OF(OverflowFlag)溢出标志-----反映运算结果是否超出了带符号数的表数范围。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●DF(DirectionFlag)方向标志-----用于串处理指令中控制串处理的方向。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●IF(InterruptFlag)中断允许标志----用于控制CPU是否允许相应可屏蔽中断请求。OFDFIFTFSFZF―AF―PF―CF15~1211109876543210●TF(trapflag)陷阱标志-----用于单步操作。-----用于存放段地址的寄存器,根据其主要用途,有代码段寄存器CS、数据段寄存器DS、堆栈段寄器SS、附加段寄存器ES。CSDSSSES段地址寄存器(CS、DS、SS、ES)段地址:CSDSSSES00000H00010H0000FH00001H…………FFFF0HFFFFFH……0001FH00020H………………0002FH00030H……………………第0节第1节第2节第216-1节实际地址物理地址段基地址:每一节的起始地址00000H,00010H,00020H……FFFF0H。段地址:段基地址的高16位地址,即0000H,0001H,0002H……FFFFH。物理地址=段地址×16(左移4位)+偏移地址偏移地址(逻辑地址,有效地址):对段地址的偏移量。偏移地址从0000H~FFFFH。00000H00001H…………FFFFFHFFFFEH01023H01000H01001H01002H……01022H01021H01020HXX可以表为0100H:0023HPA=0100H×10H+0023H=01023H例:对于物理地址01023H单元0100H:0000H0100H:0001H偏移23H也可表为0102H:0003HPA=0102H×10H+0003H=01023H0102H:0000H0102H:0001H偏移03H代码段64KB数据段64KB堆栈段64KBCSIPDSSI、DI、BXSSSP、BP64KB代码段数据段堆栈段CSIPDSSI、DI、BXSSSP、BP17.在没有段跨(超)越的情况下,以下寄存器中,用于寻址数据段和堆栈段的分别是。(2003年三级)A.BP,SI,DI和BX,SPB.BX,BP,SI和SPC.BX,SI,DI和BP,SPD.BX,BP,SI,DI和SP指令指针寄存器(IP)-----又称程序计数器,是16位寄存器。存放将要执行指令的地址。每取一条指令IP自动增量,指向下一条指令。地址加法器-----用于产生20位物理地址。指令队列缓冲器总线控制逻辑-----是CPU外部三总线(AB、DB、CB)的控制电路,它控制CPU与其他部件交换数据、地址、状态及控制信息。-----是一个与CPU速度相匹配的高速缓冲寄存器。11.下列不属于8086总线接口部件BIU的是11。(2004年三级)A.地址加法器∑B.段寄存器CS、DS、ES、SSC.变址寄存器SI、DID.指令队列缓冲器11.指令队列缓冲器的构成是。(2003年三级)A.寄存器,采用后进先出方式(LIFO)B.三态门,采用先进先出方式(FIFO)C.寄存器,采用先进先出方式(FIFO)D.三态门,采用后进先出方式(LIFO)12.8086中,下列不属于执行部件EU的是。A.AX,SPB.SI,BPC.BX,DID.ES,IP指令译码CS:IP=F0300HIP指下条指令ADD指令指令队列标志AL取下一条指令8086指令的执行执行指令ADDAL,[100H]AH12HCSDSSSESIP124653标志寄存器总线控制逻辑指令队列EU控制ALU∑AX2AHBFH34HADD指令00000H20100H00001H…………FFFFFHFFFFEH20位地址F0300H寄存器组2000H20100H偏移地址100H操作数34HDS=2000H∑AL=12HALU当8086指令队列中有2字节空闲时,总线接口部件就自动将指令从内存中预取到指令队列缓冲器中。每当EU部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。EU要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU就向BIU申请总线周期,若BIU总线空闲,则立即响应,若BIU正在取一条指令,则待取指令操作完成后再响应EU的总线请求。当指令队列已满,EU又没有申请总线时,则总线空闲。遇到转移、调用及返回指令时,原先预取到指令队列中的指令已不再有用,BIU就自动清除指令队列中已有内容,从转移、调用或返回的新地址开始,重新从内存中预读取指令并填充指令队列。总线接口部件和执行部件的管理8086引脚的功能2.1.2Vcc40AD1539A16/S338A17/S4373635BHE/S73433323130292827DEN(S0)26ALE(QS0)252423READY22RESET21A18/S5A19/S61234567891011121314151617181920MN/MXRDHLDA(RQ/GT1)HOLD(RQ/GT0)WR(LOCK)M/IO(S2)TESTINTA(QS1)DT/R(S1)AD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0GNDNMIINTRCLKGND8086CPU●8086总线周期时钟周期:CPU的基本时间计量单位,它由计算机的主频决定,8086的主频为5MHz。总线周期:由若干个时钟周期组成,完成一个基本的操作。典型的总线周期:存储器读总线周期存储器写总线周期I/O读总线周期I/O写总线周期8086中一个基本总线周期由4个时钟周期组成。T1T2T3T4T1T2T3典型的8086总线周期时序-----CPU向多路复用总线上发送地址信息,指出要寻址的内存单元地址或I/O端口地址。T1状态:-----总线周期结束,若为总线读周期则在T4前沿将数据读入CPU。T2状态:-----CPU从总线上撤消地址,使总线低16位呈现高阻状态,为数据传输作准备。T3状态:-----总线低16位上出现CPU要写出的数据或准备读入的数据。T4状态:T1T2T3TwT4TITITW等待状态TI空闲状态-----当内存或外设来不及与总线进行数据交换时,需要在T3和T4之间插入若干个Tw。-----当BIU不执行任何读写总线操作时,系统总线上插入TI,形成空闲周期。16.以下关于8086总线周期的叙述中,不正确的是__________。A.完成一次读/写操作所需的时间为一个读/写总线周期B.读/写总线周期从T1开始到T4结束C.空闲总线周期为若干个TID.读/写总线周期总是T1,T2,T3,T4答案:D17.若在一个总线周期中,8086对READY进行了5次采样,那么该总线周期共包含的时钟周期个数为________。(2002年三级)A.4B.5C.8D.916.8086中设某个总线周期需插入4个Tw(等待状态),则该总线周期内对READY信号检测的次数是。(2003年三级)A.6B.5C.4D.38086CPU的引脚及功能1.GND(地)和Vcc电源。Vcc引脚接+5V电源,GND引脚接地。2.AD15~AD0(AddressDataBus)地址/数据复用引脚,双向、三态。3.A19/S6~A16/S3(Address/Status)地址/状态复用引脚,输出、三态。通用引脚:S3、S4代码组合的意义S4S3意义00正在使用ES01正在使用SS10正在使用CS11正在使用DSS6=0表明8086CPU占用总线。S5表明中断允许标志IF的设置情况。IF=0时,S5=0;IF=1时,S5=1。BHE与A0信号的意义BHEA0操作所用的数据线00从偶地址开始读/写一个字AD15~AD010从偶地址读/写一个字节AD7~AD001从奇地址开始读/写一个字节AD15~AD8从奇地址开始读/写一个字01(第一个总线周期)从奇地址开始读/写一个字节AD15~AD810(第二个总线周期)从偶地址读/写一个字节AD7~AD04.BHE/S7(BusHighEnable/Status)高8位数据线允许/状态复用引脚,输出、三态。图2-5存储体地址空间分配图2-6存储体与总线的连接存储体地址空间分配存储体与总线的连接2-7a•从偶地址读写一个字节(BHEA0=10)AD15~AD8上的数据被忽略,字节内容通过AD7~AD0传送。被读的字节忽略的字节YYX存储器8086CPU10000H10001Ha)从偶地址读写一个字节2-7b•从偶地址读写一个