ARM常用汇编指令.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM常用汇编指令

ARM常用汇编指令 HYPERLINK /blog/ \l m=0t=1c=fks_087069083094087074087086087095087083083069084094086065 arm 2009-12-19 15:51:59 阅读113 评论0 字号:大中小 LDR 和STR——用于字和无符号字节 指令格式: LDR/STR{cond}{T} Rd,地址 LDR/STR{cond}B{T} Rd,地址 LDR{cond}{T} Rd,地址 ? 加载指定地址的字数据到Rd中; STR{cond}{T}??Rd,地址????存储Rd中的字数据到指定的地址单元中; LDR{cond}B{T}?Rd,地址??? 指令加载指定地址的字节数据到Rd的的最低字节中(Rd的高24位清零); STR{cond}B{T}?Rd, 地址?? 指令存储Rd中的最低字节数据到指定的地址单元中。 ???? T为可选后缀,若有T,那么即使处理器是在特权模式下,存储系统也将访问看成处理器是在用户模式下,T 在用户模式下无效,不能与前索引偏移一起使用T。 ? 地址部分可用的形式有4种: 零偏移(zero offset) [Rn] ,Rn的值作为传送数据的地址。如: LDR R0,[R1]; 前索引偏移(pre-indexed offset) [Rn,Flexoffset]{!} 在数据传送之前,将偏移量Flexoffset加到Rn 中。其结果作为传送数据的存储器地址。若使用后缀“!”,则结果写回到Rn 中,且Rn 不允许是R15,如: LDRB R0,[R1,#8] LDR R0,[R1,#8]! 程序相对偏移(program relative) label(label 必须是在当前指令的土4KB 范围内) 。 程序相对偏移是前索引形式的另一种版本。从PC 计算偏移量,并将PC 作为Rn 生成前索引指令,不能使用后缀“!”,如: LDR R0,place ; place地址装入R0 ?后索引偏移(post-indexed offset) [Rn],Flexoffset。在数据传送后,将偏移量Flexoffset 加到Rn 中,结果写回到Rn,Rn 不允许是R15,如: LDR R0,[R1],R2,LSL#2 ; 将存储器地址为R1 的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。 偏移量Flexoffset可以是下两种形式之: 1) 取值范围是-4095 到+4095 的整数的表达式,经常是数字常量,如: STR R5,[R7],#--8 2) 一个寄存器再加上移位(移位由立即数指定),如: {-}Rm{,shift} 其中: - :可选负号。若带符号“一”,则从Rn 中减去偏移量。否则,将偏移量加到Rn 中。 Rm :内含偏移量的寄存器。Rm 不允许是R15。 Shift:Rm 的可选移位方法。可以是下列形式的任何一种: ASR n :算术右移n 位(1=n=32) LSL n :逻辑左移n 位(1=n=31) LSR n :逻辑右移n 位(1=n=32) ROR n :循环右移n 位(1=n=31) RRX :循环右移1 位,带扩展。 AND―――――逻辑"与"操作指令 指令格式: AND{cond}{S} Rd,Rn,operand2 AND指令将操作数operand2 与Rn 的值按位逻辑"与",结果存放到目的寄存器Rd 中。若设置S,则根据运算结果影响N、Z位,在计算第二操作数时,更新C位,不影响V位(指令ORR、EOR、BIC 对标志位的影响同AND 指令)。 指令示例: ANDS R1,R1,R2? ;R1=R1R2,并根据运算的结果更新标志位 AND R0,R0,#0x0F ;R0=R00x0F,取出R0最低4位数据。 ORR―――――逻辑"或"操作指令 指令格式:ORR{cond}{S} Rd,Rn,operand2 ORR指令将操作数operand2 与Rn 的值按位逻辑"或",结果存放到目的寄存器Rd 中。指令示例: ORRS R1,R1,R2 ;R1=R1|R2,并根据运算的结果更新标志位 ORR R0,R0,#0x0F ;R0=R0|0x0F,将R0最低4位置1,其余位不变。 ? BIC―――――位清除指令 指令格式: BIC{cond}{S} Rd,Rn,operand2 BIC指令将Rn 的值与操作数operand2 的反码按位逻辑"与",结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。 ? CMP―――――比较指令 指令格式: CMP{cond} Rn,operand2 CMP指令用Rn

文档评论(0)

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

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

1亿VIP精品文档

相关文档