微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM·指令集

ARM·指令集

时间:11-24 来源:互联网 点击:



1)B WAITA 跳到WAITA编号处 ;

B 0x1234 跳到0x1234地址处 ;

(一般用于子程序没有返回的时候)

2)BL label (LR=PC-4,PC=label)


1)数据传送指令


MOV R11,#0xF000000B

MOV R0, R1

MOVS R3,R1,LSL #2

MOV PC, LR

2)算数运算指令


ADDS R1,R1,#1020

ADD R1,R1,R2, LSL #2

SUBS R0, R0 ,#240

SUBS R2, R1, R2

3) 逻辑运算指令


4)比较指令



MUL指令将Rm和Rs中的值相乘,结果的低32位保存到Rd中,Rd,Rm,Rs不能为15。只影响到CPSR的N位和Z位,不影响V,C位不确定

在ARM处理器中,只有MRS指令才能访问到程序状态寄存器

MRS R1,CPSR

MRS R2,SPSR

MSR CPSR,R1


psr:CPSR或SPSR

应用实例:

ENABLE_IRQ
MRS R0, CPSR

BIC R0, R0,#0x80

MSR CPSR_c,R0

MOV PC ,LR

ARM处理器是典型的RISC处理器,对于存储器的访问只能使用加载和存储指令实现。ARM9处理是冯诺依曼结构,RAM存储空间及I/O映射空间统一编址,除了对RAM操作以外,对外围IO,程序数据的访问都要通过加载/存储指令进行。

(冯诺依曼结构就是程序存储指令存储器和数据存储器结合在一起的结构)

(RISC和CISC相对,reduced 和 complex)

1)单寄存器加载



LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外表部件的控制操作等。

若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能 。

*LDR和STR——字和无符号字节加载/存储指令

LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为人一个通过寄存器;另一个部分为地址偏移寄存器。

①立即数 LDR R1, [R0,#12] R1<-[R0+0x12]

②寄存器 LDR R1, [R0, R2] R1<-[R0+R2]

③寄存器及移位常数 LDR R1, [R0,R2,LSL#2]; R1<-[R0+R2*4]

*LDR/STR——半字和有符号字节加载/存储指令


2)批量数据加载/存储指令


*cond:执行的条件

*模式:控制地址的增长方式,一共8种模式

*!:表示在操作结束后,将最后的地址写回Rn中

reglist:表示寄存器列表,可以包含多个寄存器{R1,R2,R4-R9}

^:允许在用户模式或系统模式下使用


例子。


*堆栈指针(SP)总是指向栈顶

递增堆栈:向高地址方向生长

递减堆栈:向低地址方向生长

满堆栈:堆栈指针向最后压入堆栈的有效数据项

空堆栈:堆栈指针指针向下一个要放入数据的空位置




SWI 0 调用0中断

SWI 12 调用12中断

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top