1、第 3 章,8086微处理器,教学重点,8086/8088的编程结构 引脚信号 工作模式 8086/8088的总线操作与时序 8086/8088的I/O组织,教学要求,理解微处理器的内、外部逻辑结构 了解8086/8088的功能结构 理解各个寄存器组织方式和I/O组织方式 理解存储器的地址空间与寻址的概念 了解数据的存储格式,理解存储器分段的概念 熟练掌握物理地址的形成方法 掌握信息的分段存储与段寄存器之间的关系 理解8086/8088的引脚定义和两种系统组织方式(最大模式和最小模式) 理解时序的概念 了解8086/8088的典型总线时序及其分析方法,第3章 8086微处理器,3.1 8086
2、微处理器的编程结构3.2 8086的外部结构3.3 8086CPU的基本操作时序,3.1 8086微处理器的编程结构,8086的功能部件 8086的总线周期的概念,8086的功能部件,从功能上8086分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。总线接口部件的功能是负责与存储器、I/O端口传送数据。 执行部件的功能就是负责指令的执行。,8086/8088 CPU编程结构图,AH AL,BH BL,CH CL,DH DL,SP,BP,DI,SI,通 用 寄 存 器,AX,BX,CX,DX,ALU数据总线(16位),运算寄存
3、器,ALU,标志寄存器,EU 控制电路,执行部件EU,1 2 3 4 5 6,数据总线 8088:8位 8086:16位,输入/输出 控制电路,地址总线20位,指令队列缓冲器,8088,8086,Q总线 (8位),指令指针,段寄存器,外部 总线,总线接口部件BIU,地址加法器,总线接口部件BIU,总线接口部件由下列各部分组成: 四个段地址寄存器,即CS16位的代码段寄存器,DS16位的数据段寄存器,ES16位的扩展段寄存器,SS一16位的堆栈段寄存器;16位的指令指针寄存器IP;20位的地址加法器;6字节的指令队列;输入输出控制电路。,段寄存器与存储器分段,实模式下,Pentium微处理器的1
4、MB内存空间被分成段,每段具有64KB的连续存储区。 段是可独立寻址的内存单位,每个段的起始地址由一个基址设定,它是一个段最低的地址。 实模式下最多可以同时有6个段处于活动状态:一个代码段、一个堆栈段、4个数据段。内存中哪些段处于活动状态由6个段寄存器确定,每个段寄存器保存16位基址。 CS代码段(Code Segment) DS数据段(Data Segment) SS堆栈段(Stack Segment) ES附加段(Extra Segment) FS 数据段F GS 数据段G,指令指针寄存器,用来确定代码段中当前将要被执行的指令的偏移地址(相对于代码段基址) IP由控制程序分支的指令、中断以
5、及异常等隐含控制,用户程序不能直接控制 IP。,IP(Instruction Pointer),执行部件EU,执行部件由下列几个部分组成: 四个通用寄存器,即AX、BX、CX、DX; 四个专用寄存器,即基址指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI; 标志寄存器PSW; 算术逻辑单元ALU。,通用寄存器,包括4个通用数据寄存器,2个变址寄存器和2个指针寄存器,通用数据寄存器,累加寄存器 (Accumulator) 基址寄存器(Base ) 计数寄存器(Counter) 数据寄存器(Data),可以存放32位双字数据、低16位可以存放字数据、低16位的两个8位可以存
6、放字节数据,在进行算术运算和逻辑运算时,通用数据寄存器任何一个都可以作为源操作数或目的操作数。,用来暂存计算过程中所用到的操作数,结果或其它信息。,为与8086微处理器兼容,通用寄存器的低16位部分与8086有相同的名称,累加器 是算术逻辑运算的主要寄存器, 例如:ADD AX, BX所有I/O指令都使用这一寄存器与外部设备交换数据。 例如:IN AL, 20HOUT 30H , AX,通用数据寄存器,基址寄存器 在计算内存储器地址时,经常用来存放基址。例如:MOV AX, BX+03H,由于实模式下存放地址值的长度只能是16位,常使用BX存放访问内存时的基地址。,通用数据寄存器,通用数据寄存
7、器,计数寄存器在循环LOOP指令和串处理指令中用作隐含计数器。例如:MOV CX , 200H AGAIN: LOOP AGAIN ;(CX)-1(CX),结果0转AGAIN,通用数据寄存器,数据寄存器 一般在双字长乘除法运算时,把DX和AX组合在一起存放一个双字长(32位)数,DX用来存放高16位;例如: MUL BX ; (AX)(BX)(DX)(AX)对某些I/O操作DX可用来存放I/O的端口地址(端口地址 256)。例如: IN AL , DX,指针与变址寄存器,0,15,16,31,7,8,SP,BP,SI,DI,ESP,EBP,ESI,EDI,用于存放偏移量地址。,实模式下存放地址
8、值的长度只能是16位,因此指针与变址寄存器只能使用SP、BP、SI、DI 32位寄存器ESP、EBP、ESI、EDI可以作为通用数据寄存器使用,偏移量地址表示某一存储单元相对于段寄存器所指定的基址的位移量。,SP堆栈指针(stack pointer)用来指示栈顶的偏移地址BP基址指针(base pointer)存放堆栈段中一个数据区基地址的偏移地址,SP和BP为指针寄存器,用于访问堆栈段中的数据,0,15,16,31,7,8,SP,BP,SI,DI,ESP,EBP,ESI,EDI,指针与变址寄存器,SI和DI为变址寄存器,用于访问数据段和附加段中的数据SI源变址(Source Index) 存
9、放源操作数的偏移地址 DI目的变址(Destination Index) 存放目的操作数的偏移地址,指针与变址寄存器,常用来确定数据段中某一存储单元的地址例如: MOV AX, SI,指针与变址寄存器,例: MOV SI , 2000HMOV DI , 3000HMOV CX, 100HCLDMOVSB.,在串处理指令中,SI、DI作为隐含的源变址和目的变址寄存器分别达到在数据段和附加段中寻址的目的。,SI , DI具有自动增量和自动减量功能,标志寄存器,实模式下标志寄存器有9个标志位:6个状态标志位,3个控制标志位,状态标志位反映算术或逻辑运算后结果的状态,由处理器根据计算结果自动设置CF进
10、位标志(Carry Flag) 运算结果最高位产生进位或借位,置CF=1PF奇偶标志(Parity Flag) 结果低8位中1的个数为偶数,置PF=1AF辅助进位标志(Auxiliary Carry Flag)低4位产生进位置AF=1,用于十进制数运算调整,FLAGS,0,15,ZF 零标志(Zero Flag)运算结果为0,置ZF=1SF 符号标志(Sign Flag)与运算结果的最高位(符号位)相同OF溢出标志(Overflow Flag) 补码运算结果超过了机器表示的范围,置OF=1 可以用来判断有符号整数补码运算结果的正确性,FLAGS,标志寄存器,0,15,例如:MOV AL,4FH
11、 0100 1111ADD AL,31H +0011 0001 1000 0000则对标志影响为:,标志寄存器,FLAGS,0,15,CF=0D7未产生进位; PF=01的个数为奇数; AF=1D3有进位; ZF=0结果非零; SF=1最高位为1; OF=1结果为128,控制标志用于控制CPU的操作,由程序设置或清除: DF方向标志(Direction Flag) 控制数据串操作指令的步进方向STD指令将DF置1,使串操作过程中地址自动递减CLD指令将DF清0,使串操作过程中地址自动递增 IF中断允许标志(Interupt Flag) 控制可屏蔽中断STI指令将IF置1,允许CPU接受可屏蔽中
12、断请求CLI指令将IF清0,禁止CPU接受可屏蔽中断请求 TF陷阱标志(Trap Flag) 为调试程序而设将TF置1,CPU处于单步工作方式将TF清0, CPU正常执行程序,FLAGS,0,15,标志寄存器,BIU和EU的动作管理和协调工作,BIU和EU作为CPU的两大部件,虽然不是同步工作的,但是它们相互配合,并行工作,提高了效率。具体表现为:,每当8086的BIU的6指令队列中有2个字节为空的时候,BIU会自动从内存中取出下面的指令的字节放到指令队列中。,EU在执行指令的时候总是从BIU的指令队列的前部取出将要执行的指令,然后用几个时钟周期去执行。,在执行指令的过程中,如果指令需要访问内
13、存或者端口,则EU请求BIU进入总线周期,从而完成访问。如果请求时,BIU正好空闲,那么BIU会马上响应请求;如果此时BIU正忙着取指令,那么访问内存和端口的请求必须要BIU完成指令的读取后方可被响应。,当指令队列已满,并且EU没有对BIU的内存和端口访问请求时,BIU进入空闲状态,这其实是BIU对EU的等待。在执行各种控制转移指令时,下面要执行的指令不是程序中紧接着的指令了,但是指令队列中已经将那些指令装入了指令队列,而这些指令是没有用的。此时,BIU会将指令队列清空,接着往指令队列中装入转向目标地址处的指令。,内存地址空间和数据组织,实模式下Pentium微处理器只有20条地址线有效,因此
14、实模式下内存空间为220=1MB,物理地址由00000-FFFFF(H)编码,实模式内存地址空间组织,存储单元地址按照字节编址,1100 1111B,物理地址,内存,00000H,00001H,00002H,0ABCDH,0FFFFFH,内存地址空间和数据组织,若存放的信息是字节,则按顺序存放 若存放的信息是字,则将字的低位字节存放在低地址,高位字节存放在高地址 若存放的信息是双字,则将双字的低位字存放在低地址,高位字存放在高地址,低字节低地址,高字节高地址,例. 双字A00055FF如何存储在地址为02102的存储单元中 例. 字23AB如何存储在地址为02102的存储单元中,对准双字:对应
15、地址是4的倍数 对准字:对应地址是2的倍数,内存地址空间和数据组织,存放数据的起始地址可以任意,但是字数据存放在偶数地址单元,双字数据存放在能被4整除的地址单元,可以改善程序性能。 处理器对内存的访问只需一个总线周期,内存地址空间和数据组织,例如: MOV AX, 1000HMOV DS, AXMOV AX, 0010H,CPU,高位字节,低地址,高地址,10011H,10010H,内存,AX,低位字节,数据总线,内存地址空间和数据组织,例如: MOV AX, 1000H MOV DS, AX MOV AX, 0011H,CPU,高位字节,低地址,高地址,10012H,10011H,内存,AX
16、,低位字节,数据总线,空闲,CPU,高位字节,低地址,高地址,10012H,10011H,AX,低位字节,数据总线,空闲,实模式下,1MB内存空间分通用和专用两个区域 00000-003FF 专用,存放中断向量表 00400-FFFFF通用,中断向量表表内指针用来指出相应的中断服务程序的起始点,表内每个指针占2个字,占据较高地址的是段基址,占据较低地址的是偏移量,内存地址空间和数据组织,逻辑地址和物理地址,实模式下逻辑地址由段基址和偏移量两部分组成。编写程序时只能使用逻辑地址。段基址是段寄存器给出的段起始地址;偏移量为存储单元在段内相对于段起始地址的偏移距离,也称为偏移地址段基址和偏移量都为1
17、6位逻辑地址的表示形式段基址:偏移量段基址来自段寄存器。偏移量通常来自指令指针寄存器、基址寄存器、指针寄存器和变址寄存器,也可以由其中几个寄存器的内容组合而成。,逻辑地址和物理地址,访问存储器的操作数类型不同,使用的段寄存器和段内偏移量的来源也不同。 实模式下,缺省的段寄存器和偏移地址的结合方式:CS IP 指令 SS SP 堆栈操作 SS BP 存取堆栈内的数据 DS BX、SI、DI或指令中 存取数据段的的局给出的8/16位地址 部数据 ES DI 串操作的目标操作数,段寄存器 偏移地址 操作类型,物理地址是CPU与存储器进行数据交换时实际寻址所使用的地址。实模式下物理地址为20位。每个内
18、存单元的物理地址都是唯一的,同一个物理地址可以由不同的逻辑地址来构成。,逻辑地址和物理地址,例. 假设段寄存器内容为002A,偏移量为0023,求构成的物理地址,程序员在编制程序时要把存储器划分成段,实模式下段内地址16位,所以每个段的大小最大可达64KB。实际编程时,可以根据需要来确定段大小,可以是64K范围内的任意字节数。段不能起始于任意地址,而必须从分段(paragraph)的首地址开始。分段:从0地址开始每16字节为一个分段。 00000H,00001H,00002H,0000EH,0000FH 第0分段 00010H,00011H,00012H,0001EH,0001FH 00020
19、H,00021H,00022H,0002EH,0002FH FFFF0H, FFFF1H, FFFF2H, , FFFFEH, FFFFFH 第64K-1个分段其中第一列就是每个分段的首地址。,逻辑地址和物理地址,逻辑地址和物理地址,JMP F000:0100MOV AX, D000 MOV DS, AX MOV AX, A320 MOV SS, AX MOV AX, 7200 MOV ES, AX MOV AX, 3000 MOV FS, AX MOV AX, 1000 MOV GS, AX,CS DS SS ES FS GS,F000 D000 A320 7200 3000 1000,64
20、K 代码段,64K 数据段,64K 堆栈段,64K 数据段E,64K 数据段F,64K 数据段G,FFFFFF0000D0000A320072000300001000000000,F000:0100,堆栈操作,堆栈是按照“先进后出”原则组织的存储区域,实模式下堆栈的大小最大为64KB堆栈由堆栈段寄存器SS和堆栈指针寄存器SP来寻址,SS给出堆栈段的段基址,SP指向当前栈顶段基址到栈顶的偏移量栈底为堆栈空间的高地址单元,栈顶为低地址单元。实模式下,堆栈操作以字为单位。 数据进栈,栈顶向低地址方向浮动,高位字节存入高地址单元,低位字节存入低地址单元 数据出栈,栈顶向高地址方向浮动,低位字节弹到目的
21、操作数的低位,高位字节弹到目的操作数的高低位,堆栈操作,2.4 实模式输入/输出地址空间,Pentium微处理器的I/O地址空间与内存地址空间是相互独立的,I/O地址空间安排I/O端口。 I/O地址空间的地址范围0000FFFF共64KB,I/O地址仅为16位,习题,1.实模式下Pentium微处理器的堆栈操作是怎样进行的,试举例说明 2.字ABCD(H)存放在地址为0A002 (H)的存储单元中,如何存放,是对准字还是非对准字? 3.双字F0237614(H)存放在地址为0A002 (H)的存储单元中,如何存放,是对准双字还是非对双准字? 4.在实模式下,物理地址是如何形成的?计算下列逻辑地
22、址对应的物理地址: 1000:1234 0100:ABCD F000:FFF0 0020:AA00,8086的总线周期的概念,8086 CPU通过总线对存储器或I/O端口进行一次访问所需要的时间称为一个总线周期,为了取得指令或传送数据,就需要CPU的总线接口部件执行一个总线周期。 一个典型的总线周期序列为:,8086的总线周期的概念,典型的总线周期通常由4个时钟(状态)周期T1、T2、T3和T4组成。 T1为地址周期。CPU通过地址/数据(或地址/状态)复用总线发出地址信息,指示要寻址的存储器单元或者I/O的地址。 T2为缓冲周期。例如,在总线读周期,CPU在T2撤销低16位地址信号,使该组信
23、号线浮空,准备接收存储器或I/O的数据。总线高4位(A19 A16 )输出总线周期的状态信息,用来表示中断允许状态、当前正在使用的段寄存器名等。 T3为数据周期。数据出现在复用总线的低16位上。总线高4位(A19 A16 )继续输出总线周期的状态信息。 由于外设或存储器速度慢,这时可以通过ready信号在T3状态启动之前向CPU发一个“数据未准备好”信号,这时在T3之后插入1个或多个TW等待周期。在TW状态,总线上的信息和T3状态信息情况一样。当ready收到准备好信号,会自动脱离TW 进入T4 T4 总线周期结束。,8086的总线周期的概念,空闲周期: 系统总线处在空闲状态,此时,执行空闲周
24、期T1。,8086的总线周期的概念,空闲周期 只有在CPU和内存或I/O接口之间传输数据,以及填充指令队列时,CPU才执行总线周期。其他时间处于空闲周期 在空闲周期中,可以包括1个时钟周期或多个时钟周期。在此期间,高4位上,CPU仍然驱动前一个总线周期的状态信息,如果前一个总线周期为写周期,那么在总线低16位上继续驱动数据信息;如果前一个周期为读周期,则总线低16位为高阻状态。,3.2 8086的外部结构,最小模式和最大模式的概念 8086的引脚信号和功能 8086的最小模式 8086的最大模式,最小模式和最大模式的概念,最小模式,就是在系统中只有8086一个微处理器。在这种系统中,所有的总线
25、控制信号都直接由8086产生,因此,系统中的总统控制电路被减到最少。这些特征就是最小模式名称的由来。 最大模式是相对最小模式而言的。最大模式用在中等规模的或者大型的8086系统中。在最大模式系统中,总是包含有两个或多个微处理器,其中一个主处理器就是8086,其他的处理器称为协处理器,它们是协助主处理器工作的。,8086的公用引脚信号,GND、VCC 地和电源 AD15AD0地址数据复用引脚 A19/S6A16/S3(Address/Status)地址状态复用引脚 /S7高位数据总线允许状态复用引脚 NMI(Non-Maskable Interrupt)非屏蔽中断输入引脚 INTR(Interr
26、upt Request)可屏蔽中断请求信号输入 RD(Read)读信号输出 CLK(Clock)时钟输入 RESET(Reset)复位信号输入 READY(Ready)“准备好”信号输入 TEST(Test)测试信号输入 MN/ 最小最大模式控制信号输入,8086的公用引脚信号,地址/数据复用信号,双向,三态。 T1状态(地址周期)AD15AD0上出现的是低16位的地址信号A15A0; T2 T3,对于读总线周期处于浮空状态,而对于写周期来说,则是传输数据。 CPU在响应中断时,以及系统总线“保持响应”时,都被浮置为高阻状态。,返回,8086的公用引脚信号,A19/S6A16/S3 (Addr
27、ess/Status): 地址/状态复用信号(标号3538),输出。 T1状态(地址周期)A19/S6A16/S3上出现的是地址的高4位。 在T2T4状态,A19/S6A16/S3上输出状态信息。 S6:指示8086当前是否与总线相连。S60表示8086连在总线上。 S5:表示中断允许标志状态。S5=1表示中断允许标志IF=1(对可屏蔽中断请求起作用)。S5=0表示IF=0,禁止可屏蔽中断。 S4 和S3用来指出当前使用的段寄存器。S4、S3代码组合对应的含义如表2-2所示:,8086的公用引脚信号,返回,表2-2段寄存器状态线,8086的公用引脚信号,BHE/S7 (Bus High Ena
28、ble/Status):数据总线高8位使能和状态复用信号输出。 T1状态,如果BHE有效,表示数据线上高8位数据是有效的。 在T2T4状态BHE/S7 输出状态信息S7。S7在8086中未做实际定义。 8086有16位数据线。BHE用来作为数据总线高8位的使能信号。AD0除了传输数据或地址信息还作为低8位数据的选通信号。BHE信号和AD0信号的组合,可以用来通知连接在总线上的存储器和I/O接口,CPU将进行哪一种格式的数据操作。,8086的公用引脚信号,表2-3BHE和A0的代码组合和对应的操作,返回,8086的公用引脚信号,NMI不受中断允许标志的影响。当CPU检测到NMI有一个正沿触发的信
29、号以后,CPU执行完当前指令便响应中断类型号为2的非屏蔽中断请求。,返回,8086的公用引脚信号,INTR(Interrupt Request):可屏蔽中断请求(标号18),输入,高电平有效。如果INTR信号有效,当CPU的中断允许标志IF=1时,CPU结束当前指令后,响应INTR中断。,返回,8086的公用引脚信号,读信号(标号32),输出,三态。RD信号有效,表示CPU执行一个对存储器或I/O端口的读操作,在一个读操作的总线周期中,RD在T2T3状态中有效,为低电平,返回,8086的公用引脚信号,RESET(Reset):复位信号输入,高电平有效。复位信号有效时,CPU结束当前操作并对标志
30、寄存器FLAG 、IP、DS、SS、ES及指令队列清零,并将CS设置为FFFFH。当复位信号撤除时,(即电平由高变低时)CPU从FFFF0H开始执行程序。,返回,8086的公用引脚信号,READY(Ready):准备好信号输入,高电平有效。 为了CPU能和不同速度的存储器或I/O接口进行连接,设计了READY信号。 CPU在每个总线周期的T3状态对READY进行采样。当READY信号有效时表示存储器或I/O准备好发送或接收数据。CPU执行典型的总线周期,在4个T状态内完成总线操作。 如果存储器或I/O的速度较慢,不能与CPU的速度相匹配,可令READY为低。CPU在T3采样到READY为低电平
31、以后,便在T3之后插入Tw,延长读写周期,使CPU能和较慢速度的存储器或I/O接口相匹配。,返回,8086的公用引脚信号,TEST (Test):测试信号输入,低电平有效。TEST信号和WAIT指令结合起来使用,在CPU执行WAIT指令时,CPU便一直处于空转状态,进行等待。只有当8086检测到TEST信号有效时,才结束等待状态,继续执行WAIT之后的指令。,8086的最小模式下的专用引脚,INTA (Interrupt Acknowledge)中断响应信号输出 ALE(Address Lock Enable)地址锁存允许信号 DEN (Data Enable)数据允许信号 DT/R(Data
32、 Transmit/Receive)数据收发信号输出 M/IO (Memory/Input and Output)存储器输入输出控制信号输出 WR (Write)写信号输出 HOLD(Hold Request)总线保持请求信号输入 HLDA(Hold Acknowledge)总线保持响应信号输出,8086的最小模式下的专用引脚,INTR(Interrupt Request):可屏蔽中断请求输入,高电平有效。如果INTR信号有效,当CPU的中断允许标志IF=1时,CPU结束当前指令后,响应INTR中断。,返回,8086的最小模式下的专用引脚,ALE(Address Latch Enable):地
33、址锁存使能信号,输出,高电平有效。 用来作为地址锁存器的锁存控制信号。8086的AD15AD0是地址/数据复用信号,地址信息仅在T1状态有效,为了使地址信号在整个读写周期都有效,通常要用ALE把地址信号锁存在地址锁存器当中。,返回,8086的最小模式下的专用引脚,DT/R(Data Transmit/Receive): 数据驱动器数据流向控制信号,输出,三态。在8086系统中,通常采用8286或8287作为数据总线的驱动器,用DT/R信号来控制数据驱动器的数据传送方向。当DT/R1时,数据驱动器进行数据发送;DT/R0时,数据驱动器进行数据接收。,返回,8086的最小模式下的专用引脚,M/IO
34、(Memory/Input and Output):存储器或I/O控制信号,输出,三态。 M/IO输出为高电平,指示CPU正在执行存储器访问指令,进行和存储器之间数据交互;如果为低电平,表示CPU正在执行I/O 指令,进行和I/O接口之间数据传输。,返回,8086的最小模式下的专用引脚,WR(Write):写信号,输出,三态。WR信号有效,表示CPU执行一个对存储器或I/O端口写操作,在写操作总线周期中,WR在T2T3状态中有效,为低电平。,返回,8086的最小模式下的专用引脚,HOLD(Hold Request):总线保持请求,输入,高电平有效。当系统当中除CPU之外的另一个总线主模块(如D
35、MA)要求使用总线时,该总线主模块通过HOLD信号向CPU发出总线请求。如果CPU允许让出总线,就在完成当前总线周期后,在T4状态通过HLDA脚发出应答信号,响应总线的请求。,返回,8086的最小模式下的专用引脚,HLDA:总线保持响应信号,输出,高电平有效。HLDA有效时表示CPU响应了其他总线主的总线请求,一旦HLDA有效,CPU的数据/地址控制信号变为高阻状态,而请求总线的总线主(DMA)获得了总线权。,8086在最小模式下的典型配置,8086的最大模式,QS1、QS0(Instruction Queue Status)指令队列状态信号输出 S2、S1、S0(Bus Cycle Stat
36、us)总线周期状态信号输出 (Lock)总线封锁信号输出 1 0(Request/Grant)总线请求信号输入总线请求允许信号输出,8086的最大模式,QS1、QS0(Instruction Queue Status):指令队列状态信号,输出。QS1,QS0组合起来表示前一个时钟周期中指令队列的状态,这组信号的设置为的是可以从外部对8086指令队列的动作进行跟踪。用于对芯片的测试。,8086的最大模式,QS10 QS00:无操作; QS11 QS00:队列为空; QS10 QS01:从指令队列的第一个字节中取走代码; QS11 QS01:除第一个字节以外,取后面字节的代码。 通常,QS1、QS
37、0用于对CPU指令队列动作情况跟踪,用于对CPU的测试。,返回,8086的最大模式,S2、S1、S0(Bus Cycle Status):总线周期状态信号,输出。这三个信号的组合表示当前执行的总线周期的类型。在最大模式下,用这三个信号作为总线控制器8288的输入,产生存储器、I/O的读、写等控制信号。S2、S1、S0的组合意义参见表2-5:,返回,8086的最大模式,表2-5:S2、S1、S0的代码组合和对应的总线操作,返回,8086的最大模式,LOCK( Lock):总线封锁信号(标号29),输出。用来封锁其它总线主的总线请求,当LOCK为低电平时,系统中其他总线主就不能占用总线。LOCK信
38、号是由指令前缀LOCK产生的。在LOCK前缀后的指令执行完之后,硬件上便撤销了LOCK信号。,返回,8086的最大模式,RQ#/GT1#、RQ#/GT0#( Request/Grant):总线请求信号/总线请求允许信号(标号31、30),双向。CPU以外的两个处理器可以分别用其中之一来请求总线并接受CPU对总线请求的允许。其中RQ#/GT0#优先级高于RQ#/GT1#。,8086在最大模式下的典型配置,3.1 8086CPU的基本操作时序,系统的复位和启动操作; 暂停操作; 总线操作; 中断操作; 最小模式下的总线保持; 最大模式下的总线请求/允许。,系统的复位和启动操作,8086的复位和启动
39、操作是通过RESET引脚上的触发信号来实现的。 8086要求复位信号RESET起码维持个时钟周期的高电平,如果是初次加电引起的复位,则要求维持不小于50微秒的高电平。 当RESET信号一进入高电平,8086 CPU就会结束现行操作,并且,只要RESET信号停留在高电平状态,CPU就维持在复位状态。在复位状态,CPU各内部寄存器都被设为初值。 从右表中看到,在复位的时候,代码段寄存器CS和指令指针寄存器IP分别初始化为FFFFH和0000H。所以在复位之后再重新启动时,便从内存的FFFF0H处开始执行指令。因此,一般在FFFF0H处存放一条无条件转移指令,转移到系统程序的入口处。这样,系统一旦启
40、动,便自动进入系统程序。,最小模式下的总线读操作时序图,8086 最小模式下写周期时序,最大模式下的总线读操作时序,最大模式下的写操作时序,空操作时序,只有在CPU和内存及I/O接口之间传输数据时,CPU才执行总线周期;CPU在不执行总线周期时,总线接口部件就不和总线打交道,此时,进入总线空闲周期。 总线空闲周期中,状态信息S6S3和前一个总线周期(可能为读周期,也可能是写周期)的一样。如果前面一个总线周期是写周期,地址数据复用引脚上还会在空闲周期中继续驱动前一个总线周期的数据AD15AD0。如果前面一个总线周期是读周期,则AD15AD0在空闲周期中处于高阻状态。 在空闲周期中,尽管CPU对总
41、线进行空操作,但在CPU内部,仍然进行着有效的操作。比如执行某个运算,在内部寄存器之间传输数据等,按照8086编程结构,可以想到这些动作都是由执行部件进行的。实际上,总线空操作是总线接口部件对执行部件的等待。,练习题,8088CPU有6个状态标志,其中的4个是_、_、_、_。 8086的存储器空间最大为_,利用_方法可以实现16位寄存器对20位地址的寻址,写出取指令时,20位物理地址的形成情况_。 加电启动时,8086的启动程序应从_开始执行。该执行单元一般存放_指令。,8086CPU在内部结构上由_和_组成。 8086CPU的四个段寄存器分别是_、_、_、_。 8086上电复位后,其内部(C
42、S)=_,(IP)=_。 8088CPU的标志位ZF=1表示_;标志位IF=1表示_。 8088 CPU内部设置有一个_字节的指令队列寄存器。 在8086系统中,若某一存贮单元的逻辑地址为7FFF:5020H,则其物理地址为_,已知当前CS=2020H,那么该代码段的首地址为_ 8088 CPU的外部数据线有_条,内部数据线有_条。 系统总线由_、_、_三类传输线组成。 8086被复位后,寄存器(PSW)= _;(IP)=_;(CS)=_。,8086与8088这两个微处理器在结构上有何相同点,有何主要区别? 答:相同点: (1)内部均由EU、BIU两大部分组成,结构基本相同。 (2)用户编程使用的寄存器等功能部件均为16位。 (3)内部数据通路为16位。主要区别 : (1)对外数据总线 8086:16位 ,8088:8位。(2)指令队列 8086:6级 ,8088:4级。,