ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:159.09KB ,
资源ID:4191624      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4191624.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ARM指令集Word文档下载推荐.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

ARM指令集Word文档下载推荐.docx

1、数据处理指令3 3ADD 加法指令 ADDop2RdRn+op2 op2可以是寄存器,被移位的寄存器或立即数。ADD R0,R1,5 ;R0=R1+5 ADD R0,R1,R2 ;R0=R1+R2 ADD R0,R1,R2,LSL5 ;R0=R1+R2左移5位 数据处理指令4 4ADC 带进位加法指令 ADCRdRn+op2+carry op2可以是寄存器、被移位的寄存器或立即数;carry为进位标志值。该指令用于实现超过32位的数的加法。第一个64位操作数存放在寄存器R2,R3中;第二个64位操作数存放在寄存器R4,R5中;64位结果存放在R0,R1中。64位的加法可由以下语句实现:ADDS

2、 R0,R2,R4 ;低32位相加,S表示结果影响条件标志位的值 ADC R1,R3,R5 ;高32位相加 数据处理指令5 5SUB 减法指令 SUBRdRn-op2 op2可以是寄存器、被移位的寄存器或立即数。SUB R0,R1,5 ;R0=R1-5 SUB R0,R1,R2 ;R0=R1-R2 SUB R0,R1,R2,LSL5 ;R0=R1-R2左移5位 数据处理指令6 6RSB 反向减法指令 RSB同SUB指令,但倒换了两操作数的前后位置,即Rdop2-Rn。RSB R0,R1,5 ;R0=5-R1 RSB R0,R1,R2 ;R0=R2-R1 RSB R0,R1,R2,LSL5 ;R

3、0=R2左移5位-R1 数据处理指令7 7SBC 带借位减法指令 SBCRdRn-op2-!carry SUB和SBC生成进位标志的方式不同于常规,如果需要借位则清除进位标志,所以指令要对进位标志进行一个非操作。64位的减法(第一个操作数减去第二个操作数)可由以下语句实现:SUBS R0,R2,R4; 低32位相减,S表示结果影响条件标志位的值 SBC R1,R3,R5; 高32位相减 数据处理指令8 8RSC 带借位的反向减法指令 RSC同SBC指令,但倒换了两操作数的前后位置,即Rdop2-Rn-!carry。前提条件与SBC例子相同,操作数1-操作数2的实现语句需改为: 低32位相减,S

4、表示结果影响寄存器CPSR的值 RSC R1,R5,R3;数据处理指令乘法指令 ARM7TDMI具有三种乘法指令,分别为:3232位乘法指令; 32位乘加指令; 32位结果为64位的乘/乘加指令。数据处理指令9 9MUL 32位乘法指令 MULRdRnop2 该指令根据S标志,决定操作是否影响CPSR的值;其中op2必须为寄存器。Rn和op2的值为32位的有符号数或无符号数。MULS R0,R1,R2 ;R0R1R2,结果影响寄存器CPSR的值 数据处理指令10 10MLA 32位乘加指令 MLAop2+op3 op2和op3必须为寄存器。Rn、op2和op3的值为32位的有符号数或无符号数。

5、MLA R0,R1,R2,R3 ;R2+R3 数据处理指令11 11SMULL 64位有符号数乘法指令 SMULLRdhRdh RdlRnRdh、Rdl和op2均为寄存器。Rn和op2的值为32位的有符号数。SMULL R0,R1,R2,R3 R0R2R3的低32位 R1R2R3的高32位 数据处理指令12 12SMLAL 64位有符号数乘加指令 SMLALop2+Rdh Rdl Rn和op2的值为32位的有符号数,Rdh Rdl的值为64位的加数。SMLAL R0,R1,R2,R3 R3的低32位+R0 R3的高32位+R1 数据处理指令13 13UMULL 64位无符号数乘法指令 UMUL

6、L同SMULL指令,但指令中Rn和op2的值为32位的无符号数。UMULL R0,R1,R2,R3 其中R2,R3的值为无符号数 数据处理指令14 14UMLAL 64位无符号数乘加指令 UMLAL 同SMLAL指令,但指令中Rn,op2的值为32位的无符号数,Rdh Rdl的值为64位无符号数。UMLAL R0,R1,R2,R3 其中R2,R3的值为32位无符号数 R1,R0的值为64位无符号数 数据处理指令15 15AND 逻辑与指令 ANDRdRn AND op2 一般用于清除Rn的特定几位。AND R0,R0,5 保持R0的第0位和第2位,其余位清0 数据处理指令16 16ORR 逻辑

7、或指令 ORRRdRn OR op2 一般用于设置Rn的特定几位。ORR R0,R0,5 R0的第0位和第2位设置为1,其余位不变 数据处理指令17 17EOR 逻辑异或指令 EORRdRn EOR op2 一般用于将Rn的特定几位取反。EOR R0,R0,5 R0的第0位和第2位取反,其余位不变 数据处理指令18 18BIC 位清除指令 BICRdRn AND (!op2) 用于清除寄存器Rn中的某些位,并把结果存放到目的寄存器Rd中. 操作数op2是一个32位掩码(mask),如果在掩码中设置了某一位,则清除Rn中的这一位;未设置的掩码位指示Rn中此位保持不变。其中,op2可以是寄存器、被

8、移位的寄存器或立即数。BIC R0,R0,5 R0中第0位和第2位清0,其余位不变 数据处理指令19 19CMP 比较指令 CMP 5,则执行ADDGT指令 数据处理指令20 20CMN 反值比较指令 CMN同CMP指令,但寄存器Rn的值是和op1取负的值进行比较。CMN R0,5 ;把R0与-5进行比较 数据处理指令21 21TST 位测试指令 TST Rn AND op1 根据结果更新CPSR中条件标志位的值,但不存储结果。用于检查寄存器Rn是否设置了op1中相应的位。TST R0,5 ;测试R0中第0位和第2位是否为1 数据处理指令22 22TEQ 相等测试指令 TEQ Rn EOR o

9、p1 将寄存器Rn的值和操作数op1所表示的值按位作逻辑异或操作,根据结果更新CPSR中条件标志位的值,但不存储结果。用于检查寄存器Rn的值是否和op1所表示的值相等。TEQ R0,5 ;判断R0的值是否和5相等 跳转指令 跳转指令用于实现程序的跳转和程序状态的切换。ARM程序设计中,实现程序跳转有两种方式:(1)跳转指令, (2)直接向程序寄存器PC(R15)中写入目标地址值。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转。使用跳转指令,其跳转空间受到限制。跳转指令1 1B 跳转指令 B PC= PC+ addr左移两位 addr的值是相对当前PC(即寄存器R15

10、)的值的一个偏移量,而不是一个绝对地址,它是24位有符号数。实际地址的值由汇编器来计算. addr的值有符号扩展为32位后,左移两位,然后与PC值相加,即得到跳转的目的地址。跳转的范围为-32MB+32MB。B exit; 程序跳转到标号exit处 exit 跳转指令2 2BL 带返回的跳转指令 BL同B指令,但BL指令执行跳转操作的同时,还将PC(寄存器R15)的值保存到LR寄存器(寄存器R14)中。该指令用于实现子程序调用,程序的返回可通过把LR寄存器的值复制到PC寄存器中来实现。BL func; 调用子程序func func MOV R15,R14; 子程序返回 由于返回地址保存在寄存器

11、里,在保存R14之前不应再调用下一级的嵌套子程序;否则,新的返回地址将覆盖原来的返回地址,就无法返回到原来的调用位置。这时一般是把R14压入存储器中的堆栈。由于子程序经常还需要一些工作寄存器,所以可使用多寄存器存储指令同时把这些寄存器中原有的数据一起存储。BL SUB1 SUB1 STMFD R13!,R0-R2,R14;保存工作和链接寄存器 BL SUB2 SUB2 对于不调用其他子程序的子程序(叶子程序),不需要保存R14,因为它不会被覆盖。跳转指令3 3BLX 带返回和状态切换的跳转指令 BLX 或BLX 处理器跳转到目标地址处,并将PC(寄存器R15)的值保存到LR寄存器(R14)中。

12、若为第二种格式,寄存器Rn的值是转移目标,Rn的第0位拷贝到CPSR中的T位(决定是继续执行还是切换到Thumb指令),31:0位移入PC;如果Rn0是1,则处理器切换执行Thumb指令,并在Rn中的地址开始执行,但是需将最低为清零;如果Rn0是0,则处理器继续执行ARM指令,并在Rn中的地址处开始执行,但需将Rn1清零。该指令用于子程序调用和程序状态的切换。BLX T16; 跳转到标号T16处执行,T16后面的指令为Thumb指令 CODE16 T16 后面指令为Thumb指令 跳转指令4 4BX 带状态切换的跳转指令 BX r1 sub r0, r0, r1 ;subtract r1 fr

13、om r0 bal gcd less sub r1, r1, r0 ;subtract r0 from r1 stop ARM 代码 subgt r0, r0, r1 ;sublt r1, r1, r0 ;else subtract r0 from r1 bne gcd ;Load/Store指令1-1 1LDR 字数据加载指令 LDR把addr所表示的内存地址中的字数据装载到目标寄存器Rd中,同时还可以把合成的有效地址写回到基址寄存器。地址addr可以是一个简单的值、一个偏移量,或者是一个被移位的偏移量。寻址方式:Rn:基址寄存器。Rm:变址寄存器。Index:偏移量,12位的无符号数。LD

14、R Rd,Rn 把内存中地址为Rn的字数据装入寄存器Rd中 LDR Rd,Rn,Rm 将内存中地址为Rn+Rm的字数据装入寄存器Rd中 Load/Store指令1-2 LDR Rd,Rn,index 将内存中地址为Rn+index的字数据装入Rd中 LDR Rd,Rn,Rm,LSL5 将内存中地址为Rn+Rm32的字数据装入Rd LDR Rd,Rn,Rm !将内存中地址为Rn+Rm的字数据装入Rd,并将新地址Rn+Rm写入Rn LDR Rd,Rn,index !将内存中地址为Rn+index的字数据装入Rd,并将新地址Rn+index写入Rn LDR Rd,Rn,Rm,LSL5!32的字数据装

15、入Rd,并将新地址Rn+Rm32写入Rn Load/Store指令1-3 LDR Rd,Rn,Rm 将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+Rm写入Rn LDR Rd,Rn,index;将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+index写入Rn LDR Rd,Rn,Rm,LSL5 将内存中地址为Rn的字数据装入寄存器Rd,并将新地址Rn+RmLDR R0,R1,R2,LSL5! 将内存中地址为R1+R232的字数据装入寄存器R0,并将新地址R1+R232写入R1 Load/Store指令2 LDRB 字节数据加载指令 B 同LDR指令,但该指令只是从内存读取

16、一个8位的字节数据而不是一个32位的字数据,并将Rd的高24位清0。LDRB R0,R1 将内存中起始地址为R1的一个字节数据装入R0中 Load/Store指令3 3LDRBT 用户模式的字节数据加载指令 BT 同LDRB指令,但无论处理器处于何种模式,都将该指令当作一般用户模式下的内存操作。Load/Store指令4 4LDRH 半字数据加载指令 H 同LDR指令,但该指令只是从内存读取一个16位的半字数据而不是一个32位的字数据,并将Rd的高16位清0。LDRH R0,R1 将内存中起始地址为R1的一个半字数据装入R0中 Load/Store指令5 5LDRSB 有符号的字节数据加载指令

17、 SB 同LDRB指令,但该指令将寄存器Rd的高24位设置成所装载的字节数据符号位的值。LDRSB R0,R1 将内存中起始地址为R1的一个字节数据装入R0中,R0的高24位设置成该字节数据的符号位 Load/Store指令6 6LDRSH 有符号的半字数据加载指令 SH 同LDRH指令,但该指令将寄存器Rd的高16位设置成所装载的半字数据符号位的值。LDRSH R0,R1 将内存中起始地址为R1的一个16位半字数据装入R0中,R0的高16位设置成该半字数据的符号位 Load/Store指令7 7LDRT 用户模式的字数据加载指令 T 同LDR指令,但无论处理器处于何种模式,都将该指令当作一般

18、用户模式下的内存操作。addr所表示的有效地址必须是字对齐的,否则从内存中读出的数值需进行循环右移操作。Load/Store指令8 8STR 字数据存储指令 STR把寄存器Rd中的字数据(32位)保存到addr所表示的内存地址中,同时还可以把合成的有效地址写回到基址寄存器。寻址方式同LDR指令。STR R0,R1,5!把R0中的字数据保存到以R1+5为地址的内存中,然后R1R1+5 STR指令应用举例 Load/Store指令9 9STRB 字节数据存储指令 把寄存器Rd中的低8位字节数据保存到addr所表示的内存地址中。其他用法同STR指令。STRB R0,R1 将寄存器R0中的低8位数据存

19、入R1表示的内存地址中 Load/Store指令10 10STRBT 用户模式的字节数据存储指令 同STRB指令,但无论处理器处于何种模式,该指令都将被当作一般用户模式下的内存操作。Load/Store指令11 11STRH 半字数据存储指令 把寄存器Rd中的低16位半字数据保存到addr所表示的内存地址中,而且addr所表示的地址必须是半字对齐的。STRH R0,R1 将寄存器R0中的低16位数据存入R1表示的内存地址中 存储格式对于加载/存储指令的影响 Load/Store指令12 12STRT 用户模式的字数据存储指令 同STR指令,但无论处理器处于何种模式,该指令都将被当作一般用户模式下的内存操作。Load/Store指令13-1 13LDM 批量数据加载指令 LDM!,;从一片连续的内存单元读取数据到各个寄存器中,内存单元的起始地址为基址寄存器Rn的值,各个寄存器由寄存器列表regs表示。该指令一般用于多个寄存器数据的出栈。type字段种类:IA:每次传送后地址加1。IB:每次传送

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2