网站大量收购独家精品文档,联系QQ:2885784924

周国运ARM讲义4.ppt

  1. 1、本文档共344页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统讲义 第4章 S3C2410X系统结构 周国运 2010.3 第三章习题解答 1、 ARM指令中的第二操作数“operand2”有哪些具体形式? 解:有三种:寄存器、寄存器移位、8位位图立即数。 2、 对于ARM的变址寻址方式,有基地址和偏移地址两部分组成。(1)基地址可以是哪些寄存器?(2)偏移地址可以有哪些形式?(3)总地址的计算方法有哪些?(4)变址寻址应用于哪些指令? 解:(1)基地址可以是通用寄存器R0---R15中的任意一个。 (2)偏移地址可以有三种形式:12位立即数、寄存器、寄存器移位。 (3)总地址的计算方法。有四种:前变址(前索引)、后变址(后索引)、自动变址。 前变址偏移:即先使用偏移传送数据;不修改基地址。 如:LDR Rd,[Rn, #m] 后变址偏移:即先传送数据;后使用偏移修改基地址。 如:STR Rd,[Rn],#m 自动变址:即先使用偏移传送数据;再用偏移修改基地址。 如:LDR Rd,[Rn,#m ]! 相对偏移:即PC为基地址,以相对偏移为偏移,加偏移传送数据,不修改基地址。 如: LDR Rd,label1(标号) STR Rd,label2 (4)变址寻址使用的指令,4条: LDR、STR、LDM、STM 3、编写程序,将存储器从0x400000开始的200个字节的数据,传送到0x400800开始的区域。 解: MOV R0,#0x400000 LDR R1,=0x400800 MOV R7,#200 LP LDRB R2,[R0],#1 STRB R2,[R1],#1 SUBS R7, R7,#1 BNE LP HERE B HERE 3、编写程序,将存储器从0x400000开始的200个字数据,传送到0x400800开始的区域,并且将它们相加,将其和存放在最后面。 解: MOV R0,#0x400000 LDR R1,=0x400800 MOV R7,#200 MOV R3,#0 MOV R4,#0 LP LDR R2,[R0],#4 STR R2,[R1],#4 ADDS R3,R3,R2 ADC R4,R4,#0 SUBS R7, R7,#1 BNE LP STR R3,[R1],#4 STR R4,[R1] HERE B HERE 4、 编写程序,比较存储器中0x400000和0x400004两无符号字数据的大小,并且将比较结果存于0x400008的字中,若两数相等其结果记为0,若前者大于后者其结果记为1,若前者小于后者其结果记为-1。 解: MOV R0,#0x400000 LDR R1,[R0],#4 ;取第1个数 LDR R2,[R0],#4 ;取第2个数 CMP R1,R2 ;两个数相比较 MOVHI R1,# 1 ;R1大 MOVLO R1,# -1 ;R1小 MOVEQ R1,# 0 ;两个数相等 STR R1,[R0] 5、 存储器从0x400000开始的100个单元中存放着ASCII码,编写程序,将其所有的小写字母转换成大写字母,对其它的ASCII码不做变换。 解: MOV R0,#0x400000 MOV R1,#0 LP LDRB R2,[R0,R1] CMP R2,#0x61 ;与‘a’比较 BLO NEXT ;小于转走 CMP R2,#0x7B ;0x7A为z SUBLO R2, R2,#0x20 ;小于转换 STRBLO R2,[R0,R1] ;小于保存 NEXT ADD R1, R1,#1 CMP R1,#100 BNE LP 6、编写一程序,查找存储器从0x400000开始的100个字中为0的数目,将其结果存到0x400190中。 解: MOV R0,#0x400000 MOV R7,#100 ;控制循环变量 MOV R1,#0 ;存0的数目 LP LDR R2,[R0],#4 ;取数 CMP R2,#0 ;比较为0 ADDEQ R1,R1,#1 ;为0加1 SUBS R7,R7,#1 ;修改控制变量 BNE LP STR R1,[R0] ;保存0的数目 7、 编写一程序,存储器中从0x400200开始有一个64位数。(1)将取反,再存回原处;(2)求其补码,存放到0x400208处 。 解: LDR R0,=0x400200 LDR R2,=0xFFFFFFFF LDR

文档评论(0)

wangjie111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档