- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统基础实践教程-第3章v13
第3章 ARM嵌入式微处理器指令集;本章内容;;3.1 ARM指令集概述;3.1.1 ARM 指令的特点;3.1.2 ARM 指令集分类与格式; ARM 指令字长为固定的32 位,一条典型的ARM 指令的格式为:
opcode { cond } {s} Rd , Rn {, operand2 }
其中, 内的项是必需的,{}内的项是可选的。例如, opcode 是指令操作码,这是必须书写的;而{ cond }为指令执行条件,是可选项,若不书写则无条件执行。;3.1.3 条件执行;;ARM指令可以通过添加适当的条件码后缀来达到条件执行的目的。
这样可以提高代码密度,减少分支跳转指令数目,提高性能。
CMP r3,#0 CMP r3,#0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip
默认情况下,数据处理指令不影响程序状态寄存器的条件码标志位,但可以选择通过添加“S”来影响标志位。 CMP不需要增加 “S”就可改变相应的标志位。
loop … SUBS r1,r1,#1 BNE loop
;条件执行示例;【例3-1】比较R0和10的大小,并进行相应的赋值处理。
CMP R0,#10 ;R0与10比较
MOVHI R1,#1 ;若R0 10,则R1=1
MOVLS R1,#0 ;若R0 ≤ 10,则R1=0;3.2 ARM 处理器的寻址方式;;3.2.1 立即寻址;合法的立即数由一个8 位的常数进行32 位循环右移偶数位得到,其中循环右移的位数由一个4 位二进制的两倍表示。如果立即数记作 immediate ,8 位常数记作immed_8,
4 位循环右移值记作rotate_imm,则有
immediate =immed_8 进行32 位循环右移(2 *rotate_imm);3.2.2 寄存器寻址;3.2.3 寄存器间接寻址;3.2.4 寄存器移位寻址;;3.2.5 基址加变址寻址;1.前变址法
基址寄存器中的值和地址偏移量先作加减运算,生成的操作数作为内存访问的地址。
LDR R0,[ R1,# 4] ;R0 ←[R1+4]
LDR R0,[ R1,#4] ! ;R0←[R1+4],R1=R1+4
注:“!”表示在完成数据传送后将更新基址寄存器。;2.后变址法
将基址寄存器中的值直接作为内存访问的地址进行操作,内存访问完毕后基址寄存器中的值和地址偏移量作加减运算,并更新基地址寄存器。
LDR R0,[ R1],# 4 ;R0 ←[R1],R1=R1 + 4;例子;3.2.6 块拷贝寻址;;例子;多寄存器传送寻址模式;例1:将存储器中的连续数据装载到寄存器;???2:完成一个存储器数据块拷贝;3.2.7 堆栈寻址;ARM 处理器支持以下四种类型的堆栈工作方式:
满递增堆栈FA(Full Ascending):堆栈指针指向最后压入的数据,且由低地址向高地址生成;
满递减堆栈FD(Full Descending):堆栈指针指向最后压入的数据,且由高地址向低地址生成;
空递增堆栈EA(Empty Ascending):堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成;
空递减堆栈ED(Empty Descending):堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。;;;例:把寄存器内容放入堆栈,更新sp;3.2.8 相对寻址;;ARM 指令集总体可以分为六大类:
?? 数据处理指令;
?? Load/Store 指令;
?? 分支指令;
?? 程序状态寄存器访问指令;
?? 协处理器操作指令;
?? 异常产生指令。;3.3.1 数据处理指令;(1) 数据传送指令MOV
MOV指令的格式为:
MOV{cond}{S} Rd,operand2
例:MOV R0,R1 ;R0←R1
MOV R1,#0x20 ;R1←0x20
MOV R1,R2,LSL #2 ;R1←R2 * 4;(2) 数据非传送指令MVN
MVN指令的格式为:
MVN{cond}{S} Rd,operand2
MVN 指令可以将第二操作数operand2 表示的数据进行按位逻辑“非”操作后传送到目标寄存器Rd中。
MVN R1,#0;2.算术运算指令;例:
ADD R0,R1,R2
ADDS R1,R0,R0,LSL #1
SUB R1,R0,#0x20
SUBS R1,R0,R2,LSL #2
R
您可能关注的文档
最近下载
- 国内支付业务付款回单[收集].pdf VIP
- 2025年辽宁省抚顺市辅警人员招聘考试题库及答案.docx
- 剑桥商务英语BEC单词初级.pdf VIP
- 客户经理职能转变之我见.doc VIP
- Unit 2 Bridging Cultures Using Language&Assessing Your Progress人教版(2019)教学课件.pptx VIP
- 2025年辽宁高级档案职称考试(档案管理概论)精选模拟试题及答案.docx VIP
- 中华人民共和国法治宣传教育法普法课件.pptx VIP
- 人教版高中英语选择性必修第二册精品课件 Unit 2 BRIDGING CULTURES Section C Using Language & Assessing Your Progress (2).ppt VIP
- 英语选择性必修2选择性必修 二 Unit 2 Bridging Cultures - Assessing your progress(28张PPT).pptx VIP
- 2023-CSP-S提高级(第一轮)C++真题.doc VIP
文档评论(0)