- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章嵌入式系统程序设计基础(第二版)概要
第6章基本输入输出接口技术 第4章嵌入式系统程序设计基础 主要内容 4.1 ARM编译器所支持的伪指令 在ARM的汇编程序中,有如下几种伪指令: 符号定义伪指令 数据定义伪指令 汇编控制伪指令 宏指令以及其他伪指令 符号定义伪指令(1) 符号定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作 。 1. GBLA、GBLL和GBLS 格式:GBLA(GBLL或GBLS)全局变量名 符号定义伪指令(2) 2. LCLA、LCLL和LCLS 格式:LCLA(LCLL或LCLS)局部变量名 3. SETA、SETL和SETS 格式:变量名 SETA(SETL或SETS)表达式 符号定义伪指令(3) 4. RLIST 格式:名称 RLIST {寄存器列表} 示例: RegList RLIST {R0-R5,R8,R10} ;将寄存器列表名称定义为RegList,可在ARM指令LDM/STM中通过该名称访问寄存器列表。 数据定义伪指令(1) (1)DCB (2)DCW(DCWU) (3)DCD(DCDU) (4)DCFD(DCFDU) 数据定义伪指令(2) (5)DCFS(DCFSU) (6)DCQ(DCQU) (7)SPACE (8)MAP (9)FIELD 汇编控制伪指令 汇编控制伪指令用于控制汇编程序的执行流程,常用的汇编控制伪指令包括以下几条: (1)IF、ELSE、ENDIF (2)WHILE、WEND (3)MACRO、MEND (4)MEXIT 其他常用的伪指令 AREA ALIGN CODE16、CODE32 ENTRY END EQU EXPORT(或GLOBAL) 4.2 汇编语言的语句格式 ARM(Thumb)汇编语言的语句格式为: {标号} {指令或伪指令} {;注释} 每一条指令的助记符可以全部用大写、或全部用小写,但不许在一条指令中大、小写混用 长语句若分为多行来书写,在行的末尾用“\”表示下一行与本行为同一条语句 汇编语言程序中常用的符号 符号的命名必须遵循以下的约定 : 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。 符号在其作用范围内必须唯一。 自定义的符号名不能与系统的保留字相同。 符号名不应与指令或伪指令同名。 汇编语言程序中的表达式和运算符 表达式一般由变量、常量、运算符和括号构成 ,运算次序遵循如下的优先级: (1) 优先级相同的双目运算符的运算顺序为从左到右。 (2) 相邻的单目运算符的运算顺序为从右到左,且单目运算符的优先级高于其他运算符。 (3) 括号运算符的优先级最高。 数字表达式及运算符(1) “+”、“-”、“×”、“/” 及“MOD”算术运算符 示例: X/Y 表示X除以Y的商。 “ROL”、“ROR”、“SHL”及“SHR”移位运算符 示例:X:ROL:Y 表示将X循环左移Y位。 “AND”、“OR”、“NOT”及“EOR”按位逻辑运算符 示例: :NOT:Y 表示将Y按位作逻辑非的操作。 逻辑表达式及运算符(2) “=”、“”、“”、“=”、“= ”、“/=”、“ ” 运算符 示例: X Y 表示X不等于Y。 “LAND”、“LOR”、“LNOT”及“LEOR”运算符 示例: X:LAND:Y 表示将X和Y 作逻辑与的操作 字符串表达式及运算符(3) LEN运算符 :返回字符串的长度 示例: :LEN:X CHR运算符:将0~255之间的整数转换为一个字符 示例: :CHR:M STR运算符:将一个数字表达式或逻辑表达式转换为一个字符串 示例: :STR:X 字符串表达式及运算符(4) LEFT运算符:返回某个字符串左端的一个子串 示例: X:LEFT:Y RIGHT运算符:返回某个字符串右端的一个子串 示例: X:RIGHT:Y CC运算符:将两个字符串连接成一个字符串 示例: X:CC:Y 与寄存器和程序计数器(PC)相关的表达式及运算符 BASE运算符:返回基于寄存器的表达式中寄存器的编号 示例: :BASE:X INDEX运算符:返回基于寄存器的表达式中相对于其基址寄存器的偏移量 示例: :IND
文档评论(0)