1、第三章 80X86微处理器,本章内容,3.1 80X86微处理器简介 3.2 8086/8088微处理器 3.3 8086存储器和I/O组织 3.4 8086 CPU的时序 3.5 技术发展,本章重点、难点,本章重点 8086CPU结构,原理,存储器,时序 Intel 8028680486微处理器特点本章难点 时序,3.2 8086/8088微处理器,8088、8086基本类似 AB:20位,寄存器:16位 差别: 8088的DB:8位,而8086的DB:16位 指令预取队列:8088为4字节,8086为6字节 8088为准16位CPU,内部DB为16位,但外部仅为8位,16位数据要分两次传送
2、,3.2.1 8086内部结构,总线接口单元BIU:,执行单元EU:,控制存储器(I/O)读写,从指令队列中取出指令并执行,8086,取指令和执行指令分开进行,提高了速度,暂存寄存器,标志寄存器,EU 控制电路,AH AL,BH BL,CH CL,DH DL,SP,BP,DI,SI,通用寄存器,1 2 3 4 5 6,CS,DS,SS,ES,IP,内部寄存器,总线控制电路,地址加法器,AB20位,DB16位,8位,指令队列缓冲器,外部总线,执行单元 (EU),总线接口单元 (BIU),8086CPU结构图,AX BX CX DX,ALU 数据总线16位,数据 寄存器,指针和变址 寄存器,ALU
3、,1.总线接口单元BIU,读指令,BIU功能,读操作数,写操作数,1.总线接口单元BIU,如何用16位的寄存器实现20位地址的寻址?,存储器分段,物理地址,. . 60000H 60001H 60002H 60003H 60004H . . .,12H,F0H,1BH,08H,高地址,低地址,段地址:,DS,SS,ES,64KB,代码段,数据段,堆栈段,附加 数据段,64KB,64KB,64KB,CS,偏移地址,SP/BP,有效地址,IP,有效地址,物理地址,存放指令代码,存放程序用到的数据,字符串操作中的源字符串。,存放堆栈数据。,存放字符串操作中的目的字符串。,1.总线接口单元BIU,1)
4、段寄存器 CS:16位的代码段寄存器,管理程序段 DS:16位的数据段寄存器,管理数据段。 ES:16位的附加数据段寄存器,管理附加数据段。 SS:16位的堆栈段寄存器,管理堆栈段。,1.总线接口单元BIU,2) 16位的指令指针寄存器IP: IP中的内容是下一条要读取的指令的偏移地址,与段寄存器CS的内容相加,形成取指令的物理地址。 3)20位地址加法器 逻辑地址:其表达形式为“段地址:段内偏移地址”。 物理地址:CPU与存储器进行数据交换时在地址总线上提供的20位地址信息。 物理地址=段地址16段内偏移量,段寄存器,段内偏移地址,物理地址,+,16位,20位,0000,例3-1: (CS)
5、=20A8H,(IP)=2008H, 物理地址= 20A8H162008H22A88H 例3-2: (CS)=A000H,代码段可寻址的范围? CS左移四位: A000 0 HIP的内容:0000H FFFF H物理地址:A0000 H AFFFF H,1.总线接口单元BIU,1.总线接口单元BIU,4)指令队列缓冲器(6个字节) 当8086的指令队列有两个空字节,BIU自动取指令到指令队列中; 执行部件EU准备执行一条指令时,它从BIU的指令队列取指令,然后执行; 指令队列已满,BIU与EU又无总线请求时,总线接口部件进入空闲状态。 执行转移指令、调用指令、返回指令时,BIU自动清除指令队列
6、,然后从新地址取指令,并立即送给EU,然后再从新单元开始,重新填满队列机构。 8086CPU的特点:BIU与EU是分开的,取指令与执行指令可以重叠。提高执行速度。,取指,执行,取指,执行,取指,执行,取指,取指,取指,取指,得到数据,执行,执行,执行,等待,执行,1.总线接口单元BIU,课堂提问,8086执行转移指令时,指令队列怎样变化? 8086的总线接口部件有那几部分组成?,2.执行单元EU,功能:执行指令。,暂存寄存器,标志寄存器,AH AL,BH BL,CH CL,DH DL,SP,BP,DI,SI,通用寄存器,1 2 3 4 5 6,CS,DS,SS,ES,IP,内部寄存器,总线控制
7、电路,地址加法器,AB20位,DB16位,8位,指令队列缓冲器,外部总线,执行单元 (EU),总线接口单元 (BIU),8086CPU结构图,AX BX CX DX,ALU 数据总线16位,数据 寄存器,指针和变址 寄存器,ALU,通用寄存器,四个专用寄存器 SP:堆栈指针 BP:基址指针: SI: 源变址寄存器 DI:目的源变址寄存器,算术逻辑单元ALU: 主要是加法器。大部分指令的执行由加法器完成。,EU 控制电路,16位字利用了9位。,3.2.2 8086寄存器结构,含14个16位寄存器,按功能可分为三类8个通用寄存器4个段寄存器2个控制寄存器,1.通用寄存器,包括四个数据寄存器、两个地
8、址指针寄存器和两个变址寄存器 1)四个数据寄存器: AX、BX、CX、DX,每个16位寄存器可作为2个8位寄存器独立使用。16位 8位 8位AX AH ALBX BH BL CX CH CLDX DH DL,数据寄存器特有的习惯用法,AX:累加器。多用于存放中间运算结果。所有I/O指令必须都通过AX与接口传送信息; BX:基址寄存器。在间接寻址中用于存放基地址; CX:计数寄存器。用于在循环或串操作指令中存放循环次数或重复次数; DX:数据寄存器。在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。,3.2.2 Intel 8086寄存器结构,2)地址指针寄存器S
9、P:堆栈指针寄存器,内容为栈顶的偏移地址,执行进栈、出栈操作时,SP自动加2或减2。BP:基址寄存器:存放操作数在堆栈段内的偏移地址。 3)变址寄存器SI:(Source Index):源变址寄存器,存放字符串操作时源串在数据段内的偏移地址。DI:(Destination Index):目的变址寄存器,存放字符串操作时目的串在附加数据段内的偏移地址。,2.段寄存器CS:代码段寄存器,用来存储程序当前使用的代码段的段地址。DS:数据段寄存器,用来存储程序当前所使用的数据段的段地址。SS:堆栈段寄存器,用来存储程序当前所使用的堆栈段的段地址。ES:附加数据段寄存器,用来存储程序当前所使用的附加数据
10、段的段地址。,3.2.2 Intel 8086寄存器结构,3.2.2 Intel 8086寄存器结构,3.2.2 Intel 8086寄存器结构,3、 标志寄存器PSW:16位字利用了9位。 标志分两类: 状态标志(6位):反映刚刚完成的操作结果情况。 控制标志(3位):在某些指令操作中起控制作用。,状态标志位 进位标志CF: 运算结果有进位或借位,CF=1,否则CF=0; 奇偶校验标志PF: PF1,表示执行指令结果中的低8位有偶数个1 ; PF0,表示执行指令结果中的低8位有奇数个1 ; 辅助进位标志AF:当AF=1,表示结果的低4位产生一个进位或借位; AF=0,表示无进位或借位; 零标
11、志ZF: 结果为零,ZF=1;否则ZF=0; 符号标志SF:当SF1,表示运算结果为负数;当SF0,表示运算结果为正数; 溢出标志OF: OF=1,表示带符号数在进行算术运算时产生了算术溢出; OF=0,表示无溢出。,控制标志位 跟踪标志TF:为了使程序调试方便而设置的。若TF1,CPU处于单步工作方式,每执行完一条指令就自动地产生一个内部中断,转去执行一个中断服务程序。若TF0,CPU正常执行。 中断允许标志IF: 中断允许标志。若用STI将IF置1,8086 CPU开中断,允许接收外部从INTR引脚发来的可屏蔽中断请求;若用CLI将IF0,8086 CPU关中断,不能接收INTR发来中断请
12、求。IF的状态不影响非屏蔽中断NMI请求,也不影响CPU响应内部产生的中断请求。 方向标志DF:用来控制数据串操作指令的步进方向。若用STD将DF置1,数据串指令将以地址的递减的顺序进行处理;若用CLD清除DF时,数据串指令则以自动递增顺序从低位地址到高位地址进行处理。,例3-3:设x=11101111B,y=11001000B,X=0101101100001010B,Y=0100110010100011B,分别执行x+y和XY操作后标志寄存器中各状态位的状态如何?,CF= PF= AF= ZF= SF= OF=,1,1,1,0,1,0,CF= PF= AF= ZF= SF= OF=,0,0,
13、0,0,1,1,3.2.2 Intel 8086寄存器结构,标志寄存器功能举例,0101 0100 0011 1001 5439H + 0100 0101 0110 1010 456AH1001 1001 1010 0011低8位中“1”的个数为偶数,PF=1 运算结果不为0,ZF=0 低4位向前有进位,AF=1 最高位向前没有进位,CF=0,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,O D I T S Z A P C,课堂提问:,8086/8088内部有哪些通用寄存器? 8086的执行部件有什么功能?由那几部分组成? 8086CPU状态标志和控制标志又何不同
14、?程序中是怎样利用这两类标志的? 8086的状态标志和控制标志分别有哪些?,3.2.3 8086引脚及其功能,学习外部特性,首先了解其引脚信号,关注以下几个方面: 引脚的功能 信号的流向 有效电平 三态能力,输出正常的低电平、高电平外,还可以输出高阻的第三态,8086与8088CPU引脚区别: 8086有16位数据线,与地址线A0-A15兼用;20位地址线,寻址空间达到1MB;8088有8位数据线,与地址线A0-A7兼用; 8086与8088CPU引脚28信号相反(M/IO,IO/M) 引脚34信号,功能与8086稍有不同。 引脚分类 地址总线、数据总线、控制总线,1. 8086CPU引脚功能
15、,非屏蔽中断,可屏蔽中断请求,最小最大模式控制 MN/MX=1,最小模式 MN/MX=0,最大模式,读信号,总线保持请求信号,总线保持相应信号,写信号,存储器/IO控制信号 M/IO=1,选中存储器 M/IO=0,选中IO接口,数据发送/接收信号 DT/R=1,发送 DT/R=0,接收,数据允许信号,地址允许信号,中断响应信号,测试信号:执行WAIT指令, CPU处于空转等待; TEST有效时,结束等待状态。,准备好信号:表示内存 或I/O设备准备好, 可以进行数据传输。,复位信号,1. 8086CPU引脚功能,1. 8086CPU引脚功能,最小组态(模式) MN/MX接+5V 构成小规模的应
16、用系统,只有8086一个微处理器, 所有的总线控制信号均为8086产生,系统中的总线控制逻辑电路,减少到最少。 最大组态(模式) MN/MX接地。 用于大型(中型)8086/8088系统中,系统总是包含有两个或多个微处理器,其中一个主处理器就是8086或8088,其它的处理器称协处理器,协助主处理器工作。 需要总线控制器来变换和组合控制信号。,思考题,从引脚信号上看,8086和8088有什么不同 ? 8086/8088 有两种工作方式,它们是通过什么方法来实现?在最大方式下其控制信号怎样产生?,2.8086的最小模式,1、MN/MX接+5V; 2、一片8284作为时钟发生器; 3、三片8282
17、或74LS373作为地址锁存器; 4、二片8286/8287作为总线驱动器;,三态门具有单向导通和三态的特性,E A B 0 0/1 高阻状态 1 0/1 0/1,常见单向锁存器8282,2.8086的最小模式,8282锁存器,OE0,导通 T1 AB T0 AB OE1,不导通,双向三态门具有双向导通和三态的特性,双向三态缓冲器,双向8位三态缓冲器8286,控制端连接在一起,低电平有效 可以双向导通 输出与输入同相,每一位都是一个双向三态门, 8位具有共同的控制端,8286,8282锁存器与8086的连接,T=1,发送;T=0,接收,3.2.3 8086引脚及其功能,3. 最大模式,MN/M
18、X(33引脚)引线接地时,处于最大模式。 QS0、QS1(25、24引脚):队列状态信号。0 0 无 操作0 1 取走指令队列第一个字节1 0 队列空1 1 取走指令队列后续字节代码,特点:需要总线控制器来变换和组合控制信号。,3. 最大模式,S2、 S1、 S0 :输出(28、27、26引脚) 0 0 0 中断响应0 0 1 读I/O口0 1 0 写I/O口 0 1 1 暂存1 0 0 取指令 1 0 1 读存储器1 1 0 写存储器 1 1 1 无源状态,RQ/GT1、 RQ /GT0(30、 31引脚) 请求和允许的顺序如下: 1)由其它的总线主设备,输送一个宽度为一个时钟周期的脉冲给8
19、086,表示总线请求,相当于HOLD信号。 2)CPU在当前的T4或下一个的T1状态,输出一个宽度为一个时钟周期的脉冲给请求总线的设备,作为总线响应信号HLDA,从下一个时钟周期开始,CPU释放总线。 3)当外设的DMA传送结束时,总线请求主设备输出一个宽度为一个时钟周期的脉冲给CPU,表示总线请求的结束。于是CPU在下一个时钟周期开始又控制总线。,双向,请求/允许信号 可供CPU以外的两个处理器发总线请求/允许信号。RQ/GT0优先级比RQ/GT1更高。LOCK (29引脚) 输出,三态 总线锁定信号,由指令的前缀产生。最大模式为多处理器系统,共用一条外部总线,需要增加总线控制器,来完成多处
20、理器的分时控制。,8086在最大模式下的典型配置: 1、MN/MX接地; 2、一片8284,作系统时钟 3、三片8282或74LS373,作锁存器 4、二片8286/8287,作数据收发器 5、一片8288,作总线控制器 6、一片8259,3.2.3 8086引脚及其功能,课堂提问:,8086/8088 CPU 有40条引脚,请按功能对它们进行分类? 8086/8088 有两种工作方式,它们是通过什么方法来实现?在最大方式下其控制信号怎样产生?,3.3 8086存储器和I/O组织,3.3.1 8086存储器组织1. 8086存储空间 8086:20条地址线,直接访问1MB的存储空间。 物理地址
21、为:00000HFFFFFH。 存储器按字节组织,每个字节用唯一的地址码表示。,八位数,按顺序排列存放; 一个字,高位字节存放在高地址中,低位字节存放在低地址中; 双字(通常作为指针的数),其低位地址中低位字是被寻址地址的偏移量,其高位地址中高位字是被寻址地址的段的基址; 对存放的字,其低位字节可以在奇数地址,也可在偶数地址。,非规则存放,规则存放,一个总线周期,两个总线周期,1. 8086存储空间,2. 8086存储器的段结构,实地址方式存储器组织 8086有20条地址引线,它的直接寻址能力为2201M字节。 8086内部的ALU能进行16位运算,有关地址的寄存器如SP、IP,以及BP、SI
22、、DI等也都是16位的,因而8086对地址的运算也只能是16位。,对于8086来说,各种寻址方式,寻找操作数的范围最多只能是64K字节。 整个1M字节存储器以64K为范围分为若干段。 在寻址一个具体物理单元时,必须要由一个基地址再加上由SP或IP或BP或SI或DI等可由CPU处理的16位偏移量来形成实际的20位物理地址。 这个基地址就是由8086中的段寄存器,即代码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS以及附加段寄存器ES中的一个来形成的。 在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后与16位偏移量相加。,3、逻辑地址与物理地址,物理地址的产生,10H段地址+偏移
23、地址=物理地址 例:DS=1000H,1 0 0 0 0+ 5 0 1 A1 5 0 1 A 1501AH单元的内容为20H,加法器,例如:代码寄存器CS2000H,IP2200H,则物理地址为( )。,22200H,例:,已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H,DS段有一操作数,其偏移地址=0204H,1)画出各段在内存中的分布2)指出各段首地址3)该操作数的物理地址=?,解: 各段分布及段首址见右图所示。操作数的物理地址为:250AH10H+0204H = 252A4H,4.堆栈,堆栈段在存储区中的位置由堆栈寄存器SS和堆栈指针SP来规定。SS存放堆栈的
24、首地址,SP中存放栈顶的地址。,34,12,BB,AA,12,34,A19A1,A0,5.8086存储器结构,课堂提问:,存储器的逻辑地址由哪几部分组成?存储器的物理地址是怎样形成的? 一个具有20位地址线的CPU,其最大物理地址为多少? 在 8088/8086中,逻辑地址FFFF0001, 00A237F和B800173F的物理地址分别是多少?,3.3.2 I/O端口组织,作用:8086 CPU和外部设备之间是通过I/O芯片进行联系,达到相互间传输信息的目的。 I/O芯片上都有一个端口或几个端口。 微机系统为每个端口分配一个地址(称为端口地址或端口号),并具有唯一性。 8086的I/O端口有
25、以下两种编址方法: 1.采用存储器映象的I/O将I/O端口地址置于1MB的存储器空间中,把它们看作存储器单元对待,因此,存储器的各种寻址方式都可用于寻址端口。 2.采用独立编址的I/O8086设有专门的输入指令IN和输出指令OUT,以对独立编址I/O端口进行操作。,3.4 8086CPU的时序,主要操作 系统复位与启动 暂停 总线操作 中断操作,1 . 时序基本概念,指令周期:执行一条指令的时间。 总线周期:CPU从存储器或I/O端口读写一个字节(字)的时间。 时钟周期:CPU的基本时间单位。 T状态:一个基本时钟周期又称T状态。 基本总线周期:4个T状态 T1状态:A19A0上是地址信息,出
26、现ALE信号后,将地址锁存到地址锁存器(8282)。 T2状态:地址信息消失,A19-A16从地址信息变为状态信息S6-S3。,2. 8086CPU的典型时序,总线操作是指CPU通过总线对外的各种操作 8088的总线操作主要有: 存储器读、存储器写 I/O读操作、I/O写操作 中断响应操作 总线请求及响应操作 CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti 复位,例:MOV AL,1000H ;M/IO=1 T1状态:A19A0上是地址信息,出现ALE信号后,将地址锁存到地址锁存器(8282)。 T2状态:地址信息消失,A19-A16从地址信息变为状态信息S6-S3。数据允许信号D
27、EN在T2状态有效。 T3状态:AD0AD15上出现数据。信号有效 TW状态:若存储器式外设的工作速度较慢,不能满足基本时序要求,使用一个产生READY的电路,以使在T3状态之后,插入一个等待周期TW。 T4状态,CPU采样数据,结束一个总线周期。,1、存储器读周期,3.4 8086CPU的时序,2、存储器写周期时序,例:MOV 1000H, AL ;M/IO=1 T1状态:A19A0上是地址信息,出现ALE信号后,将地址锁存到地址锁存器(8282)。 T2状态:地址信息消失,A19-A16从地址信息变为状态信息S6-S3。 T3状态:AD0AD15上出现数据。WR信号有效(WR=0)。 TW
28、状态:若存储器式外设的工作速度较慢,不能满足基本时序要求,使用一个产生READY的电路,以使在T3状态之后,插入一个等待周期TW。 T4状态,CPU认为数据已写入存储器,结束一个总线周期。,3、I/O接口读写周期时序 I/O接口读写周期时序与存储器读写周期类似。 仅M/IO不同 例1:IN AL,40H ;M/IO=0,RD=0,ALE=1 例2:OUT 43H,AL ;M/IO=0,WR=0,ALE=1 4、空转周期CPU不执行总线周期不进行存储器或I/O操作,则总线执行空转周期(一系列T1状态)。,5、最大组态的存储器写周期时序,由8288 产生,6、最大组态的存储器读周期时序,课堂提问:
29、,在 80868088CPU工作在最小模式时, (l)当CPU访问存储器时,要利用哪些信号? (2)当CPU访问外设接口时,要利用哪些信号? 8086/8088 I/O 的读/写周期时序与M 读/写周期的主要差异是什么?,7、系统复位与启动,通过RESET引腿上的触发信号来执行。标志寄存器 : 清零指令指针(IP): 0000HCS: FFFFHDS、ES、SS : 0000H指令队列 : 空其它寄存器 : 0000H 复位脉冲的有效电平(高)必须超过4个时钟周期(开启电源引起的复位时间大于50s),复位后地址总线浮空 复位后,第一条指令的地址: 物理地址为 FFFF0+OOOOH(IP中)=
30、FFFFOH一般在FFFFO中,存放一条段交叉直接JMP指令,转移到系统程序实际开始处。这个程序往往实现系统初始化、引导监控程序或者引导操作系统等功能,这样的程序叫做引导和装配程序。,外部中断通过INTR或NMI向CPU申请中断。执行中断响应周期,8、中断响应周期,第一个中断响应周期 T1状态:AD15-AD0浮空;IF=1,给出中断响应信号INTA。 第二个中断响应周期;被响应的外设数据线送一个字节的中断矢量类型, CPU读入后,从中断矢量表上找到服务程序的入口地址。,思考题:,8086/8088 CPU 在响应外界中断请求后,需要进入中断响应周期,分析该周期有什么特点? 软件中断指令会执行
31、中断响应周期否?,本章小结,微处理器简介8086微处理器 内部结构 寄存器结构 引脚及其功能 8086存储器组织和I/O组织 8086时序,第二章 思考题,2.1 8086 CPU在内部结构上由哪几部分组成?其功能是什么? 2.2 8086的总线接口部件由哪几部分组成? 2.3 8086的执行部件有什么功能?由哪几部分组成? 2.4 8086CPU状态标志和控制标志有何不同?程序中是怎样利用这两类标志的? 8086的状态标志和控制标志分别有哪些? 2.5 CPU执行转移指令时,指令队列寄存器内容如何变化? 2.6 8086/8088和传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什
32、么优点? 2.7、将两数相加,即0100 1100加 0110 0101,CF、PF、AF、ZF、SF、OF各为何值? 2.7 存储器的逻辑地址由哪几部分组成?存储器的物理地址是怎样形成的?一个具有20位地址线的CPU,其最大物理地址为多少?,2.8 现有6个字节的数据分别为11H,22H,33H,44H,55H,66H,已知它们在存储器中的物理地址为400A5H400AAH若当前(DS)= 4002H,请说明它们的偏移地址值。如果要从存储器中读出这些数据,需要访问几次存储器,各读出哪些数据? 2.10 在 8088/8086中,逻辑地址FFFF0001, 00A237F和B800173F的物理地址分别是多少? 2.11 在 8088/8086中,从物理地址388H开始顺序存放下列三个双字节的数据,651AH, D761H和007BH,请问物理地址388H, 389H, 38AH, 38BH, 38CH和38DH 6个单元中分别是什么数据? 2.12 8086CPU的形成三大总线时,为什么要对部分地址线进行锁存?用什么信号控制锁存? 2.13 段寄存器CS=1200H,指令指针寄存器IP=4000H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?,