ARM 实验报告12pWord文档下载推荐.docx

上传人:b****5 文档编号:16278802 上传时间:2022-11-22 格式:DOCX 页数:9 大小:420.65KB
下载 相关 举报
ARM 实验报告12pWord文档下载推荐.docx_第1页
第1页 / 共9页
ARM 实验报告12pWord文档下载推荐.docx_第2页
第2页 / 共9页
ARM 实验报告12pWord文档下载推荐.docx_第3页
第3页 / 共9页
ARM 实验报告12pWord文档下载推荐.docx_第4页
第4页 / 共9页
ARM 实验报告12pWord文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

ARM 实验报告12pWord文档下载推荐.docx

《ARM 实验报告12pWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ARM 实验报告12pWord文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

ARM 实验报告12pWord文档下载推荐.docx

将立即数12345678存储到R2中

ldrR3,=0x98765432;

将98765432存储在R3中

movR2,R2,ROR#24;

循环移位24位,使R2中的高八位移到第八位

andR2,R2,#0x000000ff;

屏蔽掉R2的高24位,

andR3,R3,#0xffffff00;

屏蔽掉R2的低8位

orrR3,R3,R2;

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

stop:

bstop

.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、实现64位的加法运算,要求【R1:

R0】+【R3:

R2】,结果放回【R1:

R0】中

⑴、程序代码:

ldrR0,=0x47584568;

将立即数47584568存储在R0中

ldrR1,=0x8989eeee;

将立即数8989eeee存储在R1中

ldrR2,=0x504ed99d;

将立即数504ed99d存储在R2中

ldrr3,=0x8949556f;

将立即数8949556f存储在R3中

addsr0,r0,r2;

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

adcr1,r1,r3;

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

将立即数47584568存储在R0中

将立即数8989eeee存储在R1中

将立即数504ed99d存储在R2中

将立即数8949556f存储在R3中

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

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

⑶、结果分析

注:

以下分析均为16进制计算

【R1:

R0】+【R3:

R2】=【R1:

R0】

【8989eeee:

47584568】+【8949556f:

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位相加:

8989eeee+8949556f:

e+f=d,C=1;

e+6+1=5,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。

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

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

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

movR0,#10;

将立即数10存储在R0中

movR1,#10;

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

minus:

subR1,R1,#1;

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

mulR0,R1,R0;

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

cmpR1,#0;

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

bneminus;

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

跟踪10次后的答案是:

0x375f00

⑶、结果分析:

10!

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

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

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

ldrR0,=0x1000;

将地址1000H送到R0中存储

ldrR1,=0x2000;

将地址2000H送到R1中存储

movR2,#48;

将立即数48送到R2中

movR4,#0;

初始化R4,将0存储到R4中

copy:

ldrbR3,[R0];

标记子程序入口

strbR4,[R0],#1;

将寄存器R0中的内容移到R4中

strbR3,[R1],#1;

将寄存器R1中的内容移到R3中

subsR2,R2,#1;

判断是否移完

bnecopy;

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

bstop

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

由PC值可以看出试验成功。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1