8086/8088微处理器
——处理器结构和内部工作原理
课前回顾
上次课主要内容
• 计算机的基本结构
• 计算机中数据的表示方法
• 微机系统与微处理器基本概念
本次课内容
主要内容
• 8088(8086)微处理器的内部结构
• 8088(8086)的编程结构
• 8088(8086)的存储器组织
• 8088(8086)的内部工作原理
重难点
重点
8088(8086)的编程结构
难点
8088(8086)的内部工作原理
英特尔微处理器芯片
80386
酷睿双核 Pentium 4
4004
80088085
8086/8088微处理器
• 8086/8088微处理器是Intel公司推出的第三代CPU芯片,它们的内
部结构基本相同,都采用16位结构进行操作及存储器寻址,但外
部性能有所差异,两种处理器都封装在相同的40脚双列直插组件
中。
外
部
总
线
内部暂存器
IP
ES
SS
DS
CS
输入/输出
控制电路
执行部分
控制电路
1 2 3 4
∑
ALU
标志寄存器
AH AL
BH BL
CH CL
DH DL
SP
BP
SI
DI
通用
寄存
器
地址
加法
器
指令队列缓冲器
运算执行模块(EU) 总线接口模块 (BIU)
16位
20位
16位
8位
8088/8086的内部结构
通用寄存器
标志寄存器:
16位字利用了9位。 标志分两类:
状态标志(6位):反映刚刚完成的操作结果情况。
控制标志(3位):在某些指令操作中起控制作用。
运算执行模块
功能:负责分析指令和执行指令。
总线接口模块
功能:负责从内存中取指令,
送入指令队列,实现CPU与
存储器和I/O接口之间的数据传送。
四个段寄存器:
CS管理代码段;DS管理数据段
SS管理堆栈段;ES管理附加段.
16位的指令指针寄存器IP:
IP中的内容是下一条指令
对现行代码段基地址的偏移量,
20位地址加法器
四个专用寄存器
SP:堆栈指针,其内容与堆栈段寄存器SS的内容
一起,提供堆栈操作地址。
BP:基址指针:构成段内偏移地址的一部分.
SI:(Source Index):SI含有源地址意思,产 生
有效地址或实际地址的偏移量。
DI:(Destination Index):DI含有目的意思, 产生
有效地址或实际地址的偏移量。
4字节的指令队列
指令队列共四字节,总线接
口部件BIU从内存取指令,
取来的总是放在指令队列中;
执行部件EU从指令队列取指
令,并执行。
算术逻辑单元ALU:
主要是加法器。大部分指令
的执行由加法器完成。
E:%5C..%5Cddd%5C%E5%8A%A8%E7%94%
SP 堆栈指针
BP 基址指针
SI 源变址指针
DI 目的变址指针
8088/8086CPU的编程结构
数据寄存器
地址指针及变址寄
存器
控制寄存器组
段寄存器组
AX AH AL 累加器
BX BH BL 基址寄存器
CX CH CL 计数寄存器
DX DH DL 数据寄存器
通用
寄存器组
15 8 7 0
IP 指令指针
FLAG(PSW) 标志寄存器
CS 代码段寄存器
DS 数据段寄存器
SS 堆栈段寄存器
ES 附加段寄存器
8088/8086CPU的编程结构
通用寄存器组
8086/8088有4个16位的数据寄存器(AX、BX、CX、DX),可以存放
16位的操作数,也可分为8个8位的寄存器(AL、AH;BL、BH;CL、CH;DL、
DH)来使用。其中AX称为累加器,BX称为基址寄存器,CX称为计数寄存器,
DX称为数据寄存器,这些寄存器在具体使用上有一定的差别。
寄存器 用 途
AX 字乘法,字除法,字I/O
AL 字节乘,字节除,字节I/O,十进制算术运算
AH 字节乘,字节除
BX 转移
CX 串操作,循环次数
CL 变量移位,循环控制
DX 字节乘,字节除,间接I/O
通用寄存器组
系统中有两个16位的指针寄存器SP和BP,其中SP是
堆栈指针寄存器,由它和堆栈段寄存器SS一起来确定
堆栈在内存中的位置; BP是基数指针寄存器,通常用
于存放基地址。
系统中有两个16位的变址寄存器SI和DI,其中SI
是源变址寄存器,DI是目的变址寄存器,都用于指令
的变址寻址方式。
8088/8086CPU的编程结构
8088/8086CPU的编程结构
控制寄存器
IP、标志寄存器是系统中的两个16位控制寄存器,
其中IP是指令指针寄存器,用来控制CPU的指令执行顺
序,它和代码段寄存器CS一起可以确定当前所要取的指
令的内存地址。顺序执行程序时,CPU每取一个指令字
节,IP自动加1,指向下一个要读取的字节;当IP单独
改变时,会发生段内的程序转移;当CS和IP同时改变时,
会产生段间的程序转移。
标志寄存器的内容被称为处理器状态字PSW,用来
存放8086 CPU在工作过程中的状态。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
8088/8086的标志寄存器
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0CFPFOF DF IF TF SF ZF AF CFPFAFZFSFTFIFDFOF
CF:进位标志
当执行一个加法运算使最高位产生进位
时,或执行一个减法运算引起最高位产
生借位时CF=1,否则CF=0。此外循环
指令也会影响这一标志。
SF:符号标志
与运算结果的最高位相同,当数据用补
码表示时,负数的最高位为1,所以符号
标志表示运算执行后的结果是正还是负。
ZF:零标志
当前的运算结果为零ZF=1,
当前的运算结果为非零ZF=0。
PF:奇/偶标志
运算结果的低8位中所含的1的
个数为偶数PF=1,否则PF=0。
AF:辅助进位标志
加法运算时,如果第3位往第4位
有进位,减法运算时,第3位往第
4位有借位AF=1。
OF:溢出标志
运算过程产生溢出时OF=1。
DF:方向标志
控制串操作指令用的标志,DF=0串操作过
程中的地址会不断增值,DF=1串操作过程
中的地址会不断减值。
IF:中断标志
控制可屏蔽中断的标志,IF=0 CPU不能
对可屏蔽中断请求作出响应,IF=1 CPU
可接受可屏蔽中断请求。
TF:跟踪标志
TF=1,CPU按跟踪方式执行指令。
控制标志
状态标志
8088/8086CPU的编程结构
1 0 0 0 1 1 0 1 0 0 1 1 0 110
0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1+
0110011010101001
运算结果最高位为1 ∴SF=1;
例:2个数相加后,分析各标志位的值
第三位向第四位有进位 ∴AF=1;
次高位向最高位有进位 ,最高位向前没有进位,∴OF=10=1
最高位没有进位 ∴CF=0;
低8位中1的个数为偶数个 ∴PF=1;
运算结果本身≠0 ∴ZF=0;
8088/8086CPU的编程结构
段寄存器
系统中共有4个16位段寄存器,即代码段寄存器
CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄
存器ES。
这些段寄存器的内容与有效的地址偏移量一起,
可确定内存的物理地址。
通常CS划定并控制程序区,DS和ES控制数据区,
SS控制堆栈区。
8086的存储器组织
8086有20根地址线,具有1M字节的存储器地址空间。这1M字
节的内存单元按照00000~FFFFFH来编址。 8086有20根地址线,
但其内部可以表示的地址最多只能是16位。
连续
逻辑段
A段
B段
C段 D段
E段
00000H
10000H
20000H
30000H
40000H
……
实际(物理)
存储器 分离
完全重
叠
部分重叠
为了能寻址1MB
空间,8086对存储器
进行逻辑分段,每个
逻辑段≤64K, 1M的
空间分成16个逻辑段
(0~15)。允许它们
在整个存储空间浮动,
即段与段之间可以部
分重叠、完全重叠、
连续排列、断续排列。
每次在需要产生一个20位地址的时候,一个段寄存器会自动被选
择,且能自动左移4位再与一个16位的地址偏移量相加,以产生所需要
的20位物理地址。
物理地址=段基地址+偏移地址=段寄存器内容×10H+偏移地址
加法器
8086物理地址PA的形成,
其中的16位偏移量也称为有效地址
EA(出现在指令中)
段寄存器
15 0
16位偏移量
015
20位物理地址
019
段基址
1123H
偏移量
13H 段基址
1124H
偏移量
03H
存储单元 物理地址
11230H
11231H
11232H
……
1123FH
11240H
11241H
11242H
11243H
0000
物理地址PA与逻辑地址LA
8086的存储器组织
在寻址一个具体的物理单元时,必须要由一个基地址再加上
SP或IP或BP或SI或DI等可由CPU处理的16位偏移量来形成实际的
20位物理地址。
IP
CS
SI、DI或BX
DS
SP或BP
SS
代码段
数据段
堆栈段
CS、DS、SS和其他寄存器组合指向
存储单元示意
8086的存储器组织
存储器中的操作数可以是一个字节,也可以是一个字。如果
是字操作数,那么低位字节放在较低的地址单元,高位字节放在
较高地址单元。
在不改变段寄存器值的情况下,寻址的最大范围是64KB。所
以若有一个任务,它的程序长度、堆栈长度以及数据区长度都不
超过64KB,可在程序开始的时候,分别给DS、SS、ES置值,然后
在程序中就可以不再考虑这些段寄存器,程序就可以在各自的区
域中正常地进行工作。
若某一个任务所需的总的存储器长度(包括程序长度、堆栈长
度和数据长度等)不超过64KB,则可以在程序开始时使CS、SS、DS
相等,程序也能正常工作。
若一个程序中要用的数据区超过64KB,或要求从两个(或多个
)不同区域中去存取操作数,只要在取操作数以前,用指令给数据
段寄存器重新赋值就可以了。
8086的存储器组织
8086/8088微处理器内部工作原理
•BIU和EU的动作协调原则
将8086/8088 CPU分成二个独立的功能部件使二者能够并行工作,把取
指令工作和分析指令、执行指令工作重叠进行,从而提高CPU的工作效力,加
快指令的执行速度。指令队列可以被看成是一个特殊的RAM,它的工作原理是
"先进先出",写入的指令只能存放在队列尾,读出的指令是队列头存放的指
令。EU和BIU之间就是通过指令队列联系起来,多数情况下,BIU在不停地向
队列写入指令,而EU每执行完一条指令后,就向队列读取下一条指令。二者
的动作既独立,又协调。
8086/8088内部工作原理•BIU和EU的动作协调原则
BIU和EU按以下流水线技术原则协调工作,共同完成所要求的任务:
①每当8086的指令队列中有两个空字节,BIU就会自动把指令取到指
令队列中。其取指的顺序是按指令在程序中出现的前后顺序。
②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出
指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,
如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线
周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空
闲状态,会立即响应EU的总线请求。如BIU正将某个指令字节取到指
令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应
EU发出的访问总线的请求。
③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状
态。
④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序
发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着
往指令队列装入转向的另一程序段中的指令代码。
8088的指令执行过程
小结
1、本讲内容
2、下讲内容(预习)
• 8088(8086)微处理器的内部结构(两大功能模块)
• 8088(8086)的编程结构(14个内部寄存器)
• 8088(8086)的存储器组织(分段、物理地址的形成)
• 8088(8086)的内部工作原理(EU、BIU协调工作)
• 8088(8086)的外部结构
• 8088(8086)的时序