李惠珠 發表於 2020-1-20 10:09:51

汇编语言软件延时1s的实现方法

<p>对于不同的计算机,因为其主频不同,延时1s的参数也不相同,计算延时的方法如下:</p>
<p>计算机主频:x (Hz)<br />
一条LOOP语句执行始终周期数:y<br />
所需要延时的时间:z (s)<br />
需要执行的语句数:a<br />
z=y*(1/x)*a</p>
<p>计算得到所需的执行语句数编写程序。</p>
<p>例:(计算机主频为3GHz)</p>
<div class="jb51code">
<pre class="brush:plain;">
delay proc near
push bx
   push cx
   mov bx,400h
for1:mov cx,0ffffh
for2:loop for2
   dec bx
   jnz for1
   pop cx
   pop bx
   ret
delay endp</pre>
</div>
<p><span style="color: #ff0000"><strong>扩展知识:</strong></span></p>
<p>单片机汇编跳转指令延时一秒</p>
<p>DELAY: MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R7,#10&nbsp;&nbsp;&nbsp; ;延时1S子程序</p>
<p>DL1:&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R6,#200-----1T</p>
<p>DL2:&nbsp;&nbsp; MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R5,#248------1T</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DJNZ&nbsp;&nbsp;&nbsp;&nbsp; R5,$</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DJNZ&nbsp;&nbsp;&nbsp;&nbsp; R6,DL2</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DJNZ&nbsp;&nbsp;&nbsp;&nbsp; R7,DL1</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETLP</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; RET</p>
<p>这是如何延时的呢,晶振为12MHZ为T=1us,DJNZ为双周期指令,主要是嵌套循环延时一秒,我们看计算结果:</p>
<p>DJNZ&nbsp;&nbsp;&nbsp;&nbsp; R5,$-----------------------248*2=496500us</p>
<p>DJNZ&nbsp;&nbsp;&nbsp;&nbsp; R6,DL2----------------------(496+1+2)*200=99800us</p>
<p>&nbsp;DJNZ&nbsp;&nbsp;&nbsp;&nbsp; R7,DL1------------------------(99800+2+1)*10=998030~~1s;<br />
</p>
<p><span style="color: #ff0000"><strong>总结</strong></span></p>
<p>以上所述是小编给大家介绍的汇编语言软件延时1s的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对琼殿技术社区网站的支持!<br />
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>什么是汇编语言</li><li>汇编 函数调用的实现</li><li>汇编语言入门教程(这一篇足矣)</li><li>汇编语言 输入10个数排序并输出的实现</li><li>汇编语言基础理解计算机底层技术原理</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 汇编语言软件延时1s的实现方法