- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式系统 第2章 ARM体系结构及指令系统 概述 编程模式 指令系统 汇编语言程序设计 硬件结构 概述 Thumb指令集(T变种) 长乘法指令(M变种) 增强型DSP指令(E变种) Java加速器(J变种) ARM媒体功能扩展(SIMD变种) 编程模式 CPU运行模式 编程模式 ARM处理器寻址方式 寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。 ARM处理器具有8种基本寻址方式,以下列出: 寄存器寻址 - 立即寻址 寄存器偏移寻址 - 寄存器间接寻址 基址寻址 - 多寄存器寻址 堆栈寻址 - 相对寻址 寄存器寻址 操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: MOV R1,R2 ;读取R2的值送到R1 MOV R0,R0 ;R0=R0,相当于无操作 SUB R0,R1,R2 ;R0←R1-R2,将R1的值减去R2的值, ;结果保存到R0 ADD R0, R1, R2 ;R0←R1+R2 ;这条指令将两个寄存器(R1和R2)的内容相加,结果放入第3个寄存器R0中。必须注意写操作数的顺序:第1个是结果寄存器,然后是第一操作数寄存器,最后是第二操作数寄存器。 立即寻址 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身。也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下: SUBS R0,R0,#1 ;R0减1,结果放入R0,并且影响标志位 MOV R0,#0xFF000 ;将十六进制立即数0xFF000装入R0寄存器 立即数要以“#”号为前缀,16进制数值时以“0x”表示。 寄存器偏移寻址 寄存器偏移寻址是ARM指令集特有的寻址方式。当第2作数是寄存器偏移方式时,第2个寄存器操作数在与第1操作数结合之前,选择进行移位操作。 寄存器偏移寻址指令举例如下: MOV R0, R2, LSL #3 ; R2的值左移3位,结果放入R0,即R0=R2×8 ANDS R1, R1, R2, LSL R3 ; R2的值左移R3位,然后与R1相“与” ; 结果放入R1,并且影响标志位。 SUB R11, R12, R3, ASR #5 ; R12-R3÷32,然后存入R11。 寄存器偏移寻址(续) 可采用的移位操作如下: LSL:逻辑左移(Logical Shift Left),低端空出位补0。 LSR:逻辑右移(Logical Shift Right),高端空出位补0。 ASR:算术右移(Arithmetic Shift Right),移位过程中保持符号位不变,即若源操作数为正数,则字的高端空出的位补0;否则补1。 ROR:循环右移(Rotate Right),由字低端移出的位填入字高端空出的位。 RRX:带扩展的循环右移(Rotate Right extended by l place),操作数右移1位,高端空出的位用原C标志值填充。如果指定后缀“S”,则将Rm原值的位[0]移到进位标志。 移位操作示意图 各种移位操作如下图所示: 寄存器间接寻址 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下: LDR R1,[R2] 将R2指向的存储单元的数据读出,保存在R1中。 SWP R1,R1,[R2] 将寄存器R1的值与R2指定的存储单元的内容交换 SWP指令操作图解 基址寻址 基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下: LDR R2,[R3,#0x0C] ;前变址, 传数前计算地址 ; 读取R3+0x0C地址上的存储单元的内容,放入R2。 STR R1,[R0,#-4]! ; [R0-4]←[R1],R0=R0-4,符号“!”表明指令在完成数据传送后应该更新基址寄存器,否则不更新;属于回写前变址。 基址寻址指令举例 LDR R1,[R0,R3,LSL #1] ; 前变址,参看教材第125页 ; 将R0+R3×2地址上的存储单元的内容读出,存入R1。 LDR R0,[R1,R2,LSL #2]! ; 回写前变址 ; 将内存起始地址为R1+R2*4的字数据读取到R0中, ; 同时修改R1,使得:R1=R1+R2*4。 LDR R0, [R1, R2]! ; 回写前变址 ; 以R1+R2值为地址,访问内存。将该位置的字数据读 ; 取到R0
初级会计持证人
专注于经营管理类文案的拟写、润色等,本人已有10余年相关工作经验,具有扎实的文案功底,尤善于各种框架类PPT文案,并收集有数百万份各层级、各领域规范类文件。欢迎大家咨询!
文档评论(0)