ARM实验报告

  • 格式:doc
  • 大小:342.00 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
subltR1,R1,R0/R0小于R1 R1:=R1-R0
bne loop/不相等跳到loop
stop: b stop
.end
调试结果:
Download下载:
单步跟踪后的结果,存储器及寄存器的结果显示:
4.字符串拷贝(R0指向源数据的首地址,R1指向目的数据串的首地址)
程序如下:
.global _start
⑦R1等于高32位相加,并加上低位进位
单步跟踪后的结果,存储器及寄存器的结果显示:
3.编程求取两位数之间的最大公约数的程序。
程序如下:
.global _start
.text
_start:
MOVR0,#36/R0=36
MOVR1,#12/R1=12
loop:cmpR0,R1/R0,R1比较
subgtR0,R0,R1/R0大于R1 R0:=R0-R1
ARM嵌入式
实验报告
姓名:冯贤成
学号:120101021106
专业:电子信息工程
指导老师:郑汉麟
ARM
一、实验目的
1、通过实验掌握ARM指令的特点和寻址方式;
2、掌握简单的ARM汇编语言的程序设计;
3、了解集成开发环境Embest IDE及其开发软件的应用;
二、实验平台
Windows 7系统下的Embest IDE嵌入式软件开发平台
.text
.EQU NUM,8
_start:
LDR R0,=srcstr/*指向源数据串R0*/
LDR R1,=dststr/*指向目标数据串R1*/
mov R3,#NUM/*R3=8*/
mov LR,PC/*返回*/
B strcopy/*调用串拷贝子程序*/
stop:
b stop
strcopy:
LDRB R2,[R0],#1/*装载字节同时更新地址*/
三、实验内容
1.编写程序将R2的高8位传送到R3的低8位(不考虑R3的其它位)
程序如下:
.global _start
.text
_start:
MOVR2wenku.baidu.com#0x80000003/*把第一个立即数送进R2*/
MOVR3,#0x40000013/*把第二个立即数送进R3*/
ANDR0,R2,#0xff000000/*取R2高8位到R0*/
.end
调试结果:
Download下载:
单步跟踪后的结果,存储器及寄存器的结果显示:
四、实验感悟
这次ARM实验让我意识到我的理论知识是多么薄弱,这么多知识漏洞,我承认上课的确没有怎么认真听过讲,所以老师问的一些问题我答不上来,而且实验程序自己也不能独立完成,很惭愧。这个实验注重的是寄存器的变化,它的变化就是程序运行的过程,这个对程序的理解帮助很大。
STRB R2,[R1],#1/*存储字节同时更新地址*/
SUBS R3,R3,#1
CMP R3,#0/*判断是否结束*/
BNE strcopy/*不是,则继续*/
MOV PC,LR/*返回*/
.data
srcstr: .long 1,2,3,4,5,6,7,0 /*定义源数据串*/
dststr: .long 5,3,2,1,4,6,8,0 /*定义目的字符串*/
6R0逻辑右移24位后与R3相或,结果送进R3:
单步跟踪后的结果,存储器及寄存器的结果显示:
2.编程实现64位的加法运算,要求【R1:R0】+【R3:R2】结果放回【R1:R0】。
程序如下:
.global _start
.text
_start:
MOVR0,#12/R0=12
MOVR1,#6/R1=6
MOVR2,#8/R2=8
MOVR3,#9/R3=9
ADDS R0,R0,R2/R0等于低32位相加,并影响标志位
ADC R1,R1,R3/R1等于高32位相加,并加上低位进位
stop:
b stop
.end
调试结果:
①Download下载:
②将12赋给R0
③将6赋给R1
④将8赋给R2
⑤将9赋给R3
⑥R0等于低32位相加,并影响标志位
ANDR3,R3,#0xffffff00/*R3低8位清零*/
ORRR3,R3,R0,lsr #24/*R0逻辑右移24位后与R3相或,结果送进R3*/
stop:
b stop
.end
调试结果:
1Download下载:
2把第一个立即数送进R2:
3把第二个立即数送进R3:
4取R2高8位到R0:
5R3低8位清零:

相关主题