
A,,,CLR
C)或者直接赋0值(如:mov
a,#00h).还有一种清零就是系统复位,赋位到初始的状态,单片机的RST脚。(当然此种复位有的是零状态(如:PC)。有的是1状态(P0~P3),还有的是不定状态(SBUF)),此种复位可手动也可上电自动,依外部电路而行
正确程序如下:CLR A
MOV R0, #50H
LOOP:MOV @R0, A
INC R0
CJNE R0, #5AH, LOOP
SJMP $
END
访问外部ram,必须使用movx指令,用16位地址访问外部ram,必须使用dptr寻址,这是第一个要点。movx @dptr, a 这条指令的寻址方式是固定的,必须使用a,这是第二个要点。
所以想清除内存区域,必须是
clr a
movx @dptr, a
其中dptr 的内容需要连续变化,你的程序里面少了 inc dptr 这一句。
剩下的问题 mov r0, a 和 mov a, r0 的意思无外乎是个简单的保存、恢复a内容的 *** 作。
其实这里用a来控制循环次数不是很理想,随便用一个寄存器就可以做。
mov dptr , #7000h
mov r7, #0 本意是r7 = 256,清除 256字节
clr a
loop:
movx @dptr, a a 的内容始终是0
inc dptr 原来的程序缺少这一句,很关键
djnz r7, loop
ret
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)