微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机第六次作业

单片机第六次作业

时间: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ànewproject,选AtemlàAT89C51,导入文件29.asm。
注意,对初学者,一个工程里只能有本程序29.asm,无关的程序要删除,新试验一个程序最好重新建工程,以保证一个工程里只有你要试验的那一个程序。

3、可见程序



4、编译通过后,点debug下的start/stop开始调试,step和stepover都是单步调试,step是遇到子程序或中断也要进入进行单步调试,stepover是遇到子程序或中断当一句一次执行完。本程序物子程序,二者是一样的。我们执行一句得到:


继续执行:


可见A,B值都已改变,下一步:



可见A,B值改变。下一步,



R1此时为0,所以A值不变。下一步:


可见R1值改变,接着执行循环语句:



可见R0值变为02。下一步:


下一步:



A值变为04H,接着执行:


可见A值变为0dh,下一步:



送到R1中,再执行循环语句:


R1变为0eh,接着执行:


R0值变为0,循环结束。往下执行:
点viewàmemorywindows,再输入D:30h回车,得到:


可见30h处值变为0eh.此时即得到1^2+2^2+3^2的值,并放入了30H中。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top