最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

ARM 实验报告

来源:动视网 责编:小OO 时间:2025-09-30 01:32:31
文档

ARM 实验报告

ARM与嵌入式技术实验报告专业班级:09电子信息工程3班学号:0901********姓名:王孟雄1、编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位)⑴、程序代码:.global_start_start:ldrR2,=0x12345678;将立即数12345678存储到R2中ldrR3,=0x98765432;将98765432存储在R3中movR2,R2,ROR#24;循环移位24位,使R2中的高八位移到第八位andR2,R2,#0x000000ff;屏蔽掉R2的高24位,an
推荐度:
导读ARM与嵌入式技术实验报告专业班级:09电子信息工程3班学号:0901********姓名:王孟雄1、编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位)⑴、程序代码:.global_start_start:ldrR2,=0x12345678;将立即数12345678存储到R2中ldrR3,=0x98765432;将98765432存储在R3中movR2,R2,ROR#24;循环移位24位,使R2中的高八位移到第八位andR2,R2,#0x000000ff;屏蔽掉R2的高24位,an


               A R M 与 嵌 入 式 技 术

专业班级:09电子信息工程3班

学号:0901********

姓名:王孟雄

1、 编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位) 

   ⑴、程序代码: 

.global _start 

_start: 

ldr R2,=0x12345678 ;将立即数12345678存储到R2中

ldr R3,=0x98765432 ;将98765432存储在R3中 

mov R2,R2,ROR #24 ;循环移位24位,使R2中的高八位移到第八位 

and R2,R2,#0x000000ff ;屏蔽掉R2的高24位, 

and R3,R3,#0xffffff00 ;屏蔽掉R2的低8位 

orr R3,R3,R2 ;用取或将R2的低8位移到R3得低8位 

stop: 

b stop 

.end

⑵、实验内容:

将12345678存储在R2中

将98765432存储在R3中

将R2中的高8位“12”移到R2的低8位,原来的数“12345678”变为“34567812”

屏蔽掉R2中的高24位,采用或命令时使其不影响R3中高24位的数值

屏蔽掉R3中的低8位,使使用或命令是能将R2的低8位移到R3的低8位

将R2中的高8位”12”移到R3的低8位而不影响R3中的其他的24位

2、 实现位的加法运算,要求【R1:R0】+【R3:R2】,结果放回【R1:R0】中 

⑴、程序代码: 

.global _start 

_start: 

ldr R0,=0x47584568 ;将立即数47584568存储在R0中 

ldr R1,=0xeeee ;将立即数eeee存储在R1中 

ldr R2,=0x504ed99d ;将立即数504ed99d存储在R2中 

ldr r3,=0x49556f ;将立即数49556f 存储在R3中 

adds r0,r0,r2 ;使用带标志位的加法指令将R2+R0中的值存到R0 

adc r1,r1,r3 ;使用带进位的加法指令将R3+R1的值存到R1中,如果R0+R2产生了进位,则C=1,此时将R1+1 

stop: 

b stop 

.end

⑵、实验内容:

将立即数47584568存储在R0中

将立即数eeee存储在R1中

将立即数504ed99d存储在R2中

将立即数49556f 存储在R3中

使用带标志位的加法指令将R2+R0中的值存到R0

使用带进位的加法指令将R3+R1的值存到R1中,如果R0+R2产生了进位,则C=1,此时将R1+1

⑶、结果分析 

注:以下分析均为16进制计算 

【 R1 : R0 】+【 R3 : R2 】=【 R1 : R0 】 

【eeee:47584568】+【49556f :504ed99d】=【12d3445d:97a71f05】 

首先低32位相加:47584568+504ed99d:8+d=5,C=1;6+9+1=0,C=1;5+9+1=f,C=0; 

4+d=1,C=1;8+e+1=7,C=1;5+4+1=a,C=0; 

7+0=7,C=0;4+5=9 ,C=0。 

相加后的结果为:47584568+504ed99d=97a71f05,可以看出低32位相加得出的结果和实验得出的结果一样。

再是高32位相加:eeee+49556f:e+f=d ,C=1;e+6+1=5,C=1;e+5+1=4,C=1; 

e+5+1=4,C=1;9+9+1=3,C=1;8+4+1=d,C=0; 

9+9+0=2,C=1;8+8+1=1,C=1。 

相加后的结果为:eeee+49556f =12d3445d,可以看出高32位相加得出的结果和实验得出的结果一样。 

所以由结果可以看出实验成功!

3、 编写一段程序计算10 ! 

⑴、程序代码: 

.global _start 

_start: 

mov R0,#10 ;将立即数10存储在R0中

mov R1,#10 ;将立即数10存到R1中,作为循环次数的限 

minus : sub R1,R1,#1 ;标记一个minus 子函数,每执行一次R1自减1 

mul R0,R1,R0 ;R1自减后与R0相乘,积放在R0中 

cmp R1,#0 ;判断R1是不是减到1了,如果没有则继续调用子程序 

bne minus ;如果Z不等于1,那么跳转到子程序标记处 

stop: 

b stop 

.end

⑵、实验内容:

跟踪10次后的答案是:0x375f00

⑶、结果分析: 

10 !=10x9x8x7x6x5x4x3x2x1=3638800,转化为16进制为375f00(3x165+7x1+5x163+15x162+0x161+0x160=3145728+458752+20480+3840=3628800) 

可以看出实验结果和计算出来的结果一致,所以实验成功!

4、 编写程序将地址1000H~1030H的数据全部搬移到2000H~2030H中,并将原数据区清零 

⑴、程序代码: 

.global _start 

_start: 

ldr R0,=0x1000 ;将地址1000H送到R0中存储 

ldr R1,=0x2000 ;将地址2000H送到R1中存储 

mov R2,#48 ;将立即数48送到R2中 

mov R4,#0 ;初始化R4,将0存储到R4中 

copy: ldrb R3,[R0] ;标记子程序入口 

strb R4,[R0],#1 ;将寄存器R0中的内容移到R4中 

strb R3,[R1],#1 ;将寄存器R1中的内容移到R3中 

subs R2,R2,#1 ;判断是否移完 

bne copy ;如果没有移完则跳转到子程序入口继续移 

stop: 

b stop

.end

⑵、实验内容:

⑶、结果分析 

由单步调试可以看出,没执行一次,则程序计数器PC就增加4,源地址首段地址为1000H,增加30H(3x16+0=48)则末段地址为1030H,之间有30H个空间,目的地址首段地址为2000H,增加30H(3x16+0=48)则末段地址为2030H,之间有30H个空间,然后使用strb指令将8位字节数据传输到指定的内存(此字节数据为元寄存器中的低8位)。由PC值可以看出试验成功。

文档

ARM 实验报告

ARM与嵌入式技术实验报告专业班级:09电子信息工程3班学号:0901********姓名:王孟雄1、编写程序将R2的高8位传送到R3的低8位(不考虑R3的其他位)⑴、程序代码:.global_start_start:ldrR2,=0x12345678;将立即数12345678存储到R2中ldrR3,=0x98765432;将98765432存储在R3中movR2,R2,ROR#24;循环移位24位,使R2中的高八位移到第八位andR2,R2,#0x000000ff;屏蔽掉R2的高24位,an
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top