80c51单片机小题一道

现有名为DEMO的80C51子程序如下:
      DEMO:MOV R0,#20H
       MOV R2,#8
    NEXT:MOV @R0,#00H
       INC R0
       MOV @R0,#0FFH
       INC R0
       DJNZ R2,NEXT
       RET
行完DEMO子程序后,(R0)=________,(R2)=_________。
DEMO子程序的功能是______________________________________________________________。
我知道答案 就不知道为什么

DEMO:
MOV R0,#20H ;指针赋20H
MOV R2,#8 ;计数器赋8
NEXT:
MOV @R0,#00H ;0送R0所示地址
INC R0 ;地址加1
MOV @R0,#0FFH ;FFH送R0所示地址
INC R0 ;地址加1
DJNZ R2,NEXT ;R2减后不为0继续从NEXT开始循环
RET
所以执行结果完后:
R0=2FH
R2=00H
DEMO完成的功能就是:将20H~2FH中的偶数寄存器置00H,奇数寄存器置FFH。追问

但是答案为什么是R0=30H?我也算得2FH

追答

哦,对了,应该是30H,最后是INC R0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-14
DEMO:
MOV R0,#20H;将立即数20H送到R0寄存器
MOV R2,#8;将立即数8送到R2寄存器
NEXT:MOV @R0,#00H;前面有个NEXT标号,将0送到20H地址的RAM中,寄存器间接寻址
INC R0;R0里的数自增1
MOV @R0,#0FFH;将FF送到21H地址的RAM中
INC R0;R0自增1
DJNZ R2,NEXT;R2减1不等于0就跳转到NEXT执行
RET ;返回
第2个回答  2013-03-14
这是一个循环执行命令的子程序:
MOV 是传输指令, 后面是数据存放的目标(R2寄存器)与来源,# 表示立即数,是直接寻址方式;@R0,表示以R0寄存器的内容为地址,是间接寻址方式;INC 是加 1 指令,目标是 R0 ;
DJNZ R2,NEXT,是循环计数指令,NEXT 是循环入口,R2 是计数值,减法计数,为零结束,不为零转回入口继续执行程序。
第3个回答  2013-03-14
对20H单元起址RAM的8个数据进行填充,1,3,5,7为0,其他为0xff。
第4个回答  2013-03-14
我看见汇编头疼
相似回答