记录:从零用汇编学习单片机 1.1.1片内清零程序设计

用C语言学完了单片机,现在突然想从零用汇编来学一遍单片机,以此来记录学习历程!欢迎在评论区提出宝贵意见!

设计要求:
将片内RAM从40H开始的连续30个地址内容清零

汇编源码:

;片内清零程序设计
		ORG	   0030H
		MOV    R0,#30		;清零次数设置
		MOV    R1,#40H	    ;设置清零开始地址
  CLEAR:CLR    A            ;将累加器A清零
	    MOV    @R1,A        ;将累加器的内容送入地址
		INC    R1           ;指向下一个地址
		DJNZ   R0,CLEAR     ;判断是否已达到清零次数,若为否,继续清零
		SJMP   $
		END

C语言源码:

/*片内清零程序设计*/
#include 
#include 
#define uchar unsigned char
void main(void)
{
	uchar i;
	for(i=0;i<30;i++)
	{
		DBYTE[0x40+i]=0x00;
	}
	while(1);
}

Proteus8.0仿真图
记录:从零用汇编学习单片机 1.1.1片内清零程序设计_第1张图片注意图中R1的值
记录:从零用汇编学习单片机 1.1.1片内清零程序设计_第2张图片若程序运行完后,R1中的地址为5EH,由于源程序中R1的设置初值地址为40H,这说明执行了30次(5EH-40H=1EH=30),40H~5EH的单元内容均为00H。

你可能感兴趣的:(51单片机学习)