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

ARM汇编指令详解1

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

结果为0时,EQ位被设置。

TSTR1,#%1;用于测试在寄存器R1中是否设置了最低位(%表示二进制数)。

ADD{条件}{S} 目的寄存器,操作数1,操作数2

ADD指令用于把两个操作数相加,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。

ADDR0,R1,R2,LSL#1;R0 = R2 + (R3 < 1)

SUB{条件}{S} 目的寄存器,操作数1,操作数2

SUB指令用于把操作数1减去操作数2,并将结果存放到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。

SUBR0,R2,R3,LSL#1; R0 = R2 - (R3 < 1)

AND{条件}{S} 目的寄存器,操作数1,操作数2

AND指令用于在两个操作数上进行逻辑与运算,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于屏蔽操作数1的某些位。

ANDR0,R0,#3; 该指令保持R0的0、1位,其余位清零。

ORR{条件}{S} 目的寄存器,操作数1,操作数2

ORR指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2应是一个寄存器,被移位寄存器,或一个立即数。该指令常用于设置操作数1的某些位。

ORRR0,R0,#3;该指令设置R0的0、1位,其余位保持不变。

BIC{cond}{S} Rd,Rn,operand2

BIC指令用于清除Rn中的某些位,并把结果存放在Rd中,操作数operand2为32位的掩码,如果掩码中设置了某一位为1,则清除这一位。

BICR0,R0,#11;将R0的0,1,3位清零,其余位不变。

MUL{条件}{S}目的寄存器, 操作数1,操作数2

MUL指令完成将操作数1与操作数2的乘法运算并把结果放置到目的寄存器中,同时可以根据运算结果设置CPSR中相应的条件标志位。其中,操作数1和操作数2均为32位的有符号数或无符号数。

MULR0,R1,R2;R0 = R1 * R2

MULSR0,R1,R2: R0 = R1 * R2,同时设置CPSR中的相关条件标志位

程序状态寄存器访问指令

ARM微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据。

MRS{条件} 通用寄存器,程序状态寄存器(CPSR或SPSR)

MRS的用处是将状态寄存器中的内容传递到通用寄存器中。

1、当需要修改程序状态寄存器中内容时,可用MRS进程序状态寄存器的内容读入到通用寄存器,修改后再写回程序状态寄存器。

2、当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用MRS读出程序状态寄存器的值,然后保存。

MRS R0,CPSR;传送CPSR的内容到R0

MSR{条件}程序状态寄存器(CPSR或SPSR)_<域>,操作数

MSR指令用于将操作数的内容传递到程序状态寄存器的特定域中。其中,操作时可以是通用寄存器或立即数。<域>用于设置程序状态寄存器中需要操作的位,32位的程序状态寄存器可分为4个域:

位[31:24]为条件标志位域,用f表示;位[23: 16]为状态位域,用s表示;

位[15:8]为扩展位域,用x表示;位[7: 0]为控制位域,用c表示;

MSR CPSR,R0;传送R0内容到CPSR

MSRCPSR_c,R0;传送R0的内容到CPSR,但仅仅修改CPSR中的控制位域

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

网站地图

Top