ARM加载存储指令

举报
小道安全 发表于 2022/06/21 22:24:29 2022/06/21
【摘要】 分类 1加载指令有四个:LDR、LDRB、LDRH、LDM     2存储指令有四个:STR、STRB、STRH、STM    LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。       LDR  R0,[R1]             ;将存储器地址为R1的字数据读入寄存器R0。      LDR  R0,[R1,R2]  ;将存储器地址为R1+R2的字数据读入寄存器R0...
分类
 
1加载指令有四个:LDR、LDRB、LDRH、LDM
     2存储指令有四个:STR、STRB、STRH、STM
图片
    LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。
       LDR  R0,[R1]             ;将存储器地址为R1的字数据读入寄存器R0。
      LDR  R0,[R1,R2]  ;将存储器地址为R1+R2的字数据读入寄存器R0。
      LDR  R0,[R1,#8] ;将存储器地址为R1+8的字数据读入寄存器R0。
      LDR  R0,[R1,R2] !     ;将存储器地址为R1+R2的字数据读入寄存器R0,并将新地址R1+R2写入R1。
      LDR  R0,[R1,#8] !       ;将存储器地址为R1+8的字数据读入寄存器R0,并将新地址R1+8写入R1。
      LDR  R0,[R1],R2        ;将存储器地址为R1的字数据读入寄存器R0,并将新地址R1+R2写入R1。
       LDR  R0,[R1,R2,LSL#2]!;将存储器地址为R1+R2×4的字数据读入寄存器R0,并将新地址R1+R2×4写入R1。
       LDR  R0,[R1],R2,LSL#2  ;将存储器地址为R1的字数据读入寄存器 R0,并将新地址R1+R2×4写入R1

     LDRB指令用于从存储器中将一个8位的字节数据传送到目的寄存器中,同时将寄存器的高24位清零。
       LDRB  R0,[R1]      ;将存储器地址为R1的字节数据读入寄存器R0,并将R0的高24位清零。
       LDRB  R0,[R1,#8]     ;将存储器地址为R1+8的字节数据读入寄存器R0,并将R0的高24位清零。

       LDRH指令用于从存储器中将一个16位的半字数据传送到目的寄存器中,同时将寄存器的高16位清零。
      LDRH  R0,[R1]      ;将存储器地址为R1的半字数据读入寄存器R0,并将R0的高16位清零。
      LDRH  R0,[R1,#8]     ;将存储器地址为R1+8的半字数据读入寄存器 R0,并将R0的高16位清零。
      LDRH  R0,[R1,R2]     ;将存储器地址为R1+R2的半字数据读入寄存器R0,并将R0的高16位清零。

     STR指令用于从源寄存器中将一个32位的字数据传送到存储器中。
         STR R0,[R1],#8 ;将R0中的字数据写入以R1为地址的存储器中,并将新地址R1+8写入R1。
        STR R0,[R1,#8] ;将R0中的字数据写入以R1+8为地址的存储器中。

    STRB指令用于从源寄存器中将一个8位的字节数据传送到存储器中。
    STRB  R0,[R1];将寄存器R0中的字节数据写入以R1为地址的存储器中。
    STRB  R0,[R1,#8]     ;将寄存器R0中的字节数据写入以R1+8为地址的存储器中。

     STRH指令用于从源寄存器中将一个16位的半字数据传送到存储器中。
            STRH  R0,[R1]      ;将寄存器R0中的半字数据写入以R1为地址的存储器中。
      STRH  R0,[R1,#8]     ;将寄存器R0中的半字数据写入以R1+8为地址的存储器中。

 
 LDM  批量数据加载指令
   STM  批量数据存储指令
        常见后缀
        IA 每次传送后地址加1;
        IB 每次传送前地址加1;
        DA 每次传送后地址减1;
        DB 每次传送前地址减1;
        FD 满递减堆栈;
        ED 空递减堆栈;
        FA 满递增堆栈;
        EA 空递增堆栈;

    STMFD  R13!,{R0,R4-R12,LR}  ;将寄存器列表中的寄存器(R0,R4 到R12,LR)存入堆栈。
    LDMFD  R13!,{R0,R4-R12,PC}  ;将堆栈内容恢复到寄存器(R0,R4到R12,LR)。
 
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。