(1) 每当指令队列中有2 个空字节时,总线接口部件就会自动把指令取到指令队列中。
(2) 当执行部件请求总线接口部件访问总线时,总线接口部件正在将某个指令取到指令队列中去,这时,总线接口部件将首先完成这个取指令的总线周期,然后再去响应执行部件发出的访问总线的请求。
(3) 当指令队列已满,而且执行部件对总线又没有总线访问请求,则总线接口部件进入空闲状态。
(4) 在执行转移指令,调用指令和返回指令时,指令队列中的原有内容会被自动清除,总线接口部件会接着往指令队列中装入另一个程序段中的指令。
当复位信号来时,CPU 内部的部件都初始化,段寄存器被设为FFFFH,其他寄存器都被设为0H,指令队列被清空,总线接口部件开始读取指令(指令的地址由段寄存器和指令指针通过地址加法器相加给出,为FFFF0H),送往指令队列,然后指令执行部件可以不停地从指令队列读取指令,开始解释执行指令,周而复始地进行下去。在整个过程中执行部件和总线接口部件以一种并行方式工作。如果指令执行所需要的数据以及最后的结果都不需要访问I/O 部件或存储器,则EU 的工作将和BIU 的取指令工作并行,这样就可以节省时间开销,极大地提高了工作效率[1]。
3.2 Intel 8088的指令系统
3.2.1 Intel 8088寻址方式
指令通常包含操作码(opcode)和操作数(operand)的两部分。操作码指示计算机执行什么操作,操作数场指明参加操作的数或者它所在的地址。如何寻找参加操作的数即寻址方式的问题。微机中操作数的来源有以下三种:1、操作数就包含在指令中,即指令的操作数场就包含着操作数本身。2、操作数在CPU的某个寄存器中。3、操作数在内存的数据区中,这是指令中的操作数场包含着操作数所在地址的信息[8]。
8088的6种寻址方式如下。
1、立即寻址:这种寻址方式所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。
2、直接寻址:操作数地址的16位段内偏移地址直接包含在指令中,它与操作码一起存放在代码段区域。操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位的段内偏移地址。
3、寄存器寻址:操作数包含在CPU的内部寄存器中。
4、寄存器间接寻址:在这种寻址方式中,操作数存放在存储器中,操作数的16位段内偏移地址却放在以下4个寄存器SI、DI、BP、BX中的一个。与段寄存器共同组成操作数的有效地址。
5、寄存器相对寻址:在这种寻址方式中,操作数存放在存储器中。操作数的地址是由段寄存器内容加上SI、DI、BX、BP中的一个的内容,再加上由指令中所指出的8位或16 位相对地址偏移量而得到的。
6、基址、变址、相对寻址:即操作数的地址是由基址、变址方式得到的地址再加上由指令指明的8位或16位的相对偏移地址而得到的 FPGA的微机原理实验系统设计(6):http://www.751com.cn/jixie/lunwen_3958.html