嵌入式,ARM指令集

简介: 跳转指令,完成向前后向后32M跳转                  B跳转            BL带返回的跳转             BLX带返回和状态切换的跳转           BX带状态切换的跳转                  B{条...

跳转指令,完成向前后向后32M跳转

                 B跳转            BL带返回的跳转             BLX带返回和状态切换的跳转           BX带状态切换的跳转

                 B{条件}    目标地址

                 BL{条件}    目标地址,  跳转时会保存当前pc值到R14

嵌,ARM指令集 - 等等等等等 - 等等等等等的博客
数据传送指令
MOV{条件}{S}   目的寄存器,源操作数                   有s就会影响CPSR中的条件标识位
            MOV  R0,R1       将R1值赋给R0
            MOV  R0,R1,LSL #3           将R1值左移3位,赋值给R0
MVN{条件}{S}   目的寄存器,源操作数              mvn与mov不同之处是,赋值之前将源操作数取反
            MVN   R0, #0xff                      R0=0xffffff00
CMP{条件}  操作数1,操作数2              一个寄存器的内容与另一个寄存器的内容或立即数比较,并改变CPSR中的标志位
TST{条件}  操作数1,操作数2                一个寄存器的内容和另一个寄存器的内容或立即数按位与,并根据结果改变CPSR
            TST  R1,#%1                            测试R1是否设置最低位(%表示二进制)
ADD{条件}{S}  目的寄存器,操作数1,操作数2                  加法,结果存放目的寄存器,操作数1必须是寄存器
            ADD  R0,R1,R2
            ADD  R0,R1,#2
            ADD  R0,R1,R2, LSL  #3
SUB{条件}{S}  目的寄存器,操作数1,操作数2                   减法,结果存放目的寄存器,操作数1必须是寄存器
            SUB  R0,R1,R2
            SUB  R0,R1,#2
            SUB  R0,R1,R2, LSL  #3
AND{条件}{S}  目的寄存器,操作数1,操作数2                   逻辑与,结果存放目的寄存器,操作数1必须是寄存器
            AND  R0,R1,#3
ORR{条件}{S}  目的寄存器,操作数1,操作数2                   逻辑或,结果存放目的寄存器,操作数1必须是寄存器
            AND  R0,R1,#3
BIC{条件}{S}  目的寄存器,操作数1,操作数2                    清除 ,结果存放目的寄存器,操作数1必须是寄存器
            AND  R0,R1,#%1011                   将R1的第0、1、3位清零,其余位不变
MUL{条件}{S}  目的寄存器,操作数1,操作数2                   逻辑与,结果存放目的寄存器,操作数1必须是寄存器
            MU   R0,R1,R2
MRS{条件}通用寄存器,程序状态寄存器  
MSR{条件}程序状态寄存器,通用寄存器  
            MSR  CPSR/SPSR_,通用寄存器 
            [31:24] 条件标识位域f               [23:16]状态位域s           [15:8]扩展位域x         [7:0]控制位域c
 
 
 
加载/存储
LDR{条件} 目的寄存器,             将存储器中的一个32位字数据传送到目的寄存器
        LDR  R0 ,[R1]
        LDR  R0 ,[R1,R2]
        LDR  R0 ,[R1,#8]
        LDR  R0 ,[R1,R2]!
        LDRB  R0 ,[R1]              只取8位字节,高24位清零
        LDRH  R0 ,[R1]              加载16位半字数据,高16位清零
STR{条件} 源寄存器,            将寄存器数据存储在存储器
 
LDM{条件}{类型}  基址寄存器{!},   寄存器列表{^}             批量加载
  
嵌,ARM指令集 - 等等等等等 - 等等等等等的博客 嵌,ARM指令集 - 等等等等等 - 等等等等等的博客
 
 
SWP{条件}    目的寄存器,源寄存器1,【源寄存器2】             字数据交换
         SWP  R0,R1, [R2 ]                将R2所指的存储单元数据送到R0,将R1数据送到R2所指的存储单元
SWPB{条件}  目的寄存器,源寄存器1,【源寄存器2】             字节数据交换
 
 
移位操作(通用寄存器或者立即数)
LSL    逻辑左移                   ASL   算数左移            LSR   逻辑右移           ASR  算术右移
ROR  循环右移
LSL=ASL
 
异常产生指令
SWI    软件中断           BKPT       断点中断
SWI   0x02   调用操作系统编号为02的系统例程
相关文章
|
14天前
|
监控 网络协议 安全
验证嵌入式ARM32环境中4G模块的有效方法
验证嵌入式ARM32环境中4G模块的有效方法
90 0
|
14天前
|
安全 Unix Linux
【ARM】在NUC977上搭建基于boa的嵌入式web服务器
【ARM】在NUC977上搭建基于boa的嵌入式web服务器
|
14天前
|
物联网 编译器 测试技术
【嵌入式 交叉编译器】如何在 ARM 架构下选择和使用高版本交叉编译器
【嵌入式 交叉编译器】如何在 ARM 架构下选择和使用高版本交叉编译器
382 7
|
14天前
|
存储 机器学习/深度学习 人工智能
嵌入式中一文搞懂ARM处理器架构
嵌入式中一文搞懂ARM处理器架构
56 1
|
9月前
|
编译器 C语言
ARM与C语言的混合编程【嵌入式系统】
ARM与C语言的混合编程【嵌入式系统】
89 0
|
9月前
|
存储 芯片
ARM简单程序设计【嵌入式系统】
ARM简单程序设计【嵌入式系统】
113 0
|
9月前
|
存储 机器学习/深度学习 Java
「Arm Arch」 ISA 指令集
「Arm Arch」 ISA 指令集
207 0
|
缓存 Linux 编译器
ARM嵌入式开发——基础概念
ARM嵌入式开发——基础概念
179 0
|
NoSQL Ubuntu Linux
arm嵌入式gdb移植和搭建远程gdb调试运行环境
arm嵌入式gdb移植和搭建远程gdb调试运行环境
530 0
arm嵌入式gdb移植和搭建远程gdb调试运行环境
|
编译器 Shell 测试技术
ARM嵌入式——制作根文件系统并使用NFS挂载运行。
ARM嵌入式——制作根文件系统并使用NFS挂载运行。
330 0