单片机第六次作业
时间:11-25
来源:互联网
点击:
作业:第29题,已知R0中值为n,计算1^2+2^2+3^2+……+n^2并放入30h.(n较小不考虑求和的溢出)
1、先fileànew 建asm文件29.asm
MOV R1,#00H
LOOP:MOV A,R0
MOV B,R0
MUL AB
ADD A,R1
MOV R1,A
DJNZ R0,LOOP
MOV 30H,R1
END
为了调试时看数据,预先在r0中赋值为3,所以程序前加:
MOV R0,#3
所以程序变为:
MOV R0,#3
MOV R1,#00H
LOOP:MOV A,R0
MOV B,R0
MUL AB
ADD A,R1
MOV R1,A
DJNZ R0,LOOP
MOV 30H,R1
END
2、建新工程,Projectànew project ,选AtemlàAT89C51 ,导入文件29.asm。
注意,对初学者,一个工程里只能有本程序29.asm,无关的程序要删除,新试验一个程序最好重新建工程,以保证一个工程里只有你要试验的那一个程序。
3、可见程序
4、编译通过后,点debug下的start/stop开始调试, step 和step over都是单步调试,step是遇到子程序或中断也要进入进行单步调试,step over是遇到子程序或中断当一句一次执行完。本程序物子程序,二者是一样的。我们执行一句得到:
继续执行:
可见A,B值都已改变,下一步:
可见A,B值改变。下一步,
R1此时为0,所以A值不变。下一步:
可见R1值改变,接着执行循环语句:
可见R0值变为02。下一步:
下一步:
A值变为04H,接着执行:
可见A值变为0dh,下一步:
送到R1中,再执行循环语句:
R1变为0eh,接着执行:
R0值变为0,循环结束。往下执行:
点view àmemory windows,再输入D:30h回车,得到:
可见30h处值变为0eh.此时即得到1^2+2^2+3^2的值,并放入了30H中。
1、先fileànew
MOV R1,#00H
LOOP:MOV A,R0
为了调试时看数据,预先在r0中赋值为3,所以程序前加:
MOV R0,#3
所以程序变为:
MOV R0,#3
MOV R1,#00H
LOOP:MOV A,R0
2、建新工程,Projectànew
3、可见程序
4、编译通过后,点debug下的start/stop开始调试,
继续执行:
可见A,B值都已改变,下一步:
可见A,B值改变。下一步,
R1此时为0,所以A值不变。下一步:
可见R1值改变,接着执行循环语句:
可见R0值变为02。下一步:
下一步:
A值变为04H,接着执行:
可见A值变为0dh,下一步:
送到R1中,再执行循环语句:
R1变为0eh,接着执行:
R0值变为0,循环结束。往下执行:
点view
可见30h处值变为0eh.此时即得到1^2+2^2+3^2的值,并放入了30H中。
单片机求 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)