【51单片机】汇编语言程序设计练习(实验报告)

1、用程序实现c=a2+b2,假设a、b、c分别存放于单片机片内RAM的30H、31H、32H三个单元。主程序通过调用子程序“SQR”用查表方式分别求得a2 和b2的值,然后进行相加得到最后的c值。利用Keil软件完成工程的建立、代码编译和调试功能

ORG 0000H;
START:	LJMP  MAIN
	   	ORG	0030H
MAIN:	MOV 30H,#03
		MOV 31H,#04
		MOV A,30H
		LCALL SQR
		MOV R1,A
		MOV A,31H
		LCALL SQR
		ADD A,R1
		MOV 32H,A
WAIT:	SJMP $
		ORG 0F00H
SQR:	MOV DPTR,#TAB
		MOVC A,@A+DPTR
		RET
TAB:	DB 0,1,4,9,16
		DB 25,36,49,64,81
		END

在这里插入图片描述
可以得到32H存放的是十六进制数19(转换为十进制为25),则程序正确。

2、通过Keil单步仿真如下汇编程序,截图并写出每一步执行后的结果:

ORG 0000H
START:
	MOV 40H,#08H
	MOV R1,#40H
	MOV A,@R1
	RL A
	MOV R0,A
	RL A
	RL A
	ADD A,R0
	MOV @R1,A
	RET
	END

在这里插入图片描述
可以得到40H存放的是50H,则每一步执行正确

3、通过汇编语言实现软件延时10ms的子程序。

	START:
		MOV P1,#0FFH
		LCALL DELAY
		MOV P1,#0FEH
DELAY: 	MOV R0,#10
DL2: 	MOV R1,#7DH 
DL1:	NOP
		NOP
		DJNZ R1,DL1
		DJNZ R0,DL2
		RET
  		END

在这里插入图片描述

4、利用汇编语言的延时子程序实现单片机P2口循环点亮8个LED灯。先使用Keil软件进行编译和仿真,需要对仿真时序进行截图。然后使用Proteus软件进行仿真。

			ORG	  0000H
			SJMP  MAIN
			ORG	  0040H
				
	MAIN:   MOV   A,#001H
	LOOP: 	MOV   P1,A   	//对P1进行操作
			LCALL DELAY
			RL    A		 	//左移
			AJMP  LOOP  	//以下为延时子程序
	DELAY: 	MOV R0,#0FFH 	//延时255次
	DL2: 	MOV R1,#0FFH 	//255*255MS
	DL1:	NOP
			NOP
			DJNZ R1,DL1
			DJNZ R0,DL2
			RET
  			END

仿真图:
在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沅_Yuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值