欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

025_ARM常用汇编指令

程序员文章站 2022-07-03 14:40:39
...

目录

处理器内部传输数据指令 ​

存储器访问指令​

压栈和出栈指令  (处理器的堆栈是向下增长的)​

跳转指令

算术运算指令​

逻辑运算指令​


今天主要讲解一下ARM中常用的汇编指令:

  • 处理器内部传输数据指令 025_ARM常用汇编指令

MOV 

MOV R0, R1 @将寄存器 R1 中的数据传递给 R0,即 R0=R1
MOV R0, #0X12 @将立即数 0X12 传递给 R0 寄存器,即 R0=0X12

 

MRS

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

 

MSR

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

 

  • 存储器访问指令025_ARM常用汇编指令

LDR 

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

 

STR 

LDR R0, =0X0209C004 @将寄存器地址 0X0209C004 加载到 R0 中,
LDR R1, =0X20000002 @R1 保存要写入到寄存器的值,即 R1=0X20
STR R1, [R0] @将 R1 中的值写入到 R0 中所保存的地址中

 

  • 压栈和出栈指令  (处理器的堆栈是向下增长的)025_ARM常用汇编指令

PUSH

PUSH {R0~R3, R12} @将 R0~R3 和 R12 压栈

 

POP

POP {LR} @先恢复 LR
POP {R0~R3,R12} @在恢复 R0~R3,R12

 

注:
STMFD 可以分为两部分: 
STM 和 FD,同理, 
LDMFD 也可以分为 LDM 和 FD。
STM 和 LDM 就是多存储和多加载,
可以连续的读写存储器中的多个连续数据。

FD 是 Full Descending 的缩写。

ARM 使用的 FD 类型
的堆栈, SP 指向最后一个入栈的数值,堆栈是由高地址向下增长的,也就是前面说的向下增长
的堆栈,因此最常用的指令就是 STMFD 和 LDMFD。 STM 和 LDM 的指令寄存器列表中编号
小的对应低地址,编号高的对应高地址

 

  • 跳转指令

025_ARM常用汇编指令

B 指令

_start:

ldr sp,=0X80200000 @设置栈指针
b main @跳转到 main 函数

 

BL 指令

push {r0, r1} @保存 r0,r1
cps #0x13 @进入 SVC 模式,允许其他中

bl system_irqhandler @加载 C 语言中断处理函数到

cps #0x12 @进入 IRQ 模式
pop {r0, r1}
str r0, [r1, #0X10] @中断执行完成,写 EOIR


 

  • 算术运算指令025_ARM常用汇编指令

  • 逻辑运算指令025_ARM常用汇编指令

相关标签: S3C2440