一道单片机的编程题

来源:百度知道 编辑:UC知道 时间:2024/05/12 17:47:01
阅读下列程序,要求:
(1)说明该程序的功能;
(2)填写所缺的机器码;
(3)试修改程序,使片内RAM的内容成为如图所示结果
图在这826460194.photo.qq.com 进相册后ABC里的那张图就是

7A __ ··········MOV R2,#0AH
__ __ ··········MOV R0,#50H
E4 ···········CLR A
F6 ·········LOOP:MOV @R0,A
08 ············INC R0
DA__ ···········DJNZ R2,LOOP
···········DONE:

最好有点说明啊,做得对的解释详细的话再追加点分

现假定左边是地址,右边的是内容
1.它的功能是以50H为首地址,个数为0AH个的RAM全部清零

2.机器码
7A 0A··········MOV R2,#0AH
mov rn的机器码是01111xxx,其中xxx由Rn的地址来决定,相应地,R0~R7二进制地址为000~111
那么R2就是010,后面的数据就跟着mov rn的机器码后面

7850··········MOV R0,#50H
E4 ···········CLR A;
机器码固定
F6 ·········LOOP:MOV @R0,A

mov @rn,a机器码为1111011n
n就是Rn的n
所以间接寄存器寻址只能是R1或R0

08 ············INC R0
inc rn机器码为00001xxx
xxx同理为Rn的物理地址

DA__ ···········DJNZ R2,LOOP
djnz rn机器码11011xxx
xxx同理为RN的物理地址
loop为8位地址标号
机器码是以loop为首的第一个指令离loop的单元数
所以djnz r2,loop的loop不能放在此后超过255字节的程序空间单元
题中loop:后面跟有MOV @R0,A占1个内部ram单元,INC R0占1个内部ram单元,DJNZ R2占1个内部ram单元(由机器码可得),所以255-3=252=FCH
即机器码为DAFC

···········DONE:

3.对于第三个问题,楼上的方法有误
,R0和R2有可能在00H~A0H
而且你只是把0~10放入50H~5AH单元
所以可以这样
SETB RS1
SETB RS0;R0工作在18H单元
MOV A,#50H
MOV R2,#10
MOV R0,#0
LOOP:
MO