arm汇编指令学习

ldr

常用情况:ldr r0, =0x53000000
就是把一个地址放入寄存器r0中
它常用地址赋值
LDR r, label 和 LDR r, =label的区别:
LDR r, =label 会把label表示的值加载到寄存器中,而LDR r, label会把label当做地址,把label指向的地址中的值加载到寄存器中。
譬如 label的值是 0x8000, LDR r, =label会将 0x8000加载到寄存器中,而LDR r, label则会将内存0x8000处的值加载到寄存器中。

str

常用情况:str r1, [r0]
把r1里的内容放到r0寄存器里存放的地址所指向的空间:寄存器间接寻址

msr这是设置中断异常的指令

    msr cpsr_c, #0xd2       @ 进入中断模式
    ldr sp, =3072           @ 设置中断模式栈指针

    msr cpsr_c, #0xd3       @ 进入管理模式
    ldr sp, =4096           @ 设置管理模式栈指针,

bl跳转指令

stmdb sp!, { r0-r12,lr } @保存使用到的寄存器

ldmia sp!, { r0-r12,pc }^ @ 中断返回, ^表示将spsr的值复制到cpsr

猜你喜欢

转载自blog.csdn.net/shenlong1356/article/details/81805980