嵌入式系统应用教程 中国通信学会普通高等教育“十二五”规划教材立项项目 教学课件 作者 赵宏 王小牛 任学惠 第七章.pptVIP

嵌入式系统应用教程 中国通信学会普通高等教育“十二五”规划教材立项项目 教学课件 作者 赵宏 王小牛 任学惠 第七章.ppt

  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文档。上传文档
查看更多
目 录 7.1 条件执行 本章习题 7.3 运算类指令 14.CMN(基于相反数的比较指令) CMN指令将寄存器Rn中的值加上shifter_operand表示的数值,根据操作的结果更新CPSR中相应的条件标志位,后面的指令就可以根据CPSR中相应的条件位来判断是否执行。 指令的语法格式为: CMN{cond} Rn, shifter_operand 其中,各参数的使用方法与CMP指令相同。 CMN指令通过给第1个操作数Rn加上第2个操作数shifter_operand的值来表示比较第1个操作数Rn和第2个操作数shifter_operand的负数。加上第2个操作数与减去第2个操作数的负数对CPSR中条件标志位的影响有细微的差别。当第2个操作数为0或者0二者结果不同。 使用举例如下: CMP R2, #0 ;C=1 CMN R2, #0 ;C=0 7.3 运算类指令 15.TST(位测试指令) TST指令将寄存器Rn中的值与shifter_operand表示的数值按位做逻辑与操作,根据操作的结果更新CPSR中相应的条件标志位。 指令的语法格式为: TST{cond} Rn, shifter_operand 其中,各参数的使用方法与CMP指令相同。 TST指令通常用于测试寄存器中某些(个)位是0还是1。 使用举例如下: TST R3, #01 ;测试R3寄存器中最低位是0还是1 7.3 运算类指令 16.TEQ(相等测试指令) TEQ指令将寄存器Rn中的值与shifter_operand表示的数值按位做逻辑异或操作,根据操作的结果更新CPSR中相应的条件标志位。 指令的语法格式为: TEQ{cond} Rn, shifter_operand 其中,各参数的使用方法与CMP指令相同。 TEQ指令通常用于比较两个数是否相等,这种比较操作不影响CPSR中的V位和C位(影响Z位)。TEQ指令也可用于比较两个操作数符号是否相同,该指令执行后,CPSR中的N位为两个操作数符号异或操作的结果。 使用举例如下: TEQ R3, #01 7.3 运算类指令 17.MUL(32位乘法指令) MUL指令实现两个32位的数(可以为无符号数,也可为有符号数)的乘积,并将结果的低32位存放到一个32位寄存器中,同时可以根据运算结果设置CPSR中相应的标志位。 指令的语法格式为: MUL{cond}{S} Rd, Rm, Rs 其中,cond为指令执行的条件码;Rd寄存器为目标寄存器;Rm寄存器为第1个乘数所在的寄存器;Rs寄存器为第2个乘数所在的寄存器。 使用举例如下: LDR R0, =0x1234 MOV R1, #16 MUL R2, R0, R1 则R2中值为0x12340。 7.3 运算类指令 18.MLA(32位带加数乘法指令) MLA指令实现两个32位的数(可以为无符号数,也可为有符号数)的乘积,再将乘积加上第3个操作数,并将结果的低32位存放到一个32位寄存器中,同时可以根据运算结果设置CPSR中相应的标志位。 指令的语法格式为: MLA{cond}{S} Rd, Rm, Rs, Rn 其中,Rn为第3个操作数所在的寄存器,该操作数是一个加数,其余参数的使用方法与MUL指令相同。 除了将乘积再加上第3个操作数之外,MLA指令同MUL指令相同。 使用举例如下: LDR R0, =0x1234 MOV R1, #16 MOV R2, #5 MLA R3, R0, R1, R2 则R2中值为0x12345。 7.3 运算类指令 19.SMULL(64位有符号数乘法指令) SMULL指令实现两个32位的有符号数的乘积,乘积结果的高32位存放到一个32位的寄存器RdHi中,乘积结果的低32位存放到一个32位寄存器RdLo中,同时可以根据运算结果设置CPSR中相应的标志位。 指令的语法格式为: SMULL{cond}{S} RdLo, RdHi, Rm, Rs 其中,RdHi寄存器存放乘积结果的高32位数据;RdLo寄存器存放乘积结果的低32位数据;其余参数的使用方法与MUL指令相同。 SMULL是最常用的32位符号数的乘法指令。 使用举例如下: MVN R0, #15 ;R0=-16 MVN R1, #63 ;R1=-64 SMULL R2, R3, R0, R1 则R3=0R2=0 7.3 运算类指令 20.SMLAL(64位带加数的有符号数乘法指令) SMLAL指令将两个32位有符号数的64位乘积结果与RdHi和RdLo中的64位

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档