Intel 8086内部结构 学习笔记
EU负责指令的执行,不与外部系统总线相连,执行的指令和数据从BIU的指令队列缓冲区中取得,执行指令的结果或执行指令所需的数据,都是通过EU向BIU发出请求,然后由BIU对存储器对存储器或外设存入或读取。

BIU根据EU的请求,完成CPU与存储器,与I/O端口之间数据的传送。

8086的指令队列为6字节。指令队列是CPU内部的硬件机构,按照先进先出(First In First Out)的原则使用。8086/8088在指令执行的同时,从内存中取一条或几条指令,取来的指令就存放在指令队列中。

BIU和EU并行工作的管理原则

  • 当8086指令队列中有2个字节(8088空1个字节)为空时,BIU自动将指令存到指令队列中。
  • 当EU执行一条指令时,它先从指令队列的队首取出指令代码,再用几个时钟周期去执行指令。在指令执行的过程中,如果必须访问存储器或I/O设备,则EU请求BIU进入总线周期去完成访问内存或I/O端口的操作。如果BIU此时正好空闲,则立即响应总线请求。如果此时BIU正在取指令,需完成当前取指令周期,然后去响应EU的总线请求
  • 当指令队列已满,而且EU对BIU无总线请求,BIU进入空闲状态。
  • 当执行转移(如JMP),调用和返回(RET)指令时,指令队列清零,BIU再向指令队列中装入另一个程序段的指令。原因是下面要执行
    的指令不再是指令队列中的下一条指令。
    Intel 8086内部结构 学习笔记

通用寄存器

通用寄存器的高八位和低八位可分别编址,例如AX可编址为AH和AL。

AX用来存放算术逻辑运算的操作数,AH可操作字节乘法,字节除法,AL字乘法,字除法,字I/O。
BX在寻址过程中用于存放基地址,进行扩展寻址,起变址作用,BX可操作转移指令。
CX在汇编程序中用于存放循环次数,起隐含计数器的作用。CL可操作变量移位或循环。
DX用于存放数据,在某些I/O操作期间用来保存I/O端口地址,还用于字乘法和除法。

SP的内容指向当前堆栈的栈顶偏移地址。
BP的内容指向堆栈段中某一块数据区的首地址。
SI存放源数据串的偏移地址
DI存放目的数据串的偏移地址。

SP必须和SS一起才能确定堆栈实际位置。
IP要与CS配合才能形成指令的实际物理地址。

状态标志寄存器

Intel 8086内部结构 学习笔记

  1. CF:当算术运算结果最高位有进位或借位时置1,否则置0,循环指令会影响这一标志。
  2. PF:当运算结果中的’1’的个数为偶数时置1,为奇数置0。
  3. AF:执行加法运算时,低4位向高位进位,或者执行减法运算高4位向低4位借位,置1,否则置0。AF一般用于BCD码运算中。
  4. ZF:运算结果为0,置1,运算结果不为0,置0。
  5. SF:运算结果的符号位一致。负置1正置0。
  6. OF:运算结果产生溢出置1,无溢出置0。
  7. DF:决定字符串处理方向,用于串操作指令中SI和DI的增量或者减量的修改。若DF = 0,则按照SI和DI的地址指针上升的方向处理(从低地址到高地址),DF = 1,按地址指针递减方向处理(从高地址到低地址)。
  8. IF:IF为0时,CPU不能对可屏蔽中断请求作出响应;如果IF为1时,CPU可以接受可屏蔽中断请求。
  9. TF:TF为1时,CPU每执行一条指令则暂停,供用户跟踪指令的执行。

地址寄存器

IP:在CPU中用于产生和保存下一条待取指令地址的寄存器。程序执行过程中,每取一条地址后IP内容自动加1,指向下一条要取指令的地址。在遇到转移指令时,转移后的指令地址送入IP,然后按该地址到内存取指令,从而实现程序转移。
SP:其内容指向堆栈顶。每执行一次进栈或出栈操作后。SP自动加减,使SP的内容始终指向栈区的栈顶。

变址寄存器:使用变址寻址方式时,要有一个基准地址,这个基准地址存放在变址寄存器中。

段地址寄存器:
CS:保存当前执行程序的段寄存器值,CS内容左移4位,加上IP的内容,即下一条要取出的指令地址。
DS:保存有数据段寄存器值,数据段用来保存当前程序的操作数据和变量。DS内容左移4位,再加上指令中的有效地址(偏移量)EA,即对数据段指定操作单元的地址。
SS:保存当前堆栈段寄存器值,SS内容左移4位,再加上SP的内容,即指向堆栈顶的指针。
ES:附加段进行字符串操作时,作为目的段地址使用。

相关文章: