汇编语言寄存器间接寻址方法
ldr r0, =GPJ0CON //把哋址值赋给寄存器r0从后面的=可以看出用的是ldr伪指令,因为需要编译器来判断这个数 str r1, [r0] //寄存器间接寻址功能是把r1中的数写入到r0中的数为地址的内存中去
C语言内存中访问内存地址的方法
1)用指针间接访问内存
C语言内存中访问内存地址的方法如下片段。在ARM中(统一编址)寄存器的地址类似于内存地址(IO与内存统一编址的),所以 这里的问题是用C语言内存读写寄存器就是用C语言内存来读写内存地址。用C语言内存来访问内存就要用到指针
可以看出,C语言内存间接访问内存地址的方式是通过指针间接访问
2)C语言内存通过(变量名)直接内存
假洳定义了一个int a;那么直接给变量名赋值a = 5; 这样的方式就直接访问量内存地址
int a; /* 编译器帮我们申请了1个int类型的内存格子(长度是4字节,地址是确定嘚但是只有
编译器知道,我们是不知道的也不需要知道。)并且把符号a和这个格子绑定。*/
a = 5; // 编译器发现我们要给a赋值就会把这个值5丟到符号a绑定的那个内存格子中。
【扩展】C语言内存中函数:一段代码的封装
【注意】内存单元格子的编址单位是字节。