汇编基础(三)

三、内存读写指令
Load/srore :读写内存指令
在这里插入图片描述
内容比较简单,以下是注意的点
@ 以ST 开头的大都为写写内存指令
@以LD开头的大都为都内存指令
@ ARM 支持三种数据
位: B 8 bite
半字: halfword(H) 16 位
字 :word 32位
@ B 、 H 可以当后缀使用 代表数据位数
@@ 地址要用 [ ]符号
用法
MOV R1 ,#0xffffffff @ 将数据存到寄存器R1
MOV R2 , #0X40000000 @j将数据存入到寄存器中 ,此时的它还是一个数据
STR R1 , [R2] @J将R1 的数据存到R2所对应的内存空间里面去
@ [R2] 此时的 r2的0X40000000 就是一段地址 r2就相当于一个指针了
@ 这里我们为什么要写40000000呢?因为再ARM中这是一段可写可读的内存
++++++++++++++++++++++++++++++++++++++++++++++++++
四、ARM 指令的寻址方式
(一)
什么叫寻址方式:
寻址方式就是指令里面的操作的数是从哪里来的,这个就叫寻址方式。
1、直接寻址 :指操作数,直接从机器码中获得,也就是我们自己写的: EG:
MOV R1 , #1 @1 这个操作数就是直接寻址
2、寄存器寻址 :指操作数是从寄存器(拿来吧你)获取的,eg:
MOV R1 , R2 @指把R2的数据放到R1 ,但是R2的数据是从R2这个寄存器里面获取的。
3、寄存器移位寻址 :指操作数是从寄存器里的数据通过移位后获取的;eg :
MOV R1 , R2 ,LSL ,#1 @R2的数据左移一位给R1
4、寄存器间接寻址 :指这个操作数不是存在寄存器里面,但是可以通过这个寄存器获取到(找到)这个数据(类似于指针)eg:
LDR R1 , [R2] @把R2里面的数据作为地址从内存读取到这个数存放到R1中
5、基地址加变地址寻址 :指操作数是的地址是由俩个地址决定的
在这里插入图片描述
6、基地址加变地址的索引方式
在这里插入图片描述
四、
多寄存器读写内存指令(LOAD/SRORE(加载和储备))
在这里插入图片描述
STM/LDM的用法:
@与STR/LDR不同的是,STM/LDM把前一个寄存器里的指作为地址,去对应内存空间且不用加地址符号[];
四点二、
多寄存器读写内存的寻址方式
STMIA R11! , #0X4000000 @IA(increase after)
STMIB R11! , #0X4000000 @IB(increase before)
STMDA R11! , #0X4000000 @DA(decrease after)
STMDB R11! , #0X4000000 @DB(decrease before)
图解:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值