找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9111|回复: 2
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:4088 发表于 2008-8-7 13:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 3#
ID:317494 发表于 2018-6-10 16:07 | 只看该作者
Djnz是减一非零转,当第一操作数(即本指令中的R6)为1时,指令还要减一然后在判断,即此时还要在执行一次。才会往下执行。比如当R6中的数字为#3时,则3-1=2(一次),2-1=1(一次),1-1=0(一次)此时跳出循环,所以当数字为3时执行三次,当数字为250时则执行250次。我的理解,不知对错,希望可以交流!

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

沙发
ID:31873 发表于 2011-10-1 05:06 | 只看该作者
日子不见面,不见面多一天。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表