微机汇编语言例题关于精确的软件延时不懂,请大家帮我解释一下,那这里N为多少,17是什么?

设CPU的时钟频率为5MHs,试编写一个延时1ms的程序。
DEL_1MS: MOV CX, N ;4*1
NEXT: NOP ;3*N
NOP ;3*N
LOOP NEXT ;17/5( 循环/不循环)
总时钟周期数 = 4+3N+3N+17(N-1)+5
那请问这个N怎么算呢?才能设计出想要的延时时间呢?

N是你写程序时自己设置的,可以为任何整数。
设CPU的时钟频率为5MHs,试编写一个延时1ms的程序。
DEL_1MS: MOV CX, N ;4*1 这里的4是指指令MOV CX, N 执行一次需要4个时钟周期,1为执行次数
NEXT: NOP ;3*N 与上面相同 3 为时钟周期 N为执行次数
NOP ;3*N 与上面相同
LOOP NEXT ;17/5( 循环/不循环)17的意思是循环没结束时 执行LOOP NEXT 指令需要17个时钟周期,循环结束时 LOOP NEXT指令需要5个时钟周期
所以总时钟周期数 = 4+3N+3N+17(N-1)+5

时钟周期 = 1/CPU 的时钟频率 = 1/5M =0.2us
那么总共需要的时间就是 0.2 * (4+3N+3N+17(N-1)+5) us
延时为1ms的话 就是 令0.2 * (4+3N+3N+17(N-1)+5) = 1000us
解出N就行了。解出来N = 218 因为时钟周期数只能是整数。
希望能帮到你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-04
已有解决方法,详见:

建议:提交问题时请先在百度搜索一下,谢谢!~~~~~~