嵌入式上机程序代码.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验1内容: ①使用LDR指令读取0x座机电话号码上的数据,将数据加1,若结果小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址……周而复此循环; ②使用ADS 1.2软件仿真,单步、全速运行程序,设置断点,打开寄存器窗口 Processor Registers 监视R0、R1的值,打开存储器观察窗口 Memory 监视0x座机电话号码上的值。 COUNT EQU 0x座机电话号码 ; 定义一个变量,地址为0x座机电话号码 AREA Experiment1,CODE,READONLY ; 声明代码段Example2 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令 START LDR R1, COUNT ; R1 ←COUNT MOV R0,#0 ; R0←0 STR R0,[R1] ; [R1]←R0,即设置COUNT为0 LOOP LDR R1, COUNT LDR R0,[R1] ; R0 ←[R1] ADD R0,R0,#1 ; R0 ← R0 + 1 CMP R0,#10 ; R0与10比较,影响条件码标志 MOVHS R0,#0 ; 若R0大于等于10,则此指令执行,R0 ← 0 STR R0,[R1] ; [R1] ←R0,即保存COUNT B LOOP END 实验2内容: 1.使用MOV和MVN指令访问ARM通用寄存器; 2.使用ADD、SUB、AND、ORR、CMP、TST等指令完成数据加减运算及逻辑运算。 实验代码: X EQU 11 ; 定义X的值为11 Y EQU 8 ; 定义Y的值为8 BIT23 EQU 1 23 ; 定义BIT23的值为0AREA Experiment2,CODE,READONLY ; 声明代码段Example3 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令 START ; 使用MOV、ADD指令实现:R8 R3 X + Y MOV R0,#X ; R0 ←X,X的值必须是8位图数据 MOV R1,#Y ; R1 ←Y,Y的值必须是8位图数据 ADD R3,R0,R1 ; 即是R3 X + Y MOV R8,R3 ; R8 ← R3 ; 使用MVN、SUB指令实现:R5 0x5FFFFFF8 - R8 * 8 MVN R0,#0xA0000007 ; 0xA0000007的反码为0x5FFFFFF8 SUB R5,R0,R8,LSL #3 ; R8左移3位,结果即是 R8 * 8 ; 使用CMP指令判断 5*Y/2 2*X 吗?若大于则R5 R50xFFFF0000,否则R5 R5|0x000000FF MOV R0,#Y ADD R0,R0,R0,LSL #2 ; 计算R0 Y + 4*Y 5*Y MOV R0,R0,LSR #1 ; 计算R0 5*Y/2 MOV R1,#X MOV R1,R1,LSL #1 ; 计算R1 2*X CMP R0,R1 ; 比较R0和R1,即 5*Y/2 和 2*X 进行比较 LDRHI R2, 0xFFFF0000 ; 若 5*Y/2 2*X ,则R2 ← 0xFFFF0000 ANDHI R5,R5,R2 ; 若 5*Y/2 2*X ,则R5 R5R2 ORRLS R5,R5,#0x000000FF ; 若 5*Y/2 ≤ 2*X ,则R5 R5|0x000000FF ; 使用TST指令测试R5的bit23是否为1,若是则将bit6位清零 使用BIC指令 TST R5,#BIT23 BICNE R5,R5,#0B START END 实验3内容: 1.使用ARM汇编指令实现if条件执行; 2.使用ARM汇编指令实现for循环结构; 3.使用ARM汇编指令实现while循环结构; 4.使用ARM汇编指令实现do…while循环结构; 5.使用ARM汇编指令实现switch开关结构。 实验代码: AREA Experiment3,CODE,READONLY ; 声明代码段Example4 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令 START ; if x y z 100; ; else z 50; ; 设x为R0,y为R1,z为R2 x、y、z均为无符号整数 MOV R0,#76 ; 初始化x的值 MOV R1,#243 ; 初始化y的值 CMP R0,R1 ; 判断x y M

文档评论(0)

qbjzmxj5904 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档