Chinaunix首页 | 论坛 | 博客
  • 博客访问: 551551
  • 博文数量: 156
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1183
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-22 11:42
文章分类

全部博文(156)

文章存档

2015年(67)

2014年(89)

分类: 嵌入式

2014-10-30 10:28:15

原文地址:嵌入式,ARM指令集 作者:一生有你llx

跳转指令,完成向前后向后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的系统例程
阅读(1308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~