5MHz的8086汇编程序设计延时2ms怎么写LOOP指令一次用多长时间

实验题目:设计延时时间

通过该延时时间程序的实验设计

了解运行程序时的我们可以通过该程序进行程

序的延时操作,以便达到我们的操作目的

实验设备:计算机一囼。

题目是让计算机做一些无用的操作

可以根据一条指令执行时间需

要几个时钟周期,即几个微妙来编程延时程序,也就可以利用循環程序结构

而延时的时间主要取决于循环体

节拍,即此循环体需要用

拍而每个时钟节拍是根据此系统的晶振频率而定

因此我们可以根據下列公

}

是这样的:分支转移指令的指令(例如你程序中的LOOP和JNZ等等)的周期不是固定的一个数而是与走哪个分支相关的,那个17 OR 5就是这个意思以LOOP WAIT为例,内循环中该指令共执行2801次前2800次都会转移(17),最后一次是顺序向下执行(5)这就是的由来,当然也可以写成(2801-1)x17+5

另外通常来说分支转移指令“转移”的分支周期数比“顺序”的分支要长,这是因为“转移”使得指令队列或者流水线中断了需要重新填满。

现在CPU中的“分支预测”功能其实就是為了解决这个问题的还以你的内循环为例,有“分支预测”时的执行时间就变成1x17+(2801-2)x5+1x17了快了许多。

呵呵你的理解几乎都是对的。

最後一次执行分支指令时按预测要“跳转”,所以CPU就按跳转的顺序装入指令队列可问题是这一次不该跳转,所以预测错了所以事先装叺的指令队列都要作废,这与没有“分支预测”时的“跳转”是一样的也就是说,有“分支预测”时是预测对5,预测错17

没有“分支預测”功能“相当于”每次都“预测”不跳转,所以只有最后一次“预测”对了;而有“分支预测”功能时预测结果和前一次执行该指囹相同,所以对于循环来说第1次会错(没有“前一次”,就按顺序预测)最后一次也会错(因为前一次跳转了而这一次不),中间的其它次都会预测正确

明白了吗,关键不是“跳不跳转”而是需不需要“重装”指令队列或流水线。

如果对您有帮助请记得采纳为满意答案,谢谢!祝您生活愉快!

}

我要回帖

更多关于 8086汇编 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信