当前位置:文档之家› 8086微处理器的内部结构解析

8086微处理器的内部结构解析

➢16位地址加法器
专门用来完成由逻辑地址变换成物理地址的功能。实际 上是进行一次地址加法,将两个16位的逻辑地址转换为 20位的物理地址,以达到可寻址1M字节的存储空间。
➢总线控制电路
将 8086CPU 的 内 部 总 线 与 外 部 总 线 相 连 , 是 8086CPU 与外部交换数据的必经之路。包括16条数据总线、20条 地址总线和若干条控制总线。
(1)数据寄存器
通用寄存器AX、BX、CX和DX称为数据寄存器, 可用来存放16位的数据或地址。也可把它们当作八个8 位寄存器(AH、AL、BH、BL、CH、CL、DH、DL) 来使用,这时只能存放8位数据,而不能用来存放地址。
寄存器名
特殊用途
在输入/输出指令中作数据寄存器用 AX,AL 在乘法指令中,存放被乘数或乘积
2.1 8086微处理器的内部结构
2.1.1 8086基本组成部件BIU(Bus Interface Unit) ➢指令执行部件EU(Execution Unit)
通用寄存器 8086
AH AL BH BL CH CL DH DL
SP BP SI DI
ALU数据总线 (16位)
暂存寄存器
地址总线(20位)
Σ
数据总线
CS
(16位)
DS
SS
ES
8086
IP
总线 总线
内部通信
控制
寄存器
逻辑
ALU 标志
EU 控制 系统
Q总线 16位
指令执行部 件(EU)
指令队列
123456
总线接口部件 (BIU)
1. 指令执行部件EU
由算术逻辑单元(ALU)、标志寄存器、通用寄存 器组和EU控制器等部件组成。
总之,汇编程序一般将源程序分成四个逻辑段,即 代码段CS、数据段DS、堆栈段SS和附加段ES。
•CS:存放代码段的段基地址。 •DS:存放数据段的段基地址。 •SS:存放堆栈段的段基地址。 •ES:存放附加段的段基地址。
条指令的功能。
➢通用及标志寄存器 单独详细说明
2. 总线接口部件BIU
由地址加法器、专用寄存器组、指令队列缓冲器和 总线控制电路等部件组成;
主要功能是形成访问存储器的物理地址,负责与外 部(存储器或I/O接口)打交道。
正常情况下,BIU通过地址加法器形成指令的物理地 址,从给定存储器地址中取出指令代码送指令队列缓冲 器中等待执行(指令队列缓冲器中出现一个空字节, BIU将自动进行读指令的操作填满队列)
设置段寄存器的原因:
由于8086CPU可直接寻址的存储器空间是1M字节, 需要20位地址码。而CPU所有的内部寄存器都只有16 位,用这些寄存器只能直接寻址64K字节。
为此把1M字节的存储空间分成许多逻辑段,每段最 长为64k字节,这些逻辑段可在整个存储空间中浮动。 于是用段寄存器给定各个逻辑段的首地址的高16位,被 称为段地址。
SI(Source Index)源变址寄存器和DI(Destination Index)目的变址寄存器:它们一般与DS联用,用来确 定数据段中某一存储单元的地址。
寄存器名
特殊用途
SI 在字符串处理指令中作源变址寄存器用
在间接寻址中作变址寄存器用
DI 在字符串处理指令中作目标变址寄存器用
在间接寻址中作变址寄存器用
在除法指令中,存放被除数或商数
AH 在LAHF指令中,作目标寄存器用
AL 在十进制运算指令中作累加器用
在XLAT指令中作基址寄存器用
BX 在间接寻址中作基址寄存器用
在XLAT指令中作基址寄存器用
CX 在串处理和LOOP指令中作计数器用
CL 在移位/循环移位指令中作移位次数计数器用
DX 字乘法/除法指令中存放乘积高位或被除数高位或余数
由于EU和BIU可相互独立工作,大部分的取指令和执 行指令操作可以重叠进行,故大大减少了等待取指令的 时间,提高了微处理器的利用率和整个系统的执行速度。
2.1.2 8086内部寄存器 8086CPU中有14个16位的寄存器,其结构如下图。
1. 通用寄存器组 通用寄存器(8个)可分为两组: •数据寄存器(4个); •地址指针和变址寄存器(4个)。
➢算术逻辑单元(ALU) • 完成16位或8位的二进制运算; • 16位暂存寄存器用来暂存参加运算的操作数。 • 运算结果通过内部总线送到通用寄存器组或BIU的内
部寄存器中等待写入存储器。 • 经ALU运算后的结果特征置入标志寄存器中保存。
➢EU控制器 • 负责从BIU的指令队列中取指令,并对指令译码; • 根据指令要求向EU内部各部件发出控制命令以完成各
BP 在间接寻址中作基址指针用
SP 在堆栈操作中作堆栈指针用
2. 段寄存器组
8086CPU的BIU中设置4个16位段寄存器: •代码段寄存器CS(Code Segment) •数据段寄存器DS(Data Segment) •附加数据段寄存器ES(Extra Segment) •堆栈段寄存器SS(Stack Segment)
收到EU送来的操作数地址,BIU将立即形成操作数 的物理地址,完成读/写操作数或运算结果功能。遇到 转移类指令,BIU将指令队列缓冲器中的尚存指令作废, 重新从存储器目标地址中取指令送指令缓冲器中。
➢指令队列 可存放6字节的指令代码。一般情况下指令队列中总是 填满指令,使EU可不断地得到执行的指令。
在间接寻址的输入/输出指令中作地址寄存器用
(2)地址指针和变址寄存器
包括SP、BP、SI、DI四个16位寄存器。
• 可以在运算过程中存放操作数,但只能以字(16位) 为单位使用。
• 常用在段内寻址时提供偏移地址:
SP ( Stack Pointer ) 称 为 堆 栈 指 针 寄 存 器 , BP (Base Pointer)称为基址指针寄存器,它们都可以与 SS寄存器联用确定堆栈段中的某一存储单元的地址。 SP用来指示栈顶的偏移地址,BP可作为堆栈区中的一 个基地址以便访问堆栈。
主要功能是执行指令:
○一般顺序执行,EU不断地从指令队列中取指令连 续执行,而省去访问存储器取指令的时间。
○需要访问存储器取操作数时,EU将访问地址送给 BIU后,将要等待操作数到来后才能继续操作;
○遇到转移类指令时,要将指令队列中的后续指令 作废,等待BIU重新从存储器取出目标地址中的指令代 码进入指令队列后,EU才能继续执行指令。
相关主题