欢迎来到天天文库
浏览记录
ID:40234697
大小:516.00 KB
页数:84页
时间:2019-07-27
《ARM嵌入式系统教程教学课件作者张石第4章节课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ARM嵌入式系统第4章ARM汇编程序设计ARM程序设计基础伪操作(derective)伪指令(Pseudo-instruction)ARM汇编语言语句格式ARM汇编语言的程序格式相关的程序示例伪操作符号定义伪操作数据定义伪操作汇编控制伪操作其他伪操作符号定义伪操作定义全局变量:GBLA、GBLL和GBLS定义局部变量:LCLA、LCLL和LCLS变量赋值:SETA、SETL、SETS通用寄存器列表定义名称:RLISTGBLA、GBLL和GBLSGBLA、GBLL和GBLS语法格式:GBLA(GBLL或GB
2、LS)全局变量名GBLAobjectsize;全局的数字变量objectsize,为0ObjectsizeSETA0xff;将该变量赋值为0xffSPACEobjectsize;引用该变量GBLLstatusB;全局的逻辑变量statusB,为{False}statusBSETL{TRUE};将该变量赋值为真全局:作用范围为包含该变量的源程序LCLA、LCLL和LCLSLCLA、LCLL和LCLS语法格式:LCLA(LCLL或LCLS)局部变量名MACRO;声明一个宏$labelmessage$a;宏的原型
3、LCLSerr;声明一个局部变量err,为空串errSETS“errorno:”;向该变量赋值$label;代码INFO0,err:CC::STR:$a;使用该串变量MEND;宏定义结束局部:作用范围为包含该局部变量的宏代码的一个实例SETA、SETL、SETSSETA、SETL和SETS语法格式:变量名SETA(SETL或SETS)表达式在向变量赋值前,必须先声明该变量RLISTRLIST语法格式:名称RLIST{寄存器列表}ContextRLIST{r0-r6,r8,r10-r12,r15};将寄存器列
4、表名称定义为Context,可在ARM指令LDM/STM中通过该名称访问寄存器列表。排列顺序无关数据定义伪操作DCBDCW(DCWU)DCD(DCDU)DCFD(DCFDU)DCFS(DCFSU)SPACEMAPFIELDDCB语法格式:{标号}DCB表达式表达式取值范围:-128~255的数字或字符串。DCB:“=”NullstringDCB“Nullstring”,0;构造一个以0结尾的字符串DCW(或DCWU)语法格式:{标号}DCW(或DCWU)表达式DCW:半字对齐DCWU:不严格半字对齐。表达式
5、取值范围:-32768~65535data1DCW-128,num1+8;num1必须是已经定义过的DCD(或DCDU)语法格式:{标号}DCD(或DCDU)表达式DCD:“&”DCD:字对齐DCDU:不严格字对齐。data1DCD1,5,20;其值为1,5,20data2DCDmemaddr+4;分配一个字单元,其值为程序中标号memaddr加4个字节DCFD(或DCFDU)语法格式:{标号}DCFD(或DCFDU)表达式每个双精度的浮点数占据两个字单元。DCFD:字对齐DCFDU:不严格字对齐DCFD1
6、E308,-4E-100DCFDU100000,-.1,3.1E26DCFS(或DCFSU)语法格式:{标号}DCFS(或DCFSU)表达式每个单精度的浮点数占据一个字单元。DCFS:字对齐DCFSU:不严格字对齐DCFS1E3,-4E-9DCFSU1.0,-.1,3.1E6SPACE语法格式:{标号}SPACE表达式分配一片连续的存储区域并初始化为0。其中,表达式为要分配的字节数。SPACE:“%”DatastrucSPACE280;分配连续280字节的存储单元并初始化为0MAP语法格式:MAP表达式{,
7、基址寄存器}用于定义一个结构化的内存表的首地址。MAP:“^”通常与FIELD伪指令配合使用来定义结构化的内存表。MAP0x80,R9;定义结构化内存表首地址的值为0x80+R9FILED语法格式:{标号}FIELD表达式定义一个结构化内存表中的数据域。FILED也可用“#”代替。MAP0;定义结构化内存表首地址为0constaFIELD4;consta的长度为4字节,相对位置为0constbFIELD4;constb的长度为4字节,相对位置为4xFIELD8;x的长度为8字节,相对位置为0x8yFIELD
8、8;y的长度为8字节,相对位置为0x10stringFIELD256;y的长度为256字节,相对位置为0x18MOVR9,#4096LDRR5,[R9,constb];将内存表中数据域constb读取到R5中汇编控制伪操作汇编控制(AssemblyControl)伪操作用于控制汇编程序的执行流程,常用的汇编控制伪操作包括以下几条:IF、ELSE、ENDIFWHILE、WENDMACRO、MENDMEXITIF、E
此文档下载收益归作者所有