- 1、本文档共171页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM寻址方式 堆栈寻址 ARM指令中,通过Load/Store指令来实现 STMFD SP! {R1-R7,LR} LDMFD SP! {R1-R7,LR} Thumb指令中,通过Push/Pop指令来实现 PUSH {R1-R7,LR} POP {R1-R7,PC} * ARM寻址方式 块拷贝寻址 多寄存器传送指令LDM/STM的寻址方式 LDMIA R0!,{R2-R9} ;将数据加载到R2-R9,R0为基址 STMIA R1!,{R2-R9} ;将数据存入到存储器,R1为基址 * ARM寻址方式 相对寻址 以PC当前值为基址,以指令中的地址标号为偏移量 BL SUBA …… SUBA …… MOV PC,R14 * 本章内容 ARM指令分类与格式 1 寻址方式 2 ARM 指令集介绍 3 4 * 指令集介绍 指令分类 (6类) 数据处理指令 Load/Store指令 状态寄存器访问指令 跳转指令 异常中断指令 协处理器指令 * 数据处理指令 数据处理指令的类别 (1)算术操作 (2)按位逻辑操作 (3)寄存器数据传送操作 (4)比较操作 * 数据处理指令 操作数: 32-bits; 3种指定操作数方式(寻址) 来自寄存器 第二操作数可以是常数(立即数) 移位寄存器操作数 结果: 32-bits 宽, 放在寄存器中 长乘法产生64位结果 * 数据处理指令 ADD r0, r1, r2 r0 := r1 + r2 ADC r0, r1, r2 r0 := r1 + r2 + C SUB r0, r1, r2 r0 := r1 - r2 SBC r0, r1, r2 r0 := r1 - r2 + C - 1 RSB r0, r1, r2 r0 := r2 – r1 RSC r0, r1, r2 r0 := r2 – r1 + C - 1 算术操作 * 数据处理指令 按位逻辑操作 AND r0, r1, r2 r0 := r1 and r2 ORR r0, r1, r2 r0 := r1 or r2 EOR r0, r1, r2 r0 := r1 xor r2 BIC r0, r1, r2 r0 := r1 and (not) r2 * 数据处理指令 寄存器数据传送 MOV r0, r2 r0 := r2 MVN r0, r2 r0 := not r2 比较操作 CMP r1, r2 set cc on r1 - r2 CMN r1, r2 set cc on r1 + r2 TST r1, r2 set cc on r1 and r2 TEQ r1, r2 set cc on r1 xor r2 * 3.2 Load/Store指令 示例: LDMFD R13!, {R0,R4-R12,PC} 将堆栈中的内存恢复到寄存器,用于函数返回 LDMIA R13!,{R0,R4-R12,PC}^ 读取数据到寄存器同时,进行SPSR到CPSR的数据传输 * 3.2 Load/Store指令 单寄存器交换指令(SWP SWPB) 在寄存器和外部存储器之间交换字节或字 格式: SWP{cond} Rd,Rm,[Rn] SWP R0,R1,[R2] 将R2指向的存储器的字送给R0,同时将R1中的字数据传送到R2指向的存储器中 SWP R0,R0,[R2] * SWPB R1, R2,[R0] 将R0指向的内存字节读到R1低8位,其余24为置0; 将R2低8为数据传送到[R0] * 指令集介绍 指令分类 (6类) 数据处理指令 Load/Store指令 状态寄存器访问指令 跳转指令 异常中断指令 协处理器指令 * 3.3 状态寄存器访问指令 程序状态寄存器访问指令(MRS, MSR) MRS 程序状态寄存器到通用寄存器的数据传送指令 MRS R0,CPSR MSR 通用寄存器到程序状态寄存器的数据传送指令 MSR CPSR,R0 * 3.4 跳转指令 流程的转移 ARM中有两种方式实现流程的跳转: 1.直接向PC寄存器写入目标地址(4GB) 2.跳转指令(前后32MB) * 3.4 跳转指令 根据完成的功能它可以分为以下4种 : B 转移指令 BL 带链接的转移指令 BX 带状态切换的转移指令 BLX 带链接和状态切换的转移指令 * 3.4 跳转指令 B和BL指令 分支指令 B B Label CMP R1, #0 BEQ Label 分支连接 BL 跳到希望的指令中 保存当前的PC至R14并返回 BL FUNCTION1 * 本章内容 汇编语言的伪操作与伪指令 1 ARM汇编语言程序格式 2 汇
文档评论(0)