关于ARM 架构汇编指令

一、MOV指令

MOV指令用于将数据从一个寄存器拷贝到另外一个寄存器,或者将一个立即数传递到寄
存器里面,使用示例如下:

MRS R0, CPSR     @将特殊寄存器 CPSR里面的数据传递给 R0,即 R0=CPSR

二、MRS指令

MRS指令用于将特殊寄存器 (如 CPSR和 SPSR)中的数据传递给通用寄存器,要读取特殊
寄存器的数据只能使用 MRS指令!使用示例如下:

MRS R0, CPSR       @将特殊寄存器 CPSR里面的数据传递给 R0,即 R0=CPSR

三、MSR指令

MSR指令和 MRS刚好相反, MSR指令用来将普通寄存器的数据传递给特殊寄存器,也就
是写特殊寄存器,写特殊寄存器只能使用 MSR,使用示例如下

MSR CPSR, R0   @将 R0中的数据复制到 CPSR中,即 CPSR=R0

四、LDR指令

LDR主要用于从存储加载数据到寄存器 Rx中, LDR也可以将一个立即数加载到寄存器 Rx中, LDR加载立即数的时候要使用“ “=”,而不是 “#”。在嵌入式开发中 LDR最常用的就是读
取 CPU的寄存器值,比如

LDR R0, =0X0209C004 @将寄存器地址0X0209C004加载到R0中,即R0=0X0209C004

LDR R1, [R0] @读取地址0X0209C004中的数据到R1寄存器中

五、STR指令

LDR是从存储器读取数据, STR就是将数据写入到存储器中,同样以

LDR R0, =0X0209C004 @将寄存器地址0X0209C004加载到R0中,即R0=0X0209C004

LDR R1, =0X20000002 @R1保存要写入到寄存器的值,即R1=0X20000002

STR R1, [R0] @将R1中的值写入到R0中所保存的地址中

LDR和 STR都是按照字进行读取和写入的,也就是操作的 32位数据,如果要按照字节、
半字进行操作的话可以在指令“ LDR”后面加上 B或 H,比如按字节操作的指令就是 LDRB和
STRB,按半字操作的指令就是 LDRH和 STRH

 

原文地址:https://www.cnblogs.com/hkj8808/p/13293715.html