ARM7汇编语言程序设计

更新时间:2024-01-12 11:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

西 安 邮 电 大 学

(计算机学院)

课内实验报告

课程名称: 嵌入式系统开发 实验名称: ARM7汇编语言程序设计

专业名称: XXXX 班 级: XXXX 学生姓名: XXX 学号(8位): XXX 指导教师: XXX

实验日期: XXXX 年 XX 月 XX 日

一. 实验目的及实验环境

实验目的:1.了解ADS1.2集成开发环境及ARMulator软件仿真。

2.掌握ARM7TDMI汇编指令的用法,并能编写简单的汇编程序。 3.掌握指令的条件执行以及使用LDR/STR指令完成存储器的访问 实验环境:CodeWarrior for ARM Developer Suite 二. 实验内容

1.编写程序,实现1到10的自然数的累加和。 2.找出10个数中的最大值与最小值。 3.从自然数1开始累加,直到累加和大于3000为止,统计被累加的数的个数和累加和。

4编写程序,将乱序的5个无符号数排序。 三.方案设计

①创建工程

启动ADS1.2,使用ARM Executable Image工程模板建立一个工程Project2。 ②添加源文件,编辑源代码

建立汇编文件TEST2.S,输入源代码,参考源代码附后,然后添加到工程中。 ③链接选项配置

设置工程链接地址RO Base为0x40000000,RW Base为0x40003000。设置调试入口地址Image entry point为0x40000000。

④编译链接工程

选择Project--〉Debug,启动AXD进行软件仿真调试。 ⑤调试工程

打开寄存器窗口,选择Current项监视R0和R1的值。 四.测试数据及运行结果 1.求和

2.求最大值与最小值

3.与3000比较大小

4.排序

五.总结

1.实验过程中遇到的问题及解决办法;

刚开始写完代码的时候,make完以后打不开AXD页面,最后将工程重新打开了一遍; 添加寄存器的时候,其实已经添加上了,但是没有看见,然后就重复添加造成错误;在写代码的时候忘了将结果放在哪个寄存器中,结果在一个一个找,在询问同学后解决了问题; 在做实验的时候,不会加断点,在查询相关书籍后掌握了此部分知识。

2.对设计及调试过程的心得体会 在这次实验中学到了很多知识,但是在实验的过程中遇到了好多问题,写代码的时候总是出错,运行不出来,由于知识掌握的不是很好,不会调试代码,到最后在同学的帮助下完成了实验,所以这次试验后我也明白了合作在实验中起了很重要作用,在遇到困难自己解决不了的时候,要多询问询问同学和老师,这样才能真正学到知识,才能真正的进步。

六.附录:源代码 1.1到10的累加和

AREA SUM2,CODE,READONLY ENTRY CODE32 start

MOV R0,#1 LDR R1,=sum LDR R2,=0 LOOP

ADD R2,R2,R0 ADD R0,R0,#1 CMP R0,#11 BNE LOOP

STREQ R2,[R1] stop

MOV r0,#0x18 LDR r1,=0x20026 SWI 0x123456

AREA Data,DATA,READWRITE

sum DCD 0 END

2.最大值与最小值

AREA max,CODE,READONLY

ENTRY CODE32

num EQU 9 start

LDR R0,=x LDR R1,=y LDR R2,=z

LDR R3,=num LDR R4,[R0] LDR R5,[R0] compare

ADD R0,R0,#4 LDR R6,[R0] CMP R4,R6 MOVCC R4,R6 MOVCS R5,R6

SUBS R3,R3,#1 BNE compare STREQ R4,[R1] stop

MOV r0,#0x18 LDR r1,=0x20026 SWI 0x123456

AREA Data,DATA,READWRITE

x DCD 59,37,13,67,107,12,231,1,42,222 y DCD 0 z DCD 0 END

3. 累加求和到3000

AREA SUM,CODE,READONLY ENTRY CODE32 Start

LDR R0,=n LDR R1,=sum LDR R3,=0 LDR R4,=0 LDR R5,=3000 continue

ADD R4,R4,#1

ADD R3,R3,R4 CMP R3,R5 BCC continue STRCS R3,[R1] STRCS R4,[R0] stop

MOV r0,#0x18 LDR r1,=0x20026

SWI 0x123456 AREA Data,DATA,READWRITE n DCD 0 sum DCD 0 END 4.排序:

AREA Bibble,CODE,READONLY ENTRY start

LDR R1,=num MOV R2,#0 LDR R4,[R1] SUB R4,R4,#1 SUB R1,R1,#4 outer

LDR R0,=src inner

LDR R5,[R0] LDR R6,[R0,#4] CMP R5,R6 STRGT R6,[R0] STRGT R5,[R0,#4] ADD R0,R0,#4 CMP R0,R1 BNE inner ADD R2,R2,#1 SUB R1,R1,#4 CMP R2,R4 BNE outer stop

MOV R0,#0X18 LDR R1,=0X123456

AREA BlockData,DATA,READWRITE src DCD 18,16,4,2,12,5,6,8,1,3 num DCD 10 END

本文来源:https://www.bwwdw.com/article/6wlo.html

Top