欢迎来到天天文库
浏览记录
ID:51495911
大小:894.50 KB
页数:131页
时间:2020-03-25
《ARM9 嵌入式系统原理及应用教程第4章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、主讲内容第1章嵌入式系统概述第2章ARM微处理器概述与编程模型第3章ARM9指令系统第4章嵌入式程序设计基础第5章嵌入式内部可编程模块第6章嵌入式接口技术应用第7章软件开发环境第4章嵌入式程序设计基础基于ARM的编译器一般都支持汇编语言的程序设计、C/C++语言的程序设计及两者的混合编程。本章介绍ARM的嵌入式程序的基础知识伪指令汇编语言的语句格式汇编语言C/C++语言的混合编程……..4.1伪指令在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完
2、成的操作称为伪操作。伪指令在源程序中的作用是既要把正常的程序用指令表达给计算机以外,又要把程序设计者的意图表达给编译器.例如:要告诉编译器程序段的开始和结束,需要定义数据等.在ARM的汇编程序中,我们把伪指令分为三部分介绍:通用伪指令与ARM指令相关的伪指令与Thumb指令相关的伪指令4.1伪指令4.1.1通用伪指令通用伪指令包括:符号定义伪指令数据定义伪指令汇编控制伪指令及其他一些常用伪指令等。4.1.1通用伪指令1.符号定义伪指令符号定义伪指令用于声明ARM汇编程序中的变量、对变量赋值以及定义寄存器的名称等操作。常见的符号定义伪指令有
3、如下几种:(1)GBLA、GBLL和GBLS语法格式:GBLA(GBLL或GBLS)全局变量名GBLA、GBLL和GBLS伪指令是声明全局变量的伪指令,用于定义一个ARM程序中的全局变量,并将其初始化。4.1.1通用伪指令其中:GBLA用于声明一个全局的数字变量,并初始化为0;GBLL伪指令用于声明一个全局的逻辑变量,并初始化为F(假);GBLS伪指令用于声明一个全局的字符串变量,并初始化为空;对于全局变量来说,变量名在源程序中必须是唯一的。1.符号定义伪指令符号定义伪指令用于声明ARM汇编程序中的变量、对变量赋值以及定义寄存器的名称等操
4、作。常见的符号定义伪指令有如下几种:(1)GBLA、GBLL和GBLS4.1.1通用伪指令指令示例:GBLADATE1;声明一个全局数字变量DATE1GBLLDATE1;声明一个全局逻辑变量DATE2GBLSDATA3;声明一个全局的字符串变量DATE3DATE3SETS“Testing”;将该变量赋值为“Testing”4.1.1通用伪指令(2)LCLA、LCLL和LCLS语法格式:LCLA(LCLL或LCLS)局部变量名LCLA、LCLL和LCLS伪指令是声明局部变量伪指令,用于定义一个ARM程序中的局部变量,并将其初始化。其中:LC
5、LA用于声明一个局部的数字变量,并初始化为0;LCLL用于声明一个局部的逻辑变量,并初始化为F(假);LCLS用于声明一个局部的字符串变量,并初始化为空。对于局部变量来说,变量名在使用的范围内必须是唯一的,范围限制在定义这个变量的宏指令程序段内。4.1.1通用伪指令指令示例:LCLADATE4;声明一个局部数字变量DATE4LCLLDATE5;声明一个局部的逻辑变量DATE5DATA4SETL0x10;为变量DATE4赋值为0x10LCLSDATA6;声明一个局部的字符串变量DATA64.1.1通用伪指令(3)SETA、SETL和SETS
6、语法格式:变量名SETA(SETL或SETS)表达式SETA、SETL、SETS是变量赋值伪指令,用于给一个已经定义的全局变量或局部变量赋值。其中:SETA用于给一个数学变量赋值;SETL用于给一个逻辑变量赋值;SETS用于给一个字符串变量赋值;4.1.1通用伪指令指令示例:GBLAEXAMP1;先声明一个全局数字变量EXAMP1EXAMP1SETA0xaa;将变量EXAMP1赋值为0xaaLCLLEXAMP2;声明一个局部的逻辑变量EXAMP2EXAMP1SETL{TRUE};将变量EXAMP1赋值为TRUEGBLAEXAMP3;先声明
7、一个全局字符串变量EXAMP3EXAMP3SETS“string”;将变量EXAMP3赋值为string4.1.1通用伪指令(4)RLIST语法格式:名称RLIST{寄存器列表}RLIST伪指令是定义通用寄存列表伪指令,通用寄存器列表定义主要应用在堆栈操作或多寄存器传送中,即使用该伪指令定义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序为根据寄存器的编号由低到高,而与列表中的寄存器排列次序无关。4.1.1通用伪指令指令示例:RegListRLIST{R0-R5,R8};定义寄存器列表为RegLis
8、t在程序中使用:STMFDSP!,RegList;存储列表到堆栈LDMIAR5,RegList;加载列表4.1.1通用伪指令2.数据定义伪指令数据定义伪指令一般用于为特定的数据分配存储单元,同
此文档下载收益归作者所有