- 1、本文档共203页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SWP指令应用示例: SWP R1,R1,[R0] ;将R1的内容与R0指向的存储单元的内容进行互换 SWPB R1,R2,[R0] ;将R0指向的存储单元低字节数据读取到R1中 ;(高24位清零),并将R2的内容写入到该内存单元中 ;(最低字节有效) * * * 处理器执行SWI指令时,设置程序计数器pc为向量表的0x8偏移处, 同时强制切换处理器模式到SVC模式,以便操作系统例程可以在特权模式下被调用 每个SWI指令有一个关联的SWI号(number),用于表示一个特定的功能调用或特性 指令传递的参数(24位立即数,其值为0~224-1),执行时CPU忽略该参数。 * * * Load ADdRess Load ADdRess long * * * MVN指令将8位图立即数(参看“第2操作数:#immed_8r——常数表达式 ”)或寄存器(operand2)按位取反后传送到目标寄存器(Rd),因为其具有取反功能,所以可以装载范围更广的立即数。 MOV: if conditionPassed(con) then Rd=operand2 if S==1 and Rd==R15 then CPSR=SPSR else if S==1 then N flag=Rd[31] Z flag= if Rd==0 then 1 else 0 C flag=operand2_carry_out V flag=unaffected MVN: if conditionPassed(con) then Rd=NOT operand2 if S==1 and Rd==R15 then CPSR=SPSR else if S==1 then N flag=Rd[31] Z flag= if Rd==0 then 1 else 0 C flag=operand2_carry_out V flag=unaffected 实现两个64位数相加(操作数1:R1高,R0低 操作数2:R3高,R2低 ) ADDS R4,R0,R2 ADD R5,R1,R3 实现两个64位数相减(操作数1:R1高,R0低 操作数2:R3高,R2低 ) SUBS R4,R0,R2 SBC R5,R1,R3 求一个64位数值的负数(操作数1:R1高,R0低) RSBS R2,R0,#0 RSC R3,R1,#0 加法运算指令——ADD指令将operand2的值与Rn的值相加,结果保存到Rd寄存器。指令格式如下: ADD{cond}{S} Rd,Rn,operand2 应用示例: ADDS R1,R1,#1020 ;R1=R1+1020,并影响标志位 ADD R1,R1,R2,LSL #2 ;R1=R1+R22 减法运算指令——SUB指令用寄存器Rn减去operand2,结果保存到Rd中。指令格式如下: SUB{cond}{S} Rd,Rn,operand2 应用示例: SUBS R0,R0,#240 ;R0=R0-240 ,并影响标志位 SUBS R2,R1,R2 ;R2=R1-R2 ,并影响标志位 逆向减法运算指令——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=R2×3 影响标志位 带进位加法指令——ADC将operand2的值与Rn的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器。指令格式如下: ADC{cond}{S} Rd,Rn,operand2 应用示例(使用ADC实现64位加法,结果存于R1(高32位)、R0中): ADDS R0,R0,R2 ;R0等于低32位相加,并影响标志位 ADC R1,R1,R3 ;R1等于高32位相加,并加上低位进位 带进位减法指令——SBC用寄存器Rn减去operand2,再减去CPSR中的C条件标志位的非(即若C标志清零,则结果减去1),结果保存到Rd中。指令格式如下: SBC{cond}{S} Rd,Rn,operand2 应用示例(使用SBC实现64位减法,结果存于R1、R0中): SUBS R0,
文档评论(0)