- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
寄存器寻址-Read
ARM指令分类及其寻址方式 广嵌教育 第三章 ARM指令分类及其寻址方式 3.1 ARM指令集概要 3.2 ARM寻址方式 3.3 ARM指令集 3.4 Thumb指令介绍 3.1 ARM指令集概要 ARM指令长度及数据类型 ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。 ARM微处理器中支持字节(8位)、半字 (16位)、字(32位)三种数据类型。其中,字需要4字节对齐(地址的低两位为 0)、半字需要2字节对齐(地址的最低位为0)。 程序的启动都是从ARM指令集开始。所有的ARM指令集都可以是有条件执行的。 ARM汇编指令格式 ARM指令的典型编码格式 : {cond}:指令执行的条件编码,如EQ、NE等。 opcode:指令操作符编码,如LDR、STR等。 {S}:决定指令的执行是否影响CPRS 的值。 Rn:包含第一个源操作数的寄存器编码。 Rd:目标寄存器编码。 shifter_operand:第二个源操作数。 ARM 指令语法格式中, 中的内容是必需的,而{}中的内容是可选的。 ARM指令的条件码域 大多ARM指令都可以条件执行,也就是根据CPSR中条件码的状态决定是否执行该指令。只有在CPSR 中的条件码标志满足指定的条件时,带条件码的指令才可以执行,否则指令被忽略(相当于一条空操作NOP指令)。每一条ARM指令编码中包含4位的条件码,位于指令编码的最高4位[31:28]。条件码共有16种,每种条件码可用两个字符(条件码的助记符)表示,这两个字符可以添加在指令助记符的后面和指令同时使用。在16种条件标志码中,只有15种可以使用,第16种(1111)为系统保留,暂时不能使用。 ARM指令的条件码域 3.2 ARM寻址方式 立即寻址 例:ADD R0 , R0 ,# 0x1 ; R0 ←R0+1 ADD R0 , R0 ,# 0x3f ;R0 ←R0+0x3f 在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”。 寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数 。 例:ADD R0 , R1 , R2 ; R0 ←R1+R2 寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本 身存放在存储器中 。 例: LDR R0,[R1] ; R0 ←[R1] STR R0,[R1] ;[R1]← R0 寄存器寻址中第二操作数移位方式 LSR:逻辑右移,空出的最高有效位用0填充。 LSL:逻辑左移,空出的最低有效位用0填充。 ASL:算术左移,由于左移空出的有效位用0填充. ASR:算术右移,算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用0填充,如果是负数用1填充。 ROR:循环右移,移出的字的最低有效位依次填入空出的最高有效位。 RRX:带扩展的循环右移。将寄存器的内容循环右移1位,空位用原来C标志位填充。 寄存器移位寻址 ADD R3,R2,R1,LSL #2; R3←R2+4*R1 ADD R3,R2,R1,LSL R4; R3←R2+R1*2**R4 3.2 ARM寻址方式 基址变址寻址 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给 出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访 问某基地址附近的地址单元。 例: LDR R0 , [R1 ,# 4] ; R0 ←[R1+4] 前变址模式 LDR R0 , [R1 ,# 4] ! ; R0 ←[R1+4]、自动变址模式 ; R1←R1+4 LDR R0 , [R1] ,# 4 ; R0 ←[R1]、R1←R1+4 后变址模式 LDR R0 , [R1 , R2] ; R0 ←[R1+R2] 基地加索引寻址 多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式 可以用一条指令完成传送最多 16 个通用寄存器的值。 例: LDMIA R0 , {R1 , R2
文档评论(0)