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

[工学]ARM指令集2.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]ARM指令集2

第三章 ARM指令集2 ARM指令详细介绍 数据处理指令; 程序状态寄存器处理指令; Load/Store指令; 跳转指令; 异常中断产生指令; 协处理器指令。 3.1 数据处理指令 ARM的数据处理指令主要完成寄存器中数据的算术和逻辑运算操作。 ARM数据处理指令的特点: 所有的操作数要么来自寄存器,要么来自立即数,不会来自存储器。 如果有结果,则结果一定是为32位宽,并且放在一个寄存器中,不会写入存储器。(有一个例外:长乘法指令产生64位结果,但也不写入存储器) 每一个操作数寄存器和结果寄存器都在指令中独立指出,即:ARM数据处理指令采用3地址模式: Operation Rd, Rn, Rm ARM数据处理指令大致可分为6类: 算术运算指令: ADD ADC SUB SBC RSB RSC 逻辑运算指令: AND ORR EOR BIC 数据传送指令: MOV MVN 比较指令: CMP CMN 测试指令: TST TEQ 乘法指令:MUL MLA UMULL UMLAL SMULL SMLAL 上述指令只能对寄存器操作,不能针对存储器。 数据处理指令的详细列表如下: 算术运算指令: ② ADC——带进位加法指令   ADC指令将operand2的数据与Rn的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器。指令格式如下: ADC{cond}{S} Rd,Rn,operand2 指令举例如下: ADDS R4,R0,R2 ;使用ADC实现64位加法, ADC R5,R1,R3 ;(R5、R4)=(R1、R0)+(R3、R2) ③ SUB——减法运算指令 SUB指令用寄存器Rn减去operand2,结果保存到Rd中。 指令格式如下: SUB{cond}{S} Rd,Rn,operand2 指令举例如下: SUBS R0,R0,#1 ;R0=R0-1 SUBPL R6,R7,#0x10 ;R6=R7-0x10 ④SBC——带进位减法指令 SBC指令用寄存器Rn减去operand2,加上CPSR中的C条件标志位再减去1,结果保存到Rd中。 C:有借位时清0,无借位时置1 指令格式如下: SBC{cond}{S} Rd,Rn,operand2 指令举例如下: SUBS R4,R0,R2 ;使用SBC实现64位减法, SBC R5,R1,R3 ;(R5,R4)=(R1,R0)-(R3,R2) ⑤ RSB——反向减法指令 RSB指令用寄存器operand2减去Rn,结果保存到Rd中。 指令格式如下: RSB{cond}{S} Rd,Rn,operand2 指令举例如下: RSB R3,R1,#0xFF00 ;R3=0xFF00-R1 RSBS R1,R2,R2,LSL #2 ;R1?R22-R2 ;(R1 =R2×3) 故此指令用途很大 ⑥ RSC——带进位反向减法指令 RSC 指令用寄存器operand2减去Rn,再减去CPSR中的C条件标志位的反,结果保存到Rd中。 指令格式如下: RSC{cond}{S} Rd,Rn,operand2 指令举例如下: RSBS R2,R0,#0 RSC R3,R1,#0 ;使用RSC指令实现 ;求64位数值的负数 逻辑运算指令: ①AND——逻辑“与”操作指令 AND指令将operand2的值与寄存器Rn的值按位逻辑“与”操作,结果保存到Rd中。 指令格式如下: AND{cond}{S} Rd,Rn,operand2 指令举例如下: ANDS R0,R0,#0x01 ;R0=R00x01 ;取出最低位数据 AND R0, R0,#0xFFFFFFFE ;清零最低位数据 AND R2,R1,R3 ;R2=R1R3 AND指令可用于提取寄存器中某些位的值,也可以清零某些位。 ② ORR——逻辑“或”操作指令 ORR指令将operand2的值与寄存器Rn的值按位逻辑“或”操作,结果保存到Rd中。 指令格式如下: ORR{cond}{S} Rd,Rn,operand2 指令举例如下: ORR R0,R0,#0x0F ;将R

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档