菜鸟求助:一个关于单片机跳转指令的简单问题
2个回答
展开全部
clr
a
应该
改为
clr
c
将c清零
循环一次要将cy位清零才对
而a是一个
累加器
不可以清零
mov
r0,
#20h
;
mov
r3,
#8
;
clr
c
loop:mov
a,
@r0;
addc
a,@r0;
mov
@r0,
a;
inc
r0;
djnz
r3,
loop;
end
这才是构成循环啊
我觉得
容易懂
呵呵
a
应该
改为
clr
c
将c清零
循环一次要将cy位清零才对
而a是一个
累加器
不可以清零
mov
r0,
#20h
;
mov
r3,
#8
;
clr
c
loop:mov
a,
@r0;
addc
a,@r0;
mov
@r0,
a;
inc
r0;
djnz
r3,
loop;
end
这才是构成循环啊
我觉得
容易懂
呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、问题的关键是你要知道DJNZ的作用是什么,DJNZ是减1不为0跳转指令,也就是说执行完DJNZ后寄存器里面的数不为0的话是不会向下执行
2、因为这里是要加8次,当执行DJNZ
R3后,若R3里的数不为0的话说明还没加8次,那么就需要继续累加,所以这里要跳到累加的前面去
3、你这里用到INC
RO
指令,所以没次加的数都是下一个地址中的数
补充点问题:就是你这里书写有错,“RO”有写错,应该是“R0”,不要把数字的“0”写成字母的“O”,不然在编译的时候会出错,而且比较难找
2、因为这里是要加8次,当执行DJNZ
R3后,若R3里的数不为0的话说明还没加8次,那么就需要继续累加,所以这里要跳到累加的前面去
3、你这里用到INC
RO
指令,所以没次加的数都是下一个地址中的数
补充点问题:就是你这里书写有错,“RO”有写错,应该是“R0”,不要把数字的“0”写成字母的“O”,不然在编译的时候会出错,而且比较难找
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询