1. 16位微处理器8086
1.1 8086的编程结构
8086的定义:
①Inter系列的16位微处理器
②有16根数据线和20根地址线
③16位内部体系结构——ALU、寄存器和内部数据总线皆16位
8086的特点:
16位外部数据总线
20根地址线的作用:可寻址的地址空间达2^20字节,即1MB
16位I/O端口地址线,寻址64K端口地址;
较强中断处理能力、管理DMA操作和多处理的能力。
8088的定义:
准16位微处理器,其内部寄存器、内部运算部件和内部操作都是16位的,但对外的数据总线只有8位。
8086由两个独立的(部分重叠,同时工作)逻辑部件组成
①总线接口部件BIU
②执行部件EU
- 1.1.1 总线接口部件BIU
BIU的功能:负责与存储器,I/O端口传送数据
BIU的组成:
①4个段地址寄存器(CS,DS,ES,SS)
CS(16位的代码段寄存器):指明代码段的起始地址
SS(16位的堆栈段寄存器):指明堆栈段的起始地址
DS(16位的数据段寄存器):指明数据段的起始地址
ES(16位的附加段寄存器):指明附加段的起始地址
//每个段寄存器用来确定一个逻辑段的起始地址
②1个16位指令指针寄存器IP
//保存下一次将要从内存中取出指令的偏移地址
//IP与代码段寄存器CS联用,通过CS:IP控制指令序列的执行流程。
③一个20位的地址加法器
④一个6字节的指令队列缓冲器
//指令队列采用的是先进先出原则,
//按序存放,按序取到EU中去执行。
一条指令的物理地址的求法(20位的地址加法器):
段地址左移4位+偏移量→20位的物理地址
段地址*16+偏移量 →20位的物理地址
//例子:
CS向左移4位(即在最后加一个0),再加上IP,即得到物理地址
- 1.1.2 执行部件EU
EU的功能:负责指令的执行
EU的组成:
①4个通用寄存器(AX,BX,CX,DX)
//用来存放计算的结果和操作数,BX可以存放地址
16位通用寄存器:AX、BX、CX、DX
8位通用寄存器: AH、BH、CH、DH
AL、BL、CL、DL
AX:累加器
BX:基址寄存器
CX:计数器
DX:数据寄存器
//既可作为16位寄存器,也可作为8位寄存器
//若BX作为8位寄存器是,分别称为BH(高8位)和BL(低8位)
//AX寄存器也称为累加器
//指令系统有许多指令都是利用累加器来执行的
②4个专用寄存器(BP,SP,SI,DI)
//可用于存放某个存储单元的偏移地址。
//16位变址寄存器
SI——源变址寄存器
DI——目的变址寄存器
//串操作类指令中,SI和DI具有自动增量或减量的功能。
//16位指针寄存器
指针寄存器用于寻址内存堆栈内的数据
SP为堆栈指针寄存器:指示栈顶的偏移地址
BP为基址指针寄存器:指示位于堆栈段中的一个数据区的偏移地址。
//SP和BP与SS联合使用
③1个16位算术逻辑部件ALU
//ALU用于进行算术、逻辑运算;
//计算寻址单元的16位偏移量。
④1个16位标志寄存器FR(FLAGS)
//FR共有16位,其中7位未用
8086的标志可以根据功能分为两类:
①状态标志:前面的操作执行之后,算术逻辑部件所处的状态,表示处理器当前运行的状态
//共有6个,SF,ZF,PF,CF,AF,OF
②控制标志:人为设置的,控制处理器的某一特定功能
//共有3个,DF,IF,TF
状态标志:
符号标志位SF:和运算结果的最高位相同。
//作用:指出了运算结果的正负
零标志ZF:若运算结果为0,则ZF=1,若结果非0,ZF=0
奇/偶标志PF:若运算结果的低8位中所含1的个数是偶数。PF=1.否则为0
进位标志CF:加法运算产生进位,减法运算产生借位时,CF都为1
//移位指令也会影响CF
辅助进位标志AF:加法运算时,若第三位往第四位有进位,或减法时,第三位向第四位借位,AF=1
//AF用于十进制算术运算调整指令中
溢出标志OF:运算产生溢出时,OF=1
控制标志:
方向标志DF(Direction Flag)
//用于串操作指令中,控制地址的变化方向:
设置DF=0,存储器地址自动增加;
设置DF=1,存储器地址自动减少。
中断允许标志IF(Interrupt-enable Flag)
// 控制外部可屏蔽中断是否可以被处理器响应
设置IF=1,则允许中断;
设置IF=0,则禁止中断。
跟踪标志TF(Trap Flag)
//用于控制处理器进入跟踪执行方式:
设置TF=0,处理器正常工作;
设置TF=1,处理器按跟踪方式执行指令。
- 1.1.3 8086总线周期的概念
目的:取得指令或者传送数据
执行者:CPU的总线接口部件BIU
将1个基本的总线周期划分为:4个时钟周期,又称4个状态,T1,T2,T3,T4
T1:发出地址信息,多路复用线输出地址信息,以指示所要访问的内存单元或外设端口的地址。
T2:撤消地址信号,地址/状态复用线驱动状态信息,地址/数据复用线转为数据线。
T3:完成存储器或外设端口的访问。
T4:总线周期结束
Ti:空闲状态。执行空闲周期,CPU进行内部操作。
Tw:等待状态。在总线周期的T3和T4之间插入等待时钟周期状态。
判断是否插入Tw :
在T3的前沿检测READY引脚是否有效;
如果READY无效,在T3和它T4之间插入一个等效于T3的Tw ;
如果READY有效,执行完该T状态,进入T4状态。