**8088/8086微处理器功能结构**
**1.总线接口部件(BIU)**
**(1)功能**
~~~
从内存取指令送到指令队列CPU执行指令时,
总线接口部件要配合执行部件为指定的内存单元或者外设端口收发数据
~~~
**(2)组成**
~~~
4个段地址寄存器,即:
CS,16位代码段寄存器
DS,16位数据段寄存器
ES,16位附加段寄存器
SS,16位堆栈段寄存器
16位指令指针寄存器
20位地址加法寄存器
4/6字节的指令队列缓冲器
~~~
(**3)BIU指令队列和20位地址加法器作用**
~~~
指令队列,指令一个一个预先排队等候传唤,称为流水线技术
减少了CPU取指令等待的时间,提高了CPU的效率
加法寄存器用来产生20位地址
8086可用20位地址寻址1MB内存空间
但8086内部所有的寄存器都是16位的,
所以需要一个附加机构来根据16位寄存器提供的信息计算出20位的物理地址
这个机构就是20位的地址加法器
~~~
**2.执行部件(EU)**
**1.功能**
~~~
从指令队列中取出指令
对指令进行译码
发出相应的传送数据或算数运算的控制信号
接收由总线接口部件传来的数据,或把数据传送到总线接口部件
进行算数运算
~~~
**2.组成**
~~~
AX,BX,CX,DX--既可作为16位寄存器也可作为8位寄存器,
分别为AH、BH、CH、DH、AL、BL、CL、DL
AX又称为累加器,8086指令系统许多指令都通过累加器动作来执行
AH为16位累加器,AL为8位累加器
~~~
**(2)四个专用寄存器**
~~~
基址指针寄存器BP
堆栈指针寄存器SP
源变址寄存器SI
目的变址寄存器DI
~~~
**(3)算数逻辑单元ALU**
`它是16位运算器,可用于8位或16位二进制算数和逻辑运算,也可按指令的寻址方式计算寻址寄存器所需的16位偏移量。`
**(4)数据暂存运算器**
`协助ALU完成运算,暂存参加运算的数据`
**(5)EU控制电路。**
~~~
从指令队列取出指令操作码
通过电路译码,发出相应控制命令
控制ALU的数据的流向。
如果是运算操作,操作数经过暂存寄存器送入ALU
运算结果经过ALU数据总线送到相应寄存器,
同时标志寄存器PSW根据运算结果改变状态
~~~
**(6)标志寄存器**
~~~
标志寄存器共有16位其中7位未用。
其中6个标志位反应CPU指令运行后的运行状态信息
SF、ZF、PF、CF、AF、OF这些标志位,
用于根据指令执行后的操作结果进行判断转移。
3个控制标志:DF、IF、TF
程序员可通过指令设置控制标志,有专门的标志对控制标志置0或置1
~~~
* * * * *
**寄存器结构**
**1.通用数据寄存器**
~~~
ABCD-X、16位可用作8位寄存器,分高低位,
AX作为累加器
BX作为基址寄存器
CX作为计数寄存器
DX作为数据寄存器
~~~
**2.指针变址寄存器**
~~~
分为两个指针寄存器SP(stack pointer)、BP(base pointer)
和两个变址寄存器SI(source index)、DI(destination index)
这组寄存器通常用来存放存储单元的16位偏移地址
偏移地址:相对起始地址的距离
~~~
**(1)指针寄存器**
~~~
SP用来指示栈顶的偏移地址
BP存放位于堆栈段中一个数据区的"基址"的偏移量
~~~
**(2)变址寄存器**
~~~
SI存放源操作数地址的偏移量
DI存放目标操作数地址的偏移量
~~~
**3.段寄存器(segment registers)**
~~~
CS、DS、SS、ES;代码段、数据段、堆栈段、附加段
这些寄存器指明了一个特定的现行段,用来存放各段的段基址
~~~
**4.指令指针**
~~~
IP(instruction pointer)为16位指令指针,
ip的内容总是只想BIU将要取的下一条指令代码的16位偏移地址。
~~~
* * * * *
**8086指令队列的作用**
> 在执行指令的同时从内存中取了一条指令或下几条指令,取来的指令放在指令队列中这样它就不需要象以往的计算机那样让CPU轮番进行取指和执行的工作,从而提高CPU的利用率。
**8086/8088CPU有哪几个状态标志位,有哪几个控制标志位?其意义各是什么?**
> 状态标志位有6个:ZF、SF、CF、OF、AF、PF。
> 其意思是用来反映指令执行的特征,通常是由CPU根据指令执行结果自动设置的;
> 控制标志位有3个:DF、IF、TF。
> 它是由程序通过执行特定的指令来设置的,以控制指令的操作方式。
**8086/8088微处理器内部有哪些寄存器,他们的主要作用是什么?**
> 执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI,
> AX、BX、CX、DX一般作为通用数据寄存器。
> SP为堆栈指针存器
> BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。
> 总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。
> 段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。
> IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。
**INTR、INTA、NMI、ALE、HOLD、HLDA引脚的名称**
> INTR 可屏蔽请求信号
> INTA 中断请求信号
> NMI 可屏蔽中断请求信号
> ALE 地址锁存允许信号
> HOLD 总线请求信号
> HLDA 总线请求响应信号
**什么是中断?什么是中断向量?中断向量表的地址范围?**
> 中断就是CPU在执行当前程序时由于内外部事件引起CPU暂时停止当前正在执行的程序而转向执行请求CPU暂时停止的内外部事件的服务程序,该程序处理完后又返回继续执行被停止的程序;中断向量是中断处理子程序的入口地址;地址范围是00000H-003FFH。
**中断向量表的功能是什么?若中断向量号分为1AH和20H,则他们的中断向量在中断向量表的什么位置上?**
> 中断向量表的功能是当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。1AH在中断向量表的位置是1AH×4=68H在中断向量表0000H:0068H处;20H在中断向量表的位置是80H在中断向量表0000H:0080H处。
**通常解决中断优先级的方法有哪几种?**
~~~
3种
软件查询确定优先级
硬件优先级排队电路确定优先级
中断屏蔽接口电路
~~~
**CPU响应可屏蔽中断的条件是什么?**
> (1)CPU必须处于开中断状态IF=1
> (2)CPU现行指令执行结束
> (3)没有其他优先级高的中断请求。
> (没有内部中断,没有非屏蔽中断,没有总线请求)
**以可屏蔽中断为例,说明一次完整的中断过程主要包括哪些环节?**
> 中断请求:外设通过硬件信号的形式、向处理器引脚发送有效请求信号。
> 中断响应:在满足一定条件时,处理器进入中断响应总线周期。
> 关中断:处理器在响应中断后会自动关闭中断。
> 断点保护:处理器在响应中断后将自动保护断点地址。
> 中断源识别:处理器识别出当前究竟是哪个中断源提出了请求,
> 并明确与之相应的中断服务程序所在主存位置。
> 现场保护:对处理器执行程序有影响的工作环境(主要是寄存器)进行保护。
> 中断服务:处理器执行相应的中断服务程序,进行数据传送等处理工作。
> 恢复现场:完成中断服务后,恢复处理器原来的工作环境。
> 开中断:处理器允许新的可屏蔽中断。
> 中断返回:处理器执行中断返回指令,程序返回断点继续执行原来的程序。
**在中断响应过程中,8086往8259A发的两个INTA信号分别起什么作用?**
~~~
在中断响应过程中,CPU向8259A的INTR引脚发2个负脉冲。
作用:
第一个负脉冲通知8259A ,CPU允许中断请求,要求送中断类型;
第二个负脉冲,8259传输中断类型码。
~~~