三、内存读写指令 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、基地址加变地址的索引方式
|