在MCS-51单片机中

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:49:26
ORG 0030H
START:MOV 30H, #0AAH
MOV 31H, #30H
MOV R1, #31H
MOV R0, 31H
MOV B, @R0
MOV A, B
MOV @R1, A
MOV P1, @R1
END START
问:为什么(P1)=AAH
我觉得P1=30H,不知道对否

应该是AAH。
一步一步分析:
START:MOV 30H, #0AAH ‘给30H赋值AAH
MOV 31H, #30H ’给31H赋值30H
MOV R1, #31H ‘给r1赋值31H
MOV R0, 31H ' 把31H里的值给r0,即30H赋值给r0,你也许在这里
弄混了
MOV B, @R0 把r0里存的地址30H里的数赋值给B,因为30H里存的是AAH,所以是把AAH给B。这里也容易出错。这是寄存器间接寻址。
MOV A, B 把B的值给A,A为AAH
MOV @R1, A 下面几句就不用再说了。
MOV P1, @R1
END START
所以最后p1里是AAH。

ORG 0030H
START:MOV 30H, #0AAH ;地址30H内容是AAH
MOV 31H, #30H ;地址31H内容是30H
MOV R1, #31H ;R1的内容是31H
MOV R0, 31H ;R0的内容是地址31H的内容即30H
MOV B, @R0 ;B的内容是地址R0(即31H)的内容即30H
MOV A, B ;A的内容是30H
MOV @R1, A ;R1的内容是30H
MOV P1, @R1 ;P1的内容是以30H为地址的内容,即AAH
END START