现假定左边是地址,旁中敬右边的是内容
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:
MOV @R0,A
INC A
INC R0
DJNZ R2,LOOP
经仿真无误
1.该程序的功能是将50h~5ah的内容清零。
2.机器碧液码要看书,我不知道,呵亩羡呵
3.
MOV R2,#0AH
MOV R0,#50H
CLR A
LOOP:
MOV @R0,A
INC R0
INC A ;将A的值每次加迅慧拍1就可以了
DJNZ R2,LOOP
DONE: