arm嵌入式LDR和STR的简单提问
LDR ?R0, [R1]
这条指令的意思是,将R1中的值作为地址,将地址里面存的值复制给寄存器R0
STR R1,[R0]
这条指令的意思是,将R1里面的值,复制到以R0里面的值作为地址的内存里面。avr和arm分别是两类微控制器,就好像intel和AMD的CPU一样.
嵌入式系统是一个智能电子领域,包含各种硬件平台软件系统,比如常用的手机,平板,家用电器等等,几乎除了PC平台,其他的智能电子系统都可算是嵌入式,其中当然包括以avr单片机和arm处理器为核心的设备.
ARM汇编中B跳转指令和LDR跳转的区别
在使用=号时,这个ldr表示一个伪指令,就是将直接地址加载到寄存器,以方便跳转到此地址。如:
ldr r0 , =main ;把main这个标号代表的地址赋给r0
ldr sp , =user_stack ;把user_stack标号地址赋给堆栈指针
使用括号()只是因为这里的直接地址是个减法表达式,要括起来。
说B指令能跳4G的,那实在是扯淡,B指令的编码格式中bit[23:0],在汇编时会左移两位扩展为26位有符号数,是表示要跳转的地址相对于PC的偏移值,表示范围为-2^25~2^25,也就是只能跳到相对于当前PC值偏移-32MB~+32MB的位置去,与地址绝对位置无关
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!