从零到这个数的所有整数的和。简单得对问题进行分析可知,这个功能能过用两种方式实现,一种是循环,一种是直接用求和公式计算出来,如果从算法的时间复杂度来说,那肯定是后者时间复杂度低,只有O(1),但是从学习的角度,还是要练习一下循环结构,因此,这里主要用循环语句实现,以研究其中的问题。
三、实验主要步骤
1、打开ADS,新建一工程,再新建一个s的源文件,将其添加到工程中去,开始编写源代码。
2、链接、编译源文件,检查语法错误
3、用debug进行调试,观察寄存器的状态,在stop前打断点,全速运行代码,这样就可以在代码最后天下来,查看运行结果。
f四、实验代码
AREAsymbolCODEREADONLY
ENTRY
CODE32
START
LDRR0sum
MOVR1100
MOVR20
MOVR30
LOOP
ADDR2R21
ADDR3R3R2
SUB
R1R11
CMPR10
BNELOOP
STRCSR3R0
STOPMOVLDR
R00x18R10x20026
AREAsumDCD
END
DataDATAREADWRITE0
f五、实验总结与分析
1、实验结果分析
用红色框圈起来的是最后执行的结果,也就是将最后0100的和放在了R3中,是0x13BA二这个程序采用的是循环的方式求1100的和,所以最后一个数字是100,正是R2中的0x64。
2、实验总结:因为这个程序里用到了循环语句,所以就有几个点需要注意,也就是循环的上下界和循环体力边的语句。在代码实现中,将R1寄存器的值置为100,然后再循环体里每次减一,然后和0进行比较,大于零的话继续,小于等于零的话就跳出循环。这里容易出错的地方就是最后到底是和谁比较或者R1的初值给多少合适。再循环体里主要做了两件事,R2从零开始每次加一,而R3就是截止目前所有数的和。
f排序冒泡程序的调试与总结
一、实验目的
1、更加深入理循环程序设计,注意循环嵌套中的一些问题,比如条件判断、步长、两层循环中间的代码设计。
2、深入学习掌握debug调试的使用技巧,以及存储器窗口数据的观察,在存储器中找到代码需要的地址。
3、学会如何遍历存储在存储器中的数据,将其读入寄存器进行处理。
二、实验内容
利用冒泡排序将给定的一组数进行排序,这里采用升序,在排序完和排序后查看存储器的状态,检查排序是否成功。
三、实验主要步骤
1、打开ADS,新建一工程,再新建一个s的源文件,将其添加到工程中去,开始编写源代码。
2、链接、编译源文件,检查语法错误。
3、用debug进行调试,观察寄存器的状态,在stop前打断点,全速运行代码,这样就可以在代码最后天下来,查看运行结果。
四、实验代码
AREAsymbolCODEREADONLYENTRYCODE32
fSTARTMOVR00
FOR1LDRR2r