关于单片机这样一段程序 汇编语言写的

将程序存储器0200H、0201H两个单元中的内容传送到内部RAM的30H、31H两个单元正,试编程。
MOV DPTR,#0200H
MOV R0,#30H
MOV A,#00H
MOVC A,@A+DPTR
MOV @R0,A
INC DPTR
INC R0
MOV A,#00H
MOVC A,@A+DPTR
MOV @R0,A
我想问第一条指令为什么不这样写,MOV DPTR,0200H #0200H不是只是个数吗,0200H才是单元
我的理解是 MOV DPTR ,0200H 将0200h单元的内容传到DPTR, MOV DPTR,#0200H是将这个数送到DPTR 所以我觉得第一条指令应该是MOV DPTR ,0200H 我的理解哪里错了,拜托详细点解答 谢谢

MOV DPTR,0200H肯定是要报错的,DPTR是一个十六位的寄存器,只能赋一个16位的立即数。

0200H这样表示是一个地址,MOV DPTR,0200H只能理解为将0200这个地址的值赋值给DPTR显然是不对的。追问

R0 R1也能作为寄存器, 是不是也只能赋值立即数

追答

不是,R0,R1可以通过累加器赋值比如
mov r0,a
mov r1,a
等等。

温馨提示:答案为网友推荐,仅供参考