在《16/32位微机原理汇编语言及接口技术》书的第107页有这样一段话:“mov [2000h],al”读到指令队列需要3个“存储器读”总线周期,而执行它只需1个“存储器写”总线周期。

您能详细讲讲为什么是3个“存储器读”1个“存储器写”。

对应习题4.13指令“add [2000h],ax”该如何计算指令周期呢?谢谢!

回复:

这是一个很好的问题,很能体现软硬件结合的特点。

8088数据总线为8位,每次总线周期只能进行8位数据(即一个字节)读写。“mov [2000h],al”指令的代码是3个字节,所以进行指令读取(即取指)需要3个读取存储器的总线周期。这是指读取指令阶段,接着处理器执行该指令。

该指令的功能是将AL寄存器内容传送到主存偏移地址[2000h]位置,就是进行存储器写操作。因为只有一个字节数据,所以执行它只需1个“存储器写”总线周期。

至于习题4.13指令“add [2000h],ax”,因为是3个字节代码,所以8088需要3个存储器读总线周期进行指令读取。执行该指令,首先从主存[2000h]单元读取一个16位字,故需要2个存储器读总线周期;然后读取的数据与AX内容相加,结果还要写回这个位置,这又需要2个存储器写总线周期。

注意:若是8086总线是16位的,需要的总线周期要少。

类似文章