标题: [求助]基础教程第五课DJNZ R6,D2我觉得课程有个地方有问题 [打印本页]

作者: fz471    时间: 2008-8-7 13:03
标题: [求助]基础教程第五课DJNZ R6,D2我觉得课程有个地方有问题

DJNZ指令的执行过程是这样的,它将其后面的第一个参数中的值减1,然后看一下,这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转到第二个参数所指定的地方去。

那么51网老师讲的是 

执行完了DJNZ R6,D2之后(也就是R6的值等于0之后),就会去执行下面一行,也就是DJNZ R7,D1,请大家自行分析一下这句话执行的结果。(转去执行MOV R6,#250,同时R7中的值减1),最终DJNZ R6,D2这句话将被执行250*250=62500次,执行这么多次同一条指令干吗?就是为了延时。



我觉得:当R6的值为1之后,就会执行下一行了,并且DJNZ R6,D2只执行了249次。

请大家帮忙解答一下,好困惑啊
[此贴子已经被admin于2008-8-9 0:34:40编辑过]

作者: cdcbz321    时间: 2011-10-1 05:06
日子不见面,不见面多一天。
作者: 新手小苏    时间: 2018-6-10 16:07
Djnz是减一非零转,当第一操作数(即本指令中的R6)为1时,指令还要减一然后在判断,即此时还要在执行一次。才会往下执行。比如当R6中的数字为#3时,则3-1=2(一次),2-1=1(一次),1-1=0(一次)此时跳出循环,所以当数字为3时执行三次,当数字为250时则执行250次。我的理解,不知对错,希望可以交流!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1