- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                ARM寻址方式课件
                    2.7  ARM处理器的寻址方式;数据处理指令的基本语法格式;所有的ARM指令都可以条件执行。如果指令不标明条件代码,将默认为无条件(AL)执行。;条件码;C代码:
If(a  b)
a++;
Else
b++;;
ARM数据处理指令均可根据执行结果来选择是否更新条件码标志。若要更新条件码标志,加后缀“S”。
;ARM指令集——第2个源操作数;#immed_8r——常数表达式;Rm——寄存器方式
        在寄存器方式下,操作数即为寄存器的数值。
例如:
SUB	R1,R1,R2;LSL:逻辑左移,空出的最低有效位用0填充。
LSR:逻辑右移,空出的最高有效位用0填充。
ASL:算术左移,由于左移空出的有效位用0填充,因此   它与LSL同义。
ASR:算术右移,算术移位的对象是带符号数,移位过程中必须保持操作数的符号不变。如果源操作数是正数,空出的最高有效位用0填充,如果是负数用1填充。
ROR:循环右移,移出的字的最低有效位依次填入空出的最高有效位。
RRX:带扩展的循环右移。将寄存器的内容循环右移1位,空位用原来C标志位填充。;甥陈翅漠灌树染驹彰垒觅矣操宴教询颈候瑶挥驮胶痰檄极辑脖牵凑煌溢详ARM寻址方式课件ARM寻址方式课件;例如:
ADD	R1,R1,R1,LSL #3	         ;R1=R1+R13
SUB	R1,R1,R2,LSR R3	         ;R1=R1-R2R3;;数据处理指令寻址方式可以分为以下几种。
(1)立即数寻址方式;
(2)寄存器寻址方式;
(3)寄存器移位寻址方式 。;        立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。
立即寻址指令举例如下: 
 SUBS   R0,R0,#1     ;R0减1,结果放入R0
 MOV   R0,#0xFF000  ;将立即数0xFF000装入R0寄存器
注意:立即数以“#”开头,16进制数在“#”后加“0x”或“”表示。;
       立即数寻址方式下,立即数必须是对应8位位图格式,即立即数由一个8位的常数循环移偶数位得到,因此并不是所有的数都可以用作立即数寻址。
      在立即数寻址方式中,ARM只提供了12bit来放数据。其中8位是用来记录数值的,另外4位放移位的位数,以此来形成一个立即数。 
      合法的立即数必须能够找到得到它的那个8位常数,否则这个立即数就是非法的。;ARM指令的基本格式:;31-28;为什么要规定8位位图?;为什么要规定8位位图?;举例;怎么判别是否合法?;合法立即数 ;练习;        操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: 
MOV  R1,R2	    ;将R2的值存入R1 
SUB  R0,R1,R2    ;将R1的值减去R2的值,结果保存到R0 
注意:第1个是目的寄存器,然后是第一操作数寄存器,最后是第二操作数寄存器。;        寄存器移位寻址是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;2.7.2  内存访问指令寻址方式;    字及无符号字节的Load/Store指令语法格式如下:
LDR|STR{cond}{B}{T}    Rd,addressing_mode;;1.立即数偏移寻址:
              LDR	R2,[R3,#0x0C]	  
注:读取R3+0x0C地址上的存储单元的内容,放入R2 
2.寄存器偏移寻址:
              LDR	R0,[R1,R2]	  
注:读取R1+R2地址上的存储单元的内容,放入R0
3.带移位的寄存器偏移寻址:
              LDR  R1,[R0,R2,LSL #2] 
注:R1-[R0+R2*4];4.前索引寻址:是将基址与偏移量相加作为传送数据的地址,传送数据后将数据的地址传送给基址寄存器。
                     LDR  Rd,[Rn,#0x04]! 
注:在数据传送之前,将偏移量加到Rn中,其结果作为传送数据的存储地址。使用后缀“!”,则结果写回到Rn中。
5.后索引寻址:是将基址作为传送数据的地址,传送数据后自动将
                
原创力文档
                        

文档评论(0)