文档详情

ARM嵌入式系统结构与编程:第7章 汇编语言程序设计.ppt

发布:2025-03-27约6.46千字共46页下载文档
文本预览下载声明

copy4words LDMIAR2!,RegList STMIAR3!,RegList SUBSR1,R1,#1 BNEcopy4wordscopyWords ANDSR0,R0,#3 BEQstopcopyWord LDRR4,[R2],#4 STRR4,[R3],#4 SUBSR0,R0,#1 BNEcopyWordstop Bstop END7.4ARM汇编语言程序设计实例解析 例7-4初始化ARM处理器各模式下的堆栈指针SP(R13)。设计思路:通过MRS/MSR指令,采用“读取-修改-写回”三个步骤修改CPSR模式控制字,使处理器进入相应的模式,在各模式下修改其堆栈指针。7.4ARM汇编语言程序设计实例解析 如何设置相应模式下的SP MRS R0,CPSR ;读取当前CPSR BIC R0,R0,#0x1F ;清除模式位 ORR R1,R0,#0x1B ;未定义模式控制字 MSR CPSR_c,R1 LDR SP,=0xC7FF2007.4ARM汇编语言程序设计实例解析 _ISR_STARTADDRESS EQU 0xC7FF000 ;设置栈的内存基地址UserStack EQU _ISR_STARTADDRESS;用户模式堆栈地址SVCStack EQU _ISR_STARTADDRESS+256;管理模式UndefStack EQU _ISR_STARTADDRESS+256*2 ;未定义模式AbortStack EQU _ISR_STARTADDRESS+256*3 ;中止模式IRQStack EQU _ISR_STARTADDRESS+256*4 ;IRQ模式FIQStack EQU _ISR_STARTADDRESS+256*5 ;FIQ模式USERMODE EQU 0x10 ;用户模式控制字FIQMODE EQU 0x11 ;FIQ模式控制字IRQMODE EQU 0x12 ;IRQ模式控制字SVCMODE EQU 0x13 ;管理模式控制字ABORTMODE EQU 0x17 ;中止模式控制字UNDEFMODE EQU 0x1b ;未定义模式控制字SYSMODE EQU 0x1f ;系统模式控制字MODEMASK EQU 0x1f ;模式位掩码控制字7.4ARM汇编语言程序设计实例解析 AREAStack_Init,CODE,READONLY ENTRY CODE32 START MRS R0,CPSR BIC R0,R0,#MODEMASK ;清除模式位;设置系统模式下的SP ORR R1,R0,#SYSMODE MSR CPSR_c,R1 LDR SP,=UserStack ;设置未定义模式下的SP ORR R1,R0,#UNDEFMODE MSR CPSR_c,R1 LDR SP,=UndefStack ……7.4ARM汇编语言程序设计实例解析 例7-6内存数据大小端转换操作。 对内存地址0x9000开始的20个数据内存单元依次填入00然后进行转换操作,并存回原来的地址。(在ADS下编写)7.4ARM汇编语言程序设计实例解析 *TM**TM第7章 汇编语言程序设计本章主要介绍ARM汇编语言程序设计规范,以及在汇编语言程序设计中所要注意的问题,最后以大量的实例说明汇编语言程序设计方法。内容提要7.1 ARM编译环境下汇编语句7.2 GNU环境下汇编语句与编译说明7.3 ARM汇编语言程序设计规范7.4 ARM汇编语言程序设计实例解析 7.1ARM编译环境下汇编语句ARM编译环境下进行汇编语言程序设计的格式汇编语句中的符号规则7.1.1ARM编译环境下汇编语句格式ADS环境下ARM汇编语句格式如下:{symbol}{instruction} {;comment}{symbol}{directive} {;comment}{symbol}{pseudo-instruction} {;comment}注意事项:在ARM编译环境下ARM汇编语句不能从一行的顶格书写,在一行语句中,指令的前面必须有空格或TAB符号。7.1.2AR

显示全部
相似文档