麻烦再问一个问题:
START:
MOV DPTR,#8000H
MOV R0,#20H
MOV R1,#20H
START1:
MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1,START1
这段程序是将片内RAM从20H开始的20个字节送到片外8000H开始的单元去,其中START1中的前两句可不可以用 一句 MOVX @DPTR,R0 代替?为什么需要用累加器A?
因为根本就没有 MOVX @DPTR,R0 这条指令,这不是开汽车,你想往哪开就往哪开。
写程序,必须要用指令系统中有的指令,不能靠想像,想什么是什么。
MOVX指令,是访问外部存储器的,只能通过A来读/写,只有这种指令。其它都是无效的,是瞎编的。
用汇编语言写程序,就必须掌握指令系统,所以,不好学。
比较好学的,还是C语言,就不用考虑这些问题了。