520 likes | 1.08k Views
第二章 8086/8088系统结构. 主要内容 8086/8088微处理器的内部结构 8086/8088 CPU 的引脚与功能 8086/8088系统结构 堆栈概念. EU 负责指令的执行, 从 BIU 的指令队列中取指令和数据,不直接与外部总线相连. BIU 根据 EU 的请求,完成 CPU 与存贮器或 I/O 设备之间的数据传送. 2.1 8086/8088微处理器的内部结构 2.2.1 8086/8088 CPU 的内部结构. 1. 8086 CPU 的组成. 16位通用寄存器组 ( AX、BX、CX、DX、SP、BP、SI、DI)
E N D
第二章 8086/8088系统结构 • 主要内容 • 8086/8088微处理器的内部结构 • 8086/8088 CPU 的引脚与功能 • 8086/8088系统结构 • 堆栈概念
EU负责指令的执行,从BIU的指令队列中取指令和数据,不直接与外部总线相连EU负责指令的执行,从BIU的指令队列中取指令和数据,不直接与外部总线相连 BIU根据EU的请求,完成CPU与存贮器或I/O设备之间的数据传送 2.1 8086/8088微处理器的内部结构2.2.1 8086/8088 CPU的内部结构 1. 8086CPU的组成 • 16位通用寄存器组 • (AX、BX、CX、DX、SP、BP、SI、DI) • 算术逻辑单元——ALU • EU控制器 • 标志寄存器——FLAG EU CPU • 段寄存器组 • (CS、DS、SS、ES) • 指令指针——IP • 地址加法器 • 指令队列 • 总线接口控制逻辑 BIU
2 8086/8088CPU的内部结构 20位地址 AH AL BH BL CH CL DH DL SP BP SI DI 16位通用寄存器组 地址加法器 16位 CS DS SS ES IP 内部通讯 16位寄存器组 总线接口控制逻辑 16位内部总线 运算寄存器 4或6字节指令队列 EU控制器 ALU 1 2 3 4 5 6 标志寄存器 内存 外部总线(三总线) 组成 功能 工作 BIU EU
… 取指 BIU动作 … EU动作 执指
(3)86CPU选通存储器或I/O接口的信号是M/IO,低电平时选中I/O设备,高电平时选中存储器;而88CPU是IO/M信号 ,低电平时选中存储器,高电平时选中I/O接口。 (2)86CPU中的指令预取队列为6个字节,而88CPU为4个字节; (1)86 CPU的数据外总线宽度为16位,因此设有BHE;而88 CPU的数据外总线宽度为8位,把BHE引脚改为SSO; 3 8086与8088 CPU的区别
寄存器 控制器 AX 指 令 寄 存 器 控制逻辑 BX CX DX 寄存器 IP 运算器 CS BP DS SI SS DI 状态寄存器 ES SP 取指 主存 2.1.2 8086/8088 内部寄存器 微处理器一般编程结构 处理器
AX:累加器。可分成两个八位寄存器AH、AL使用。AX:累加器。可分成两个八位寄存器AH、AL使用。 BX:基址寄存器。可分成两个八位寄存器BH、BL使用。 CX:为计数器。可分成两个八位寄存器CH、CL使用。 DX:数据寄存器 。可分成两个八位寄存器DH、DL使用。 通用寄存器组
2. 指针与变址寄存器组 SP(Stack Pointer):堆栈指针寄存器BP(Base Pointer):基地址指针寄存器 SI(Source Index):源变址寄存器 DI(Destination Index):目的变址寄存器
CS:代码段寄存器 DS:数据段寄存器 SS:堆栈段寄存器 ES:附加段寄存器 IP:指令指针寄存器 3段寄存器与指令指针寄存器 注意:DS、SS和ES寄存器的内容可由程序设置,而CS寄存器的内容不能用程序设置
4.标志寄存器FLAG 用于存放CPU工作过程中的状态,其中9位有定义, 9位中6位表示状态,3位表示控制标志。 (1)状态标志位 CF:进位标志(Carry Flag)。 两个数相加时,最高位(D15或D7)有进位,或当两个数相减时,最高位有借位,进位标志位置1,即CF=1;否则CF=0。
PF:奇偶标志位(Parity Flag)。 8086/8088 CPU中采用奇校验 当运算结果低8位中“1”的个数为偶数时,PF=1;否则PF=0。 AF:辅助进位标志(Auxiliary Carry Flag)。 当两个数相加(减)时,当D3有向D4进(借)位时,AF=1,否则AF=0。
ZF:零标志位(Zero Flag)。运算结果每位都为0时,ZF=1;否则ZF=0。 SF:符号标志位(Sign Flag)。当运算结果的最高位为1时,SF=1;否则SF=0。 OF:溢出标志位(Overflow Flag )。当两个带符号数进行运算产生溢出时,OF=1;否则OF=0。
例:十六进制数0CCCCH与十六进制数5115H相加,请写出运算后六个标志状态位的值。例:十六进制数0CCCCH与十六进制数5115H相加,请写出运算后六个标志状态位的值。 解: 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 (0CCCCH) + 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 (5115H) 10 0 0 1 1 1 0 1 1 1 1 0 0 0 0 1 从运算结果看出: 最高位D15位往前有进位,所以CF=1; 运算结果不全为0,所以ZF=0; 由于D15=0,所以SF=0; 运算结果的低8位中有4个“1”,所以PF=1; D3有向D4进位,因此AF=1; 两个异号数相加,不可能发生溢出,所以OF=0。
(2) 控制标志位 TF:陷阱标志位(Trap Flag)。 当TF=1时,将使CPU进入单步执行工作方式, 主要用于程序调试; IF:中断标志位(Interrupt Flag)。 控制微处理器响应或禁止外部中断。 DF:方向标志位(Direction Flag)。 控制字节串或字串重复操作指令地址调整的步进方向。
源数据串 1 … 2 3 目的数据串 DS:SI SI+1 SI+1 ES:DI DI+1 DI+1
2.2 8086/88的引脚与功能 8086/8088CPU外形
8086 8088 GND V GND V 1 40 1 40 CC CC AD AD AD AD 2 39 2 39 14 15 14 15 AD AD16/S3 AD AD16/S3 3 38 3 38 13 13 AD AD /S AD AD /S 4 37 4 37 12 17 4 12 17 4 AD 5 36 AD /S AD 5 36 AD /S 11 18 5 11 18 5 AD 6 35 AD /S AD AD /S 6 35 10 19 6 10 19 6 7 34 AD BHE/S AD 7 34 SS (HIGH) 9 7 9 0 8 33 AD MN/MX AD MN/MX 8 33 8 8 9 32 AD RD AD 9 32 RD 7 7 10 31 AD HOLD(RQ/GT ) AD 10 31 HOLD(RQ/GT ) 6 0 6 0 11 30 11 30 AD HLDA(RQ/GT ) AD HLDA(RQ/GT ) 5 1 5 1 12 29 12 29 AD WR(LOCK) AD WR(LOCK) 4 4 13 28 13 28 AD M/IO(S ) AD M/IO(S ) 3 2 3 2 14 27 14 27 AD DT/R(S ) AD DT/R(S ) 2 1 2 1 15 26 15 26 AD DEN(S ) AD DEN(S ) 1 0 1 0 16 25 16 25 AD ALE(QS ) AD ALE(QS ) 0 0 0 0 17 24 17 24 NMI INTA(QS ) NMI INTA(QS ) 1 1 18 23 18 23 INTR TEST INTR TEST 19 22 19 22 CLK READY CLK READY 20 21 20 21 GND RESET GND RESET 8086/88的引脚
2.2 8086/88的引脚与功能 • 2.2.1 CPU的引脚与功能 • 最小模式下的引脚 • (1)A16~A19/S3~S6:分时复用的地址/状态线 • (2)AD15~AD0:8086 地址和数据总线的分时复用 • AD7~AD0:8088 地址和数据总线的分时复用 • (3)BHE:总线高位使能信号,三态输出线 • (4)M/IO(IO/M):CPU区分当前操作是访问存贮器还是访问I/O端口的三态输出控制线
(5)WR:写控制信号,输出 (6)RD:读控制信号,输出 (7)DT/R:数据传送方向控制信号,输出 (8)DEN:数据总线有有效数据控制信号,输出 (9)ALE:地址锁存信号,输出 (10)READY:准备就绪信号,输入
(11)INTR:可屏蔽中断请求输入信号,高电平有效(11)INTR:可屏蔽中断请求输入信号,高电平有效 (12)NMI:非屏蔽中断请求输入信号,边沿触发,正跳变有效 (13)INTA:中断响应信号,CPU对的INTR的响应 (14)TEST:可用WAIT指令对该引脚进行测试的输入信号,低电平有效 (15)RESET:CPU的复位输入信号,高电平有效 (16)HOLD:向CPU提出保持请求信号,高电平有效
(17)HLDA:CPU对HOLD请求的响应信号,高电平有效 (18) CLK:时钟信号输入端 (19) VCC:+5V电源输入引脚。GND:接地端 (20) MN/MX:工作模式选择输入线 当MN/MX=1时,选择最小模式; 当MN/MX=0时,选择最大模式
2. 最大模式下的引线 (1)S2、S1、S0:最大模式下经三态门输出的状态信号。这些状态信号加到总线控制器(8288)上,可以产生系统总线所需要的各种控制信号。 (2)RQ/GT0、RQ/GT1:总线请求允许引脚,具有双向功能,既是总线请求输入也是总线响应输出。 (3)LOCK:总线封锁信号,低电平有效
(4)QS1、QS0:CPU输出的队列状态信 (5)HIGH:在最大模式时始终输出高电平
2.2.2 总线周期 1. 基本概念 (1) 时钟周期:为CPU工作主频的时钟周期:T=1/f(f为主频) (2) 总线周期:CPU通过总线对存储器或I/O端口进行一次访问(读/写操作)所需的时间称为一个总线周期;一个总线周期至少包括4个时钟周期,即T1、T2、T3、T4。 (3)指令周期:指计算机完成一条指令的执行所需要的时间,它包含一个或多个总线周期。 通常采用MIPS(Million Instructions Per Second)单位,即每秒执行百万条指令的含义。
2. 最小模式读/写操作总线周期 一个总线周期 T1 T2 T3 T4 CLK A19/S6~A16/S3 地址输出 状态输出 A15~A8 地址输出 地址输出 数据输入 AD7~AD0 ALE IO/M RD DT/R DEN 图 8088 读总线周期
一个总线周期 T1 T2 T3 T4 CLK A19/S6~A16/S3 地址输出 状态输出 A15~A8 地址输出 地址输出 数据输出 AD7~AD0 ALE IO/M WR DT/R DEN 图 8088 写总线周期
2.2.3 总线接口器件 1.地址锁存器 功能:将CPU中的地址/数据复用引脚区分出独立的地址总线。与8086/8088配套的地址锁存器是8282芯片,是一个8位的数据锁存器。 2.双向三态门驱动器 数据总线采用双向三态驱动器,在8086/88系统中常用8286芯片,其中OE是输出允许控制,T是三态门传送方向控制。 当OE=0、T=0时,数据由B向A传送; 当OE=0,T=1时,数据由A向B传送。
3.总线控制器8288 8086 CPU在最大模式下工作时,要借助于总线控制器8288来形成系统的控制总线。
2.3 8086/8088系统结构 2.3.1 系统存储器结构 地址线20根,直接寻址空间为220=1M字节, 用00000H~FFFFFH表示 1.8086系统中存储器的组织 偶体:存储体中的单元都是偶地址; 奇体:存储体中的单元都是奇地址。 两个存储体之间采用字节交叉编址方式
D7~D0 D15~D8 A19~A1 D7~D0 D7~D0 SEL SEL BHE A0 图 奇偶存储体与总线的连接
2. 8086 读/写操作过程 (1)从偶地址读/写1个字节 偶地址(A0=0),控制电路自动使BHE=1,选中偶地址存储体。由地址A19~A1指定具体单元,CPU发出读/写信号,通过数据总线的低8位对该单元进行1个字节的读/写操作。 (2)从奇地址读/写1个字节 奇地址(A0=1),控制电路自动使BHE=0,奇地址存储体被选中。
(3)从偶地址开始读/写1个字 访问的两个字节单元的地址A19~A1共19位均相同,系统自动发出BHE=0的信号,使奇偶两存储体同时被选中。CPU发出读/写信号后,两个存储单元同时通过低8位和高8位数据线完成读/写操作。 (4) 从奇地址开始读/写1个字 两个字节单元不能同时选中。 首先自动发出BHE=0信号,选中奇地址存储体,通过D15~D8完成低字节的操作。 紧接着,系统自动令A0=0,BHE=1,选中偶地址存储体,通过D7~D0完成高字节的操作。
3.存储器的分段 逻辑段:每个逻辑段容量不超过64K字节,可用16位地址码直接寻址。 段间关系:各个逻辑段之间可在实际存储空间中完全分开,也可以部分重叠,甚至可以完全重叠。物理地址定位:通过段地址和相对地址确定。 段基址:段的首地址的高16位。段首地址的低4位二进制码总是0000,高16位可变。在8086系统中,把16字节的存储空间称作一节(Paragraph)
00000H 逻辑段1的起点 逻辑段1≤64KB 逻辑段2的起点 逻辑段2≤64KB 逻辑段3的起点 逻辑段3≤64KB 逻辑段4、5的起点 逻辑段4、5≤64KB FFFFFH 图 灵活的分段方式
存储器分段 低地址 段基址 段i-1 最大64KB,最小16B 段基址 段i 段基址 段i+1 段基址 高地址
4.逻辑地址和物理地址 物理地址:存储单元的实际地址编码。 物理地址=段基址×16+段内偏移地址 逻辑地址:由段基址和偏移地址两部分组成。段基址和偏移地址都是16位的无符号数。不同的逻辑地址可能是同一个物理地址。 例:段基址:偏移地址分别为1200H:0345H和1110H:1245H的两个逻辑地址对应同一个物理地址12345H。
物理地址 物理地址 . . 60000H 60001H 60002H 60003H 60004H . . . F0H • 存储器的操作完全基于物理地址。 • 问题: • 8088的内部总线和内部寄存器均为16位,如何生成20位地址? • 解决:存储器分段 12H 1BH 08H
段基地址和段内偏移组成了逻辑地址 段地址 偏移地址(偏移量) 格式为:段地址:偏移地址 物理地址=段基地址×16+偏移地址 逻辑地址 60000H 偏移地址=0002H 60002H 00H 段首地址 12H × × × • • • × × × 0 0 0 0 段基地址(16位)
BIU中的地址加法器用来实现逻辑地址到物理地址的变换BIU中的地址加法器用来实现逻辑地址到物理地址的变换 8088 可同时访问4个段,4个段寄存器中的内容指示了每个段的基地址 16位 段基址 0000 + 段内偏移 物理地址 20位
MN/MX IO/M CLK RD READY WR RESET ALE 8088 DT/R DEN 时 钟 发生器 8284 8088 系 统 总 线 信 号 8282 STB OE A19~A16 A19~A16 A15~A8 8282 STB OE A15~A8 A7~A0 8282 STB OE AD7~AD0 D7~D0 A B 8286 T OE 2.3.2最小与最大模式总线形成 1. 最小模式下的系统总线 IO/M RD WR 图 8088 最小模式下总线形成
AIOWC AMWC IOWC IORC MRDC MN/MX S0 S1 CLK S2 READY RESET 8088 S0 S1 8288 S2 DT/R DEN ALE 时 钟 发生器 8284 A19~A16 A19~A16 A15~A8 A15~A8 AD7~AD0 A7~A0 D7~D0 A B 8286 T OE 2. 最大模式下的系统总线 8282 STB OE 8282 STB OE 8282 STB OE 图 8088 最大模式下总线形成
2. 堆栈结构 堆栈位置:8086/8088的堆栈在存储器中实现,并由堆栈段寄存器SS和堆栈指针寄存器SP来定位。 堆栈大小:一个系统中可以有多个堆栈,每个堆栈的空间最大为64K字节。 堆栈个数:若有多个堆栈,只有一个现行堆栈。SS寄存器存放现行堆栈的基址,SP寄存器指向栈顶。 堆栈操作:进栈操作和出栈操作。8086/8088 CPU的堆栈操作必须以字为单位。
… 堆栈 SP=FFFAH FFFAH FFFBH SP=FFFCH FFFCH FFFDH FFFEH SS:FFFFH 堆栈: 存储器一个连续区域。这个区域数据的存取原则为:先进后出(FILO),即从栈底开始存放,从栈顶取信息。一般存放暂时不用的信息。 栈底:堆栈的最低部 栈顶:最后放进的信息所在地址 栈顶 栈顶 栈顶 SP=FFFEH 栈底 SP始终指向栈顶
2.5 微机系统中的总线结构 2.5.1 总线的分类与总线标准 1.总线分类 总线:各模块间传送信息的通道。 芯片级总线:如CPU芯片内的总线,这种总线常称内部总线。 板级总线:用于连接印刷电路板中的各个部件。 系统级总线:连接系统中的各个电路板。 2. 总线标准 标准中对插件引线的几何尺寸、引线数、各引线的定义、时序及电气参数等都作出了明确的规定。
2.5.2 微机总线的主要性能指标 总线宽度: 数据总线的数目,用位表示。 总线传输率:在总线上每秒钟传输的最大字节数,用Mb/s表示每秒钟传输多少字节。 总线传输率Q:Q=f×w/n(Mb/s),其中f是总线工作频率,单位为MHZ;w为总线宽度,单位是字节,n是每传送一次数据所需的时钟周期个数。 总线工作频率:总线工作时的时钟频率,它与CPU的主频是不同的。 时钟同步/异步:总线上的数据传输与时钟同步工作的总线称为同步总线;与时钟不同步工作的总线称为异步总线 。
数据/地址总线的多路复用与非多路复用 非多路复用总线:地址与数据总线分开的总线。 多路复用总线:共用一条总线,在某一时刻传输地址 另一时刻传输数据或命令 信号线数:地址总线(AB)数、数据总线(DB)数和控制总线(CB)数的总和
2.5.2 PC系列微机总线 1. PC/XT总线 以Intel 8088CPU为核心,其数据总线宽度为8位。 2. ISA与EISA总线 以80286 CPU为核心,形成的标准总线称工业标准体系结构ISA(Industry Standard Architecture)其数据总线宽度为16位。 EISA(Extend Industry Standard Architecture)随80386/486等微机出现而诞生,其数据总线32位。 3. 局部总线 PCI总线:由外围部件互连行业组制定的一种局部总线。