ARM工作模式选择(汇编语言)分析
2012-08-20 16:29
477 查看
;/*-----------------------------------------------------------------------------------------------------------*/ ;/* constant define */ ;/*-----------------------------------------------------------------------------------------------------------*/ EXPORT start ;/*-----------------------------------------------------------------------------------------------------------*/ ;/* code */ ;/*-----------------------------------------------------------------------------------------------------------*/ AREA |.text|, CODE, READONLY start ;/*-----------------------------------------------------------------------------------------------------------*/ ;/* Setup interrupt / exception vectors */ ;/*-----------------------------------------------------------------------------------------------------------*/ b Reset_Handler Undefined_Handler b Undefined_Handler b SWI_Handler Prefetch_Handler b Prefetch_Handler Abort_Handler b Abort_Handler nop ;/* Reserved vector */ IRQ_Handler b IRQ_Handler FIQ_Handler b FIQ_Handler SWI_Handler bx lr Reset_Handler ;/*----------------------------------------------------------------------------------------------------------------------*/ ;/* into System mode */ ;/*----------------------------------------------------------------------------------------------------------------------*/ mrs r0,cpsr ;/* read CPSR value */ ;/* 将CPSR的值读入r0之中 */ ;/* MSR CPSR, R0 ; 复制 R0 到 CPSR 中*/ ;/* Move to Register from state register!(MRS) */ ;/* 同样,在ARM处理器中,只有MSR指令可以对状态寄存器CPSR和SPSR进行写操作。与MRS配合使用,可以实现对CPSR或SPSR寄存器的读-修改-写操作,可以切换处理器模式、或者允许/禁止IRQ/FIQ中断等*/ bic r0,r0,#0x1f ;/* clear low 5 bit */ orr r0,r0,#0x1f ;/* set the mode as System mode */ msr cpsr_cxfs,r0 mov r0, #1 ;/* initialization the register in System mode */ mov r1, #2 mov r2, #3 mov r3, #4 mov r4, #5 mov r5, #6 mov r6, #7 mov r7, #8 mov r8, #9 mov r9, #10 mov r10, #11 mov r11, #12 mov r12, #13 mov r13, #14 mov r14, #15 ;/*----------------------------------------------------------------------------------------------------------------------*/ ;/* into FIQ mode */ ;/*----------------------------------------------------------------------------------------------------------------------*/ mrs r0,cpsr ;/* read CPSR value */ bic r0,r0,#0x1f ;/* clear low 5 bit */ orr r0,r0,#0x11 ;/* set the mode as FIQ mode */ msr cpsr_cxfs,r0 mov r8, #16 ;/* initialization the register in FIQ mode */ mov r9, #17 mov r10, #18 mov r11, #19 mov r12, #20 mov r13, #21 mov r14, #22 ;/*----------------------------------------------------------------------------------------------------------------------*/ ;/* into SVC mode */ ;/*----------------------------------------------------------------------------------------------------------------------*/ mrs r0,cpsr ;/* read CPSR value */ bic r0,r0,#0x1f ;/* clear low 5 bit */ orr r0,r0,#0x13 ;/* set the mode as SVC mode */ msr cpsr_cxfs,r0 mov r13, #23 ;/* initialization the register in SVC mode */ mov r14, #24 ;/*----------------------------------------------------------------------------------------------------------------------*/ ;/* into Abort mode */ ;/*----------------------------------------------------------------------------------------------------------------------*/ mrs r0,cpsr ;/* read CPSR value */ bic r0,r0,#0x1f ;/* clear low 5 bit */ orr r0,r0,#0x17 ;/* set the mode as Abort mode */ msr cpsr_cxfs,r0 mov r13, #25 ;/* initialization the register in Abort mode */ mov r14, #26 ;/*----------------------------------------------------------------------------------------------------------------------*/ ;/* into IRQ mode */ ;/*----------------------------------------------------------------------------------------------------------------------*/ mrs r0,cpsr ;/* read CPSR value */ bic r0,r0,#0x1f ;/* clear low 5 bit */ orr r0,r0,#0x12 ;/* set the mode as IRQ mode */ msr cpsr_cxfs,r0 mov r13, #27 ;/* initialization the register in IRQ mode */ mov r14, #28 ;// swi 0x01 ; // ;/*----------------------------------------------------------------------------------------------------------------------*/ ;/* into UNDEF mode */ ;/*----------------------------------------------------------------------------------------------------------------------*/ mrs r0,cpsr ;/* read CPSR value */ bic r0,r0,#0x1f ;/* clear low 5 bit */ orr r0,r0,#0x1b ;/* set the mode as UNDEF mode */ msr cpsr_cxfs,r0 mov r13, #29 ;/* initialization the register in UNDEF mode */ mov r14, #30 b Reset_Handler ;/* jump back to Reset_Handler */ END
![](http://my.csdn.net/uploads/201208/20/1345451467_6331.jpg)
![](http://my.csdn.net/uploads/201208/20/1345451500_5106.jpg)
c
控制域屏蔽 psr[7..0 ]
x
扩展域屏蔽 psr[15..8]
s
状态域屏蔽 psr[23..16]
f
标志域屏蔽 psr[31..24]
![](http://my.csdn.net/uploads/201208/20/1345451801_4853.jpg)
![](http://my.csdn.net/uploads/201208/20/1345451906_7658.jpg)
相关文章推荐
- 汇编语言表格驱动分支选择代码分析(4)
- ARM的异常处理过程分析(异常向量/工作模式)
- arm 汇编语言源码文件分析
- Android逆向分析基础-ARM 汇编语言基础
- [软件人生]程序员与语言选择——给一个刚毕业的大学生工作方向的分析对话
- ARM汇编实验-工作模式
- 路由器工作模式Classless与Classful实验分析
- 嵌入式中 ARM的几种工作模式 以及异常模式的优先级 .
- Linux内核分析课程--通过反汇编一个简单的c程序,分析汇编代码并理解计算机如何工作的
- ARM处理器的7种工作模式--linux操作系统与ARM的工作模式
- 通过分析一个C程序的汇编指令执行过程,理解计算机的工作。
- 图解分析汇编代码以理解计算机是如何工作的
- [ARM] ARM处理器的7种工作模式和2种工作状态
- 00_设计模式之语言选择
- 浅析arm的异常、中断和arm工作模式的联系
- ARM中ADS环境下C语言和汇编语言混合编程及示例
- 汇编语言循环遍历链表代码分析(16)
- gdb:如果在没有符号表的时候让gdb强制以thumb模式反汇编ARM二进制代码
- 王爽 汇编语言第二版 实验9 根据材料编程 代码及分析
- STM32的I/O口的8种工作模式分析