资源描述
第 2 章 8086微处理器及其系统,2.1 8086微处理器,1978年,Intel公司推出16位微处理器8086。,8086CPU具有16位数据总线和20位地址总线,数据总线与地址总线分时复用,寻址范围为1MB。,2.1.1 8086CPU的结构,8086的内部结构从功能分EU和BIU:,外部总线,EU(执行单元):负责指令的译码、执行和数据的运算 BIU(总线接口单元):管理8086与系统总线的接口,负责CPU对存储器和I/O进行访问 两个单元相互独立,分别完成各自操作 两个单元可以并行执行,实现指令取指和执行的流水线操作,EU组成: 内部寄存器(8个16位:AX、BX、CX、DX、SP、BP、SI、DI) ALU和标志寄存器:FR EU控制电路,EU:内部寄存器, 8086共有8个16位的内部寄存器,分为两组:,SP(Stack Pointer Register) 堆栈指针寄存器 BP( Basic Pointer Register)基址指针寄存器 SI(Source Index Register) 源变址寄存器 DI(Destination Index Register)目的变址寄存器 BP、SP:指针寄存器,一般用于存放堆栈段 SI、DI:变址寄存器:SI一般用于数据段、DI一般用于数据段或附加段,4个16位通用寄存器 AX:累加器 (AH、AL) BX:基址寄存器( BH、BL) CX:计数寄存器( CH、CL) DX:数据寄存器( DH、DL),EU:标志寄存器FR,标志寄存器(Flag Register)共有16位,其中7位未用。标志寄存器内容如图:,15 12 11 10 9 8 7 6 5 4 3 2 1 0,15 12 11 10 9 8 7 6 5 4 3 2 1 0, CF(Carry Flag)进位标志 -反映在运算结果的最高位有无进位或借位。,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, PF(Parity Flag)奇偶标志 -反映运算结果中“1”的个数的奇偶性,主要 用于判断数据传送过程中是否出错。 若结果的低8位中有偶数个“1”,则PF=1, 否则PF=0。,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, AF(Auxiliary Flag)辅助进位标志 -加减运算时,若D3向D4产生了进位或借位则AF=1,否则AF=0。在BCD码运算时,该标志用于十进制调整。,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, ZF(Zero Flag)零标志 -反映计算结果是否为0。若结果为零则ZF=1,否则ZF=0。,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, SF(Sign Flag)符号标志 -反映计算结果最高位即符号位的状态。如果运算结果的最高位为1则SF=1(对带符号数即为负数),否则SF=0(对带符号数即为正数)。,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, OF(Overflow Flag)溢出标志 -反映运算结果是否超出了带符号数的表数范围。,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, DF(Direction Flag)方向标志 - 用于串处理指令中控制串处理的方向。 DF=1:对SI、DI自动减量,高低地址 DF=0:对SI、DI自动增量,低高地址 DF标志可由STD置1,CLI清0,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, IF(Interrupt Flag)中断允许标志 - 用于控制CPU是否允许相应可屏蔽中断请求。 - IF=1:允许响应可屏蔽中断 - IF=0:禁止响应可屏蔽中断 - IF标志可由STD置1,CLI清0,EU:标志寄存器,15 12 11 10 9 8 7 6 5 4 3 2 1 0, TF(trap flag)陷阱标志 - 用于单步操作。 TF=1:单步运行 TF=0:连续运行,EU:标志寄存器,2.1.1 8086CPU的结构,8086的内部结构从功能分EU和BIU:,外部总线,BIU组成: 段地址寄存器:CS、DS、SS、ES 指令指针寄存器:IP 地址加法器 指令队列缓冲器 输入/输出电路(总线控制逻辑),段地址寄存器 CS:代码段寄存器(存放代码存储区的起始地址) DS:数据段寄存器(存放数据存储区的起始地址) SS:堆栈段寄存器(存放堆栈存储区的起始地址) ES:附加段寄存器(存放附加数据段存储区的起始地址),段地址:,段基地址:每一节的起始地址00000H,00010H,00020HFFFF0H。,段地址:段基地址的高16位地址,即0000H,0001H,0002HFFFFH。,BIU:,物理地址 =段地址16(左移4位)+偏移地址,偏移地址(逻辑地址,有效地址):对段地址的偏移量。 偏移地址从0000HFFFFH。,也可表为0102H:0003H PA=0102H10H+0003H =01023H,17. 以下寄存器中,用于寻址数据段和堆栈段的分别是 。(2003年三级) A. BP,SI,DI和BX,SP B. BX,BP,SI和SP C. BX,SI,DI和BP,SP D. BX,BP,SI,DI和SP,答案:C,BIU,IP:指令指针寄存器(16位) 又称程序计数器; 存放将要执行指令的地址。每取一条指令IP自动增量,指向下一条指令。 地址加法器 用于产生20 位物理地址。段地址CS左移4位IP(或内部暂存器) 指令队列缓冲器: 是一个与CPU速度相匹配的高速缓冲寄存器。 8086缓冲器有6字节 输入/输出控制电路(总线控制逻辑) 是CPU外部三总线(AB、DB、CB)的控制电路,它控制CPU与其他部件交换数据、地址、状态及控制信息。,11.下列不属于8086总线接口部件BIU的是 11 。(2004年三级) A.地址加法器 B.段寄存器CS、DS、ES、SS C.变址寄存器SI、DI D.指令队列缓冲器,答案:C,11.指令队列缓冲器的构成是 。(2003年三级) A. 寄存器,采用后进先出方式(LIFO) B. 三态门,采用先进先出方式(FIFO) C. 寄存器,采用先进先出方式(FIFO) D. 三态门,采用后进先出方式(LIFO),12.8086中,下列不属于执行部件EU的是 。 A. AX,SP B. SI,BP C. BX,DI D. ES,IP,答案:C,答案:D,指令译码,CS:IP=F0300H IP指下条指令,ADD指令,指令队列,8086指令的执行,执行指令ADD AL,100H,AH,12H,CS,DS,SS,ES,IP,标志寄存器,总线 控制 逻辑,指令队列,EU 控 制,ALU,AX,2AH,BFH,34H,ADD,指令,00000H,20100H,00001H,FFFFFH,FFFFEH,20位地址,F0300H,寄存器组,2000H,总线接口部件和执行部件的管理,当8086指令队列缓冲区中有2字节空闲时,总线接口部件就自动将指令从内存中预取到指令队列缓冲器中。 每当EU部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。EU要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU就向BIU申请总线周期, 若BIU总线空闲,则立即响应; 若BIU忙,则待取指令操作完成后再响应EU的总线请求。 当指令队列已满,EU又没有申请总线时,则总线空闲。 遇到转移、调用及返回指令时,原先预取到指令队列中的指令已不再有用,BIU就自动清除指令队列中已有内容,从转移、调用或返回的新地址开始,重新从内存中预读取指令并填充指令队列。,2.1.2 8086引脚的功能,8086总线周期,时钟周期:CPU的基本时间计量单位(一个T状态:T1、T2、T3、TW、T4、TI),它由计算机的主频决定; 总线周期:由若干个时钟周期组成,完成一个基本的操作 。典型总线周期(操作): 存储器读总线周期 存储器写总线周期 I/O读总线周期 I/O写总线周期 指令:由若干总线周期组成。,8086总线周期,8086一个基本总线周期由4个时钟周期(T状态)组成: T1状态: 总线输出地址(存储器或I/O口)。 T2状态: 总线上撤消地址 输入时:使总线低16位呈现高阻状态,为数据传输作准备 输出时: 直接输出数据。 T3状态:总线低16位传输写出或输入的数据。 T4状态:总线周期结束,若为总线读周期则在T4前沿将数据读入CPU。,TW等待状态(WAIT),当内存或外设来不及与总线进行数据交换时,需要在T3和T4之间插入若干个Tw。通过查询READY(准备好引脚,输入,高有效)信号以确定Tw状态个数。判断依据: 1. 在T3的前沿检测READY引脚是否有效 2. 如果READY无效,在T3和它T4之间插入一个等效于T3的Tw ,转1 3. 如果READY有效,执行完该T状态,进入T4状态,TI空闲状态(IDLE),当BIU不执行任何读写总线操作时,系统总线上插入TI,形成空闲周期(状态)。,16. 以下关于8086总线周期的叙述中,不正确的是_。 A. 完成一次读/写操作所需的时间为一个读/写总线周期 B. 读/写总线周期从T1开始到T4结束 C. 空闲总线周期为若干个TI D. 读/写总线周期总是T1,T2,T3,T4,答案:D,17. 若在一个总线周期中,8086对READY进行了5次采样,那么该总线周期共包含的时钟周期个数为_。(2002年三级) A. 4B. 5C. 8 D. 9,答案:C,16.8086中设某个总线周期需插入4个Tw(等待状态),则该总线周期内对READY信号检测的次数是 。(2003年三级) A. 6 B. 5 C. 4 D. 3,答案:B,8086引脚的功能,2.1.2,引脚的学习应注意 引脚的功能 信号的流向(输入、输出) 有效电平:高、低、上升沿、下降沿 三态能力:高电平、低电平、高组态,8086引脚的功能,2.1.2,引脚包括 1.数据和地址引脚 2.读写控制引脚 3.中断请求和响应引脚 4.总线请求和响应引脚 5.其它引脚,1. 数据和地址引脚,AD15AD0(Address/Data) 地址/数据分时复用引脚,双向、三态 这些引脚在访问存储器或I/O时 T1状态:输出地址A15A0 T2、T3状态: 读周期:T2先浮空(高组态),T3读入数据D15D0 写周期:写出数据D15D0 总线请求响应执行时前,三态总线浮空,1. 数据和地址引脚(续2),A19/S6A16/S3(Address/Status):地址/状态分时复用引脚,输出、三态 这些引脚在访问存储器时 T1状态输出高4位地址A19A16 在访问外设时 T1状态全部输出无效电平(低电平) 其他时间输出状态信号S6S3 S6=0 表明8086CPU占用总线 S5表明中断允许标志IF的设置情况。 IF=0时,S5=0;IF=1时,S5=1。 S4 、 S3代码组合的意义,2.读写控制引脚,ALE(Address Latch Enable) 地址锁存允许,输出、三态、高电平有效,为锁存器提供锁存信号(锁存地址) T1状态时,ALE输出高电平,打开锁存器,允许总线数据进入锁存器(锁存器数据随总线数据AD19AD0变化而变化) 下降沿:关闭锁存器,将最后次的总线数据锁存,作为地址A19A0。,2.读写控制引脚(续2),M / IO *( Memory / Input and Output),存储器或I/O访问,输出、三态 0:CPU访问(读、写)I/O口,这时地址总线A15A0提供16位I/O口地址(0000HFFFFH) 1:CPU访问(读、写)存储器,这时地址总线A19A0提供20位存储器地址 (00000HFFFFFH) M/IO *要与WR*、RD*信号配合使用。 WR*:写控制,输出、三态、0有效:表示CPU正向存储器或I/O口写数据 RD*:读控制,输出、三态、 0有效:表示CPU正从存储器或I/O端口读数据,IO/M*、WR*和RD*是最基本的控制信号组合后,控制4种基本的总线周期,2.读写控制引脚(续3),READY:存储器或I/O口就绪,输入、高电平有效 总线操作时,8086在T3状态的前沿(下降沿)测试该引脚 若测到有效(1),CPU直接进入T4状态 若测到无效(0),CPU将插入等待周期Tw,CPU在等待周期中仍然要监测READY信号,有效则进入T4状态,否则继续插入等待周期Tw。 DEN*(Data Enable):数据允许,输出、三态、低电平有效;0:当前数据总线上正传送数据,可用来控制对数据总线的驱动 DT/R*(Data Transmit/Receive):数据发送/接收,输出、三态 该信号表明当前总线上数据的流向 1: CPU发送数据 0:CPU接收数据 区别于RD*、WR*,2.读写控制引脚(续4),BHE*/S7(Bus High Enable/Status)高8位数据线允许/状态复用引脚,输出、三态。,2-7 a,从偶地址读写一个字节(BHE A0=10) AD15AD8上的数据被忽略,字节内容通过AD7AD0传送。,被读的字节,忽略的字节,Y,Y,X,存储器,8086CPU,10000H,10001H,a) 从偶地址读写一个字节,2-7 b,从偶地址读写一个字(BHE A0=00)。 在AD15AD8 、AD7AD0上传送的数据有效。,被读的字节,被读的字节,X,Y,X,存储器,8086CPU,10008H,10009H,Y,b) 从偶地址读写一个字,从奇地址读写一个字节(BHE A0=01)。 在AD15AD8上传送的数据有效,AD7AD0上数据被忽略。 以上三种读写操作都是在一个总线周期中完成的。,2-7 c,被读的字节,忽略的字节,X,Y,X,存储器,8086CPU,10050H,10051H,c) 从奇地址读写一个字节,2-7 d,被读的第一字节,忽略的字节,Y,Y,X,存储器,8086CPU,10080H,10082H,忽略的字节,被读的第二字节,X,Z,W,10081H,10083H,d) 从奇地址读写一个字,14.对8086来说,要从偶地址单元读/写一个字节, 和A0的信号、所用的数据线分别是 A.01,AD15AD8 B.10,AD15AD8 C.01,AD7AD0 D.10,AD7AD0,答案:D,3.中断请求和响应引脚,INTR(Interrupt Request):可屏蔽中断请求,输入、高有效 1:请求设备向CPU申请可屏蔽中断 该请求的优先级别较低,并可通过关中断指令CLI清除标志寄存器中的IF标志、从而对中断请求进行屏蔽 INTA*(Interrupt Acknowledge):可屏蔽中断响应,输出、低有效 0:来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期 中断响应周期是连续的两个,每个都发出有效响应信号,以便通知外设他们的中断请求已被响应、并令有关设备将中断向量号送到数据总线,3.中断请求和响应引脚(续1),NMI(Non-Maskable Interrupt) :不可屏蔽中断请求,输入、上升沿有效 当系统发生紧急情况时,可通过他向CPU申请不可屏蔽中断服务 1:外界向CPU申请不可屏蔽中断 该请求的优先级别高于INTR,并且不能在CPU内被屏蔽,4. 总线请求和响应引脚(续2),HOLD:总线保持(即总线请求),输入、高有效 1:总线请求设备向CPU申请总线 0:总线请求设备对总线的使用已经结束,通知CPU收回对总线的控制权 HLDA(HOLD Acknowledge):总线保持响应(即总线响应),输出、高有效 1:CPU已响应总线请求并已将总线释放 此时CPU的地址总线、数据总线及具有三态输出能力的控制总线将全面呈现高阻,使总线请求设备可以顺利接管总线 待到总线请求信号HOLD无效,总线响应信号HLDA也转为无效,CPU重新获得总线控制权,5.其它引脚,RESET:复位请求,输入、高有效 该信号有效(应维持50微秒以上),将使CPU回到其初始状态;当他再度返回无效时,CPU将重新开始工作 8086复位后CSFFFFH、IP0000H,所以程序入口在物理地址FFFF0H CLK(Clock):时钟、输入 系统通过该引脚给CPU提供内部定时信号。8086的标准工作时钟为5MHz IBM PC/XT机的8086采用了4.77MHz的时钟,其周期约为210ns,5.其它引脚(续1),Vcc 电源输入,向CPU提供5V电源 GND 接地,向CPU提供参考地电平 MN/MX*(Minimum/Maximum):组态选择,输入 1:最小模式 0:最大模式,5.其它引脚(续2),TEST*:测试,输入、低有效 该引脚与WAIT指令配合使用 当CPU执行WAIT指令时,他将在每个时钟周期对该引脚进行测试:如果无效,则程序踏步并继续测试;如果有效,则程序恢复运行 也就是说,WAIT指令使CPU产生等待,直到引脚有效为止 在使用协处理器8087时,通过引脚和WAIT指令,可使8086与8087的操作保持同步,2.2 8086系统的存储器组织及I/O组织,2.2.1 8086系统的存储器组织,图2-5 存储体地址空间分配 图2-6 存储体与总线的连接,存储体地址空间分配 存储体与总线的连接,2-7 a,从偶地址读写一个字节(BHE* A0=10) AD7AD0:传送字节内容; AD15AD8:被忽略。,2-7 b,从偶地址读写一个字(BHE* A0=00)。 在AD15AD8 、AD7AD0上传送的数据有效。,从奇地址读写一个字节 (BHE* A0=01)。 AD15AD8:传送数据; AD7AD0: 数据忽略。,2-7 c,c) 从奇地址读一个字节,2-7 d,d) 从奇地址读一个字,8086系统存储器的地址,CS=2000H IP=1000H 物理地址=21000H CS=2100H IP=0000H 物理地址=21000H,物理地址的计算公式: 物理地址 = 段地址 16 + 偏移地址 段地址的引入,为程序在内存中浮动创造了条件,一般用户程序只涉及偏移地址。 同一物理地址可以由不同的段地址和偏移地址表示。,8086系统内存地址的一些专用区域, 8086系统有专用的输入(IN)、输出(OUT)指令,用于外设端口(即外设接口中的内部寄存器)的寻址。 I/O端口与内存分别独立编址(M/IO*=0)。 I/O端口使用16位地址A15A0, I/O端口地址范围为0000HFFFFH。PC/XT微机中使用10位。见p32,2.2. 2 8086系统的I/O组织,2.3 8086系统的工作模式,2.3.1 最小模式和最大模式的概念,为了适应各种场合的要求,8086/8088CPU在设计中提供了两种工作模式,即最小模式和最大模式。实际机器中究竟工作在哪一种模式, 根据需要由硬件连接决定。,最小模式,如果系统中包括两个以上处理器,其一个为8086/8088作为主 处理器,其它处理器作为协处理器,这样的系统成为最大模式系统。,:,如果系统中只有一个微处理器8086(或8088),所有由它产生,则系统中总线控制逻辑信号可先减少到最小,因此称这种系统为最小模式系统。,最小模式系统,当系统只有一个微处理器8086时,将MN/MX引脚接向+5V,构成最小模式系统,其原理如图2-8,1.最小模式系统典型配置 2.8284时钟发生器与8086的连接 如图2-9 3.地址锁存器8282与8086的连接 如图2-10 4.总线驱动器8286与8086的连接 如图2-11,2.3.2,2.3.2最小模式系统,8284时钟发生器与8086的连接图,8282锁存器与8086的连接,1、ALE为高电平时,输出等于输入 2、用ALE的下降沿锁存信号,8286总线驱动器与8086的连接,最大模式系统,将MN/MX引脚接地就构成了8086CPU的最大工作模式。,最大模式下的有关引脚信号 8288总线控制器 最大模式的系统配置,2.3.3,8288总线控制器引脚图及结构示意图,最大模式下系统的典型配置,最大模式下的有关引脚信号,QS0,QS1(Instruction Queue Status)指令队列状态信号,输出。,表2-5 QS1、QS0代码组合含义,S2(IO*/M)、S1(DT/R*)、S0(DEN*),总线状态信号,输出。,3. LOCK(WR*)总线封锁信号,输出,低电平有效。 4.RQ/GT1(HOLD),RQ/GT0(HLDA)总线请求/允许信号双向。,2.,表2-6 S2、S1、S0 的代码组合操作,8288 总线控制器,在最大模式系统中要用到总线控制器8288,它根据CPU提供的S2,S1, S0信号产生各种总线控制信号。,8288逻辑框图 2-12,S2、S1、S0 来自8286CPU的状态信号。8288对这些状态进行译码产生相应的总线命令信号和输出控制信号。 CLK时钟输入端,通常接8284的CLK端。 AEN地址允许信号,输入。,5. IOB总线方式控制信号,输入。8288有两种工作方式: (1) 当IOB为低时,8288工作于系统总线方式(多处理器系统) (2) IOB为高时,8288工作于局部总线方式(单处理器系统),CEN命令允许信号,4.,,输入。,6. AIOWC 超前I/O写命令,输出。在总线周游该信号提前一个时钟周期发出I/O写命令,以便于I/O设备早作准备。 7. AMWC 超前存储器写命令,输出。其功能与AIOWC信号相似。 8. IOWC I/O 写命令,输出。只是数据总线上数据有效,可将数据写入被选中的I/O端口。,10. MRDC、MWTC 存储器读和存储器写命令,输出。 11. MCE/PDEN 输出,总线总模块允许/外部数据允许双功能信号。 12. INTA,DT/R,ALE 及 DEN 与8086最小模式的相应引脚信号功能相同,只有DEN信号的相位与最小模式相应引脚的相位相反。,, 输出。通知外设端口将数据发送到数据总线上。,IORC I/O 读命令,9.,8086的操作时序,2.4.1 复位操作及时序,2.4,图 2-14 8086 的复位时序,不作用状态(半个时钟周期),高阻态,三态门 输出信号,内部RESET,RESET输入,CLK,最小模式下的总线读周期,2.4.2,1. T1 状态: 在T1状态,地址锁存允许信号ALE有效,输出一个正脉冲。在其下降时,将地址锁入8282地址锁存器。 2. T2状态: 在T2状态,地址信号消失,地址/数据复用总线进入高阻状态,为总线读操作作准备。 3. T3状态: 在T3状态内存或I/O端口将数据送上数据总线。 4. T4状态: 在T4前沿CPU将数据读入,总线周期完成。,8086 最小模式下的读周期时序,最小模式下的总线写周期,2.4.3,1. T1 状态: T1 状态的操作与总线读相同,即M/IO应在T1前沿之前有效。 2. T2状态: A19/S6A16/S3引脚输出状态信息S6S3,AD15AD0复用总线上输出要写出的数据,并一直保持到T4中部。 3. T3状态及Tw: 在T3状态中,T2状态有效的信号继保持有效,继续向外部写数据。 4. T4状态: 总线写状态结束,所有控制信号变为无效状态,所有三态总线变为高阻态。,图2-16 8086 最小模式下的写周期时序,最大模式下的总线读周期,2.4.4,1. T1 状态: CPU经过A19/S6A16/S3、AD15AD0送出20位地址信号及BHE*信号。 2. T2状态: CPU送出状态信号S7S3,并将地址数据/复用总线置为高阻状态,已准备数据读入。 3. T3状态: T3状态中,S2S0全部上升为高电平,进入无源状态,并一直继续到T4。 4. T4状态: 一个总线周期结束。数据从总线上撤销,数据/地址总线进入高阻状态。,图2-17 最大模式下的读操作时序,最大模式下的总线写周期,2.4.5,1. T1 状态: A19/S6A16/S3及AD15AD0输出地址信号。 2. T2状态: 总线控制器输出DEN高电平使总线驱动器使能。提前的存储器写信号AMWC或I/O写信号AIOWC降为低电平。 3. T3状态: 总线控制器是普通的写控制信号MWTC或IOWC生效。 4. T4状态: 总线写周期结束。A19/S6A19/S3、AD15AD0复用总线变为高阻状态。,图2-18 最大模式下的写操作时序,57、在8086读总线周期中,进入T3后发现READY=0,需要插入等待状态,则在插入等待状 态时其引脚的高地址A19A16( ) A.表示读数据对应的高4位地址 B.表示CPU当前工作状态 C.处于高阻态 D.处于不定状态,答案:B,最小模式下的总线请求/响应周期,2.4.6,最大模式下的总线请求/响应周期,2.4.7,小结,2.1.1 8086的编程结构,2.1.2 8086的引脚及其功能,2.1 8086微处理器简介,2.3.1 最小模式和最大模式的概念,2.2.2 8086系统的I/O组织,执行部件(EU) 总线接口部件(BIU), 8086总线周期 8086的引脚及功能,2.2 8086系统的存储器组织及I/O组织,2.2.1 8086系统的存储器组织,2.3 8086系统的工作模式,2.3.2 最小模式系统,2.3.3 最大模式系统,2.4 8086的操作时序,2.4.1 复位操作及时序,2.4.1 最小模式下的总线读周期,2.4.2 最小模式下的总线写周期,2.4.3 最大模式下的总线读周期,2.4.3 最大模式下的总线写周期,2.4.4 最小模式下的总线 请求/响应周期,2.4.5 最大模式下的总线 请求/响应周期,
展开阅读全文