8086微处理器是16位微处理器,内部运算器和寄存器是16位的,具有20位地址线。
在内部功能逻辑上分为两个处理单元:总线接口单元、执行单元。
8086CPU按功能可分为两个独立的部分:总线接口单元BIU(Bus Interface Unit)和执行单元EU(Execution Unit)
BIU:
- 完成CPU与存储器之间的信息传送
- 总线控制
- IO数据传送
- 逻辑地址与物理地址进行转换
- 从存储器中取指令送至指令流队列排队
- 取出执行指令时所需要的操作数,并传送给EU完成运算和操作
EU:
- 对来自指令流队列中的指令译码并执行,实施算术逻辑运算操作。
BIU和EU是两个独立的部件,两个可以同时独立进行操作,形成指令流水线结构。
总线接口单元(BIU)
总线接口单元(Bus Interface Unit)的主要组成部件。
1、段寄存器(Segment Register)
段寄存器为分段寻址定位段的位置。存放正在或正待执行的各个段的段首址
- CS(Code Segment):代码段寄存器,用于存储程序的指令
- DS(Data Segment):数据段寄存器,用于暂存原始数据和处理后的中间结果即最终结果,一般数据段存储局部变量
- SS(Stack Segment):堆栈段寄存器,用于形成堆栈区
- ES(Extra Segment):扩展段寄存器,和数据段类似,扩展段用于存储全局变量
2、地址加法器(Address Adder)
地址加法器的功能将分段地址转换为物理地址,用于存储器接口访问实际的物理存储器。
段地址:说明逻辑段在存储器中的起始位置,为模16地址:xxxx0H,省略低4位后,可用1个16位数来表示,该地址可被存放在不同的段寄存器CS/SS/DS/ES中。
偏移地址:说明寻址单元距离段首的偏移量,因每段长度不超过64KB,所以偏移地址也可用1个16位数来表示。
物理地址 =段地址×16D+偏移地址
=段地址×10H+偏移地址
=段地址左移4位+偏移地址
3、指令指针寄存器(Instruction Pointer Register)
IP 用以存放一个16位的代码段(程序段)的偏移地址,它与CS的内容合并可以形成一个20位的物理地址,专门用来指向当前要执行的指令单元的位置。 程序计数器由总线接口单元自动改变,始终指向下一节指令。
4、存储器接口(Memory Interface)
5、指针流字节队列(Instruction Stream Byte Queue)
执行单元(EU)
执行单元(Execution Unit)的主要组成部分。
1、控制器(Controller)
从指针流字节队列顺序读取指令,根据指令译码控制8086中其他部分进行相应操作,以实现指令要求的功能。
2、逻辑算术单元(Arithmetic/Logic Unit)
16位逻辑算术单元,根据控制器的控制,可完成8位或16位的二进制算术运算和逻辑运算
,实现对数据的处理。
3、标志寄存器(Flag Register)
标志寄存器F又称程序状态字寄存器PSW,是用以记录或存放状态标志和控制标志信息的。
①状态标志位(ZF、SF、PF、OF、CF、AF):用以记录当前运算结果的状态信息。
- ZF(零标志位) 若当前运算结果为0,则ZF=1;若当前运算结果为1,则ZF=0。
- SF(符号标志位) 若当前运算结果为负数,则SF=1;若当前运算结果为正数,则SF=0。
- PF(奇偶标志位) 若当前运算结果为奇数个"1",PF=0;若当前运算结果为偶数个"1",则PF=1。
- OF(溢出标志位) 若当前运算结果产生溢出,则OF=1;反之,OF=0。
- CF(进位标志位) 若当前运算出现进位或借位,则CF=1;反之,CF=0。
- AF(辅助标志位) 若当前运算出现第3位向第4位进位或借位,则AF=1;反之,AF=0。
[注]
(1)状态标志位的设置一般是由CPU根据当前程序运行结果的状态自动完成的。
(2) 状态标志位信息一般用作后续条件转移指令的转移控制条件。
②控制标志位(TF、IF、DF):用以存放控制CPU工作方式的标志信息。
- TF(跟踪标志位) 当TF=1时,CPU每执行完一条指令就产生一个内部中断,处于暂停状态;当TF=0时,CPU处于正常工作状态。
- IF(中断允许标志位) 当IF=1时,允许CPU响应外部中断INTR的请求;当IF=0时,不允许CPU响应外部中断请求。
- DF(方向标志位) 当DF=0时,CPU执行串操作指令时,对SI、DI进行加操作;反之,对SI、DI进行减操作。
[注] 控制标志位的设置是由系统程序或用户程序中的指令来完成的。
4、通用寄存器组(General Purpose Resgister Set)
① 数据寄存器
共AX、BX、CX、DX四个,每个寄存器即可作为16位寄存器,又可拆分为两个8位寄存器,此时记为AH、AL、BH、BL等。
- AX(AH、AL):累加器accumulator
- BX(BH、BL):基址寄存器base
- CX(CH、CL):计数寄存器counter
- DX(DH、DL):数据寄存器data
②指针和变址寄存器
共BP、SP、SI、DI四个
- SP(Stack Pointer):堆栈指针寄存器,指示栈顶
- BP(Base Pointer):基址指针寄存器,默认表示堆栈段基地址
- SI(Source Index):源变址寄存器
- DI(Destination Index):目的变址寄存器