RTOS之必备汇编指令(老干妈笔记)

存储器访问:

LDR/LDRB    Rd,    =LABLE        将变量LABLE的地址放到Rd中

LDR/LDRB    Rd,    [Rs]                从Rs中取出地址,读取相应的32/8位数据存储到Rd寄存器 ( 将存储器地址为Rs的字数据读入寄存器Rd )

STR/STRB     Rd,    [Rs]              从Rs中取出地址,将Rd中的32位/8位数据存储到相应的地址处

批量存储器访问:

LDMIA     Rd!,{Rn,...,Rm}               从Rd处连续多次递增地址读取32位数据,存储到Rn,...,Rm寄存器列表

STMDB    Rd!,{Rn,...,Rm}               从Rd处连续多次递减地址存储32位数据,数据来自Rn,...,Rm寄存器列表

解释:IA (Increase After):在操作完成后递增地址        

          DB (Decrease Before):在操作开始前递减地址

          !:操作结束后,将最终的地址保存到寄存器Rd中


MSR和MRS-用于访问xPSR、PSP、MSP等:

MRS    Rn,        加载能寄存器的值到Rn

MSR    ,    Rn    存储Rn的值到能寄存器


中断开关:

CPSID I    关中断

CPSIE I     开中断


无条件跳转:

BX Rn        移到寄存器Reg给出的地址,例如BX LR可用于子程序的返回

比较跳转:

CBZ Rn,        如果Rn寄存器值为0,则跳转到lable对应的指令,否则执行下一条指令

CBNZ Rn,     如果Rn寄存器值不为0,则跳转到lable对应的指令,否则执行下一条指令


逻辑或操作:

ORR Rd,Rn,#imm12    等同于Rd = Rn | imm12


你可能感兴趣的:(RTOS之必备汇编指令(老干妈笔记))