ARM汇编指令MRS和MSR

发布者:Xiaohan521最新更新时间:2019-08-10 来源: eefocus关键字:ARM  汇编指令  MRS  MSR 手机看文章 扫描二维码
随时随地手机看文章

ARM处理器中,只有MRS(Move to Register from State register)指令可以对状态寄存器CPSR和SPSR进行读操作。通过读CPSR可以获得当前处理器的工作状态。读SPSR寄存器可以获得进入异常前的处理器状态(因为只有异常模式下有SPSR寄存器)。

例如:

MRS    R1,CPSR   ; 将CPSR状态寄存器读取,保存到R1中

MRS    R2,SPSR    ; 将SPSR状态寄存器读取,保存到R2中

通过MRS指令可以取得状态寄存器里的值,然后比较其模式位M[4:0]的值判断当前所处模式,当然也可以比较其它相应位了解当前CPU的状态。


同样,在ARM处理器中,只有MSR指令可以对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等。


由于xPSR寄存器代表了CPU的状态,其每个位有特殊意义,在执行对xPSR状态寄存器写入时(读取时不存在该用法),为了防止误操作和方便记忆,将xPSR里32位分成四个区域,每个区域用小写字母表示:

c  控制域屏蔽 psr[7..0]

x  扩展域屏蔽 psr[15..8]

s  状态域屏蔽 psr[23..16]

f  标志域屏蔽 psr[31..24]

注意:区域名必须为小写字母

向对应区域进行执行写入时,使用xPSR_x可以指定写入区域,而不影响状态寄存器其它位,如:

使能IRQ中断:

ENABLE_IRQ

    MRS    R0, CPSR            ; 将CPSR寄存器内容读出到R0

    BIC    R0, R0,#0x80     ; 清掉CPSR中的I控制位

    MSR    CPSR_c,R0          ; 将修改后的值写回 CPSR寄存器的对应控制域

    MOV    PC,LR                       ; 返回上一层函数

禁用IRQ中断:

DISABLE_IRQ

    MRS    R0 CPSR                          ; 将CPSR寄存器内容读出到R0

    ORR    R0, R0,#0x80    ; 设置CPSR中的I控制位

    MSR    CPSR_c,R0          ; 将修改后的值写回 CPSR寄存器的对应控制域

    MOV    PC,LR                          ; 返回上一层函数

下表列出了不同模式的二进制数表示:

表3-3 不同工作模式对应二进制

模式名

用户

快中断

中断

管理

中止

未定义

系统

M[4:0]

10000

10001

10010

10011

10111

11011

11111

在对开发板进行初始化时,用对不同模式指定其栈空间,下面例子对各模式的栈指针sp进行初始化:

stack_init                                                            ; 栈指针初始化函数

    @ undefine_stack                                       

    msr cpsr_c, #0xdb                                   ; 切换到未定义异常

    ldr        sp, =0x34000000                        ; 栈指针为内存最高地址,栈为倒生的栈

                                                                            ; 栈空间的最后1M 0x34000000~0x33f00000

    @ abort_stack                                                      

    msr cpsr_c, #0xd7                                   ; 切换到终止异常模式

    ldr        sp, =0x33f00000                         ; 栈空间为1M,0x33f00000~0x33e00000

    @ irq_stack                                                

    msr      cpsr_c,    #0xd2                           ; 切换到中断模式

    ldr        sp, =0x33e00000                        ; 栈空间为1M,0x33e00000~0x33d00000

    @ sys_stack                                               

    msr      cpsr_c,    #0xdf                                     ; 切换到系统模式

    ldr        sp, =0x33d00000                        ; 栈空间为1M,0x33d00000~0x33c00000

    msr      cpsr_c,    #0xd3                            ; 切换回管理模式

    mov pc, lr


关键字:ARM  汇编指令  MRS  MSR 引用地址:ARM汇编指令MRS和MSR

上一篇:stm32 串口接收不定长数据 亲测可行
下一篇:stm32模拟iic——引脚配置、代码

推荐阅读最新更新时间:2024-11-17 05:46

ARM Linux静态映射分析
在华清远见上课过程中,发现静态映射方面初学者比较难于掌握和理解,下面分析一下静态映射机制的原理并通过GPIO和USB、LCD等的静态映射作为例子来说明如何通过这种静态映射的方式访问外设资源。 内核提供了一个重要的结构体STruct machine_desc ,这个结构体在内核移植中起到相当重要的作用,内核通过machine_desc结构体来控制系统体系架构相关部分的初始化。machine_desc结构体的成员包含了体系架构相关部分的几个最重要的初始化函数,包括map_io,init_IRq, init_machine以及phys_io , TImer成员等。 machine_desc结构体定义如下: struct machi
[单片机]
ARM引Android入数字家庭,力推家庭互联
ARM正在迅速改变他的形象,从移动手持市场的核心CPU,变成更多领域的核心CPU,这其中包括数字家庭、娱乐、汽车和工控市场。“一个非常有意思的数据是,目前我们的新授权中,有2/3的比例来自于非手机市场。同样,ARM在非手机市场的出货量也迅速增长。这种双增长的趋势,说明ARM核正在成为整个数字世界的CPU核。”ARM中国区总裁谭军在日前深圳举办的“第二届ARM互联家庭应用研讨会”上介绍。 占据手机市场CPU垄断地位后,ARM近几年一直在往其它领域延伸,数字家庭是其中的重中之重,而数字家庭的互联应用趋势,成为他们进入此市场的契机。“我们可以方便地将手机上的互联应用移植到家庭平台来上,比如Web2.0已成功应用于手机上的A
[手机便携]
ARM7一VxWorKs的网络化实时彩色分析虚拟仪器
     特种光源、彩色显示等行业的基础是彩色的还原与传递,在光学计量领域属于光源的光度和色度计量范畴,色坐标和亮度因数是主要的参数之一。光度、色度测试系统的性能,在高清晰度数字电视的白场基准测试、高清晰度数字摄像机白平衡校准以及半导体光电二极管LED照明和全彩色显示的白场均匀性测试等领域发挥着基础性关键作用。   人眼的视觉可以感受380nm~780nto范围内的光信号,但对不同波长光的敏感程度不同。l924年国际照明委员会CIE公布了2。视场明视觉光谱光视效率函数V(γ) 。仿真人眼亮度感受的光度探测器通常是由光电二极管PIN构成的,核心是利用滤色玻璃将PIN的光谱光视效率修正得与(V)尽可能地相似。人眼对色彩的感受来源于
[工业控制]
基于ARM微处理器TCP/IP协议栈LwlP实现
  0 引 言   随着嵌入式系统与网络的日益结合,越来越多的嵌入式设备需要实现Internet网络化,支持嵌入式设备接入网络,已成为嵌入式领域重要的研究方向。而目前嵌入式系统中大量应用低速处理器,受内存和速度限制,实现完整的TCP/IP协议较为困难,LwIP作为较为成熟的嵌入式TCP/IP协议栈受到了广泛的应用。   1 硬件平台   本通信系统的硬件平台由以下几个部分组成:S3C2410主CPU芯片控制嵌入式外围设备的存储、通信、保护、调试、显示等操作;DSP和FPGA负责信号数据的采集和处理;CS8900A负责网络数据的收发;其他部分还包括串口RS232的通信、LCD的数据显示、数据存储FLASH和SDRAM以及其他硬
[单片机]
基于<font color='red'>ARM</font>微处理器TCP/IP协议栈LwlP实现
基于ARM-UClinux的无线家庭网关设计
引言   随着网络技术和信息家电的飞速发展,越来越多的家庭要求建立家庭网络。家庭网关是整个家庭网络的核心,它主要实现Internet接入、远程控制,以及连接家庭内部异构子网的功能。基于PC机方案的家庭网关不仅成本较高,而且要求计算机一直处于开机并可进行通信的状态,还不能在计算机上运行干扰通信任务的软件和硬件。所以,为适应普通用户,家庭网关应设计为基于廉价的非PC机设备。但是,若采用8位、16位单片机,由于速度慢且资源有限,实现TCP/IP协议比较困难,所以也不太理想。   因此本文以ARM核的32位嵌入式微处理器作为硬件平台,结合无线通信技术,通过移植嵌入式操作系统?Clinux,并在其上开发相应的驱动程序、应用程序和嵌入式Web
[模拟电子]
基于<font color='red'>ARM</font>-UClinux的无线家庭网关设计
ARM9在高精度生化分析仪温度控制系统中的应用
1 引言 ARM9越来越广泛的应用于各种生物电子仪器中,全自动生化分析仪是一个典型的应用。生化分析仪检测分析过程中温度对检测结果具有很大的影响,被检样品和试剂只有在指定的温度下检测才能保证生化检验结果的可靠性。生化分析仪的温控系统往往具有非线性、时滞性等特点,应用常规PID控制达不到理想的效果。本系统以ARM9处理器作为控制系统核心,实现模糊自整定PID控制算法。经测试,该系统精度高,稳定性好,响应快,反应盘控温于现行的标准检测温度37℃,控温精度为土0.1℃,显示精度为±0.01℃,完全满足临床使用要求。 2 系统总体设计及主要硬件实现 2.1 系统总体设计 系统结构如图1所示。系统主要由测温器件、A
[单片机]
ARM笔记: GPIO口LED程序
leds.bin:crt0.S leds.c arm-linux-gcc -g -c -o crt0.o crt0.S arm-linux-gcc -g -c -o leds.o leds.c arm-linux-ld -Ttext 0x00000000 -g crt0.o leds.o -o leds_elf arm-linux-objcopy -O binary -S leds_elf leds.bin arm-linux-objdump -D -m arm leds_elf leds.dis clean: rm -f leds.dis leds.bin leds_elf *.o .text .gl
[单片机]
基于ARM核处理器的机器人手臂控制系统
近年来,随着MEMS及相关技术的发展,微机器人领域已越来越来受人关注。但由于零件的尺寸很小,微机器人组件的装配需要很高的精确度,一般的装配方法无法满足要求。本文介绍了一个可进行微零件装配工作的机器人手臂控制系统的控制方法。 1 系统结构 考虑到多机器人手臂的使用,整个机器人控制系统由上位机与多个下位机组成。下位机即是手臂控制器,每个下位机控制一个机械手臂的伸缩运动。上位机即为控制终端,通过不同配件组装方式生成每个手臂的位置数据,并通过数据线传输给各个下位机,由下位机控制手臂到达目标位置并进行目标操作。整个系统的结构框图如图1所示。 1.1 机械结构 如图2所示,手臂控制器的机械结构由直流减速电机、手臂、螺杆、减速齿轮
[应用]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved