- 1、本文档共96页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统技术与设计 刘洪涛 孙天泽 第3章 ARM汇编语言程序设计新.ppt
嵌入式系统技术与设计 第3章 ARM汇编语言程序设计 嵌入式汇编函数定义由 --asm(C和C++)或asm(C++)函数限定符标记,可用于: (1)成员函数; (2)非成员函数; (3)模板函数; (4)模板类成员函数。 1.嵌入式汇编语言语法 嵌入式汇编表达式和C或C++表达式之间存在以下差异。 (1)汇编程序表达式总是无符号的。 (2)以0开头的汇编程序编码仍是十进制的。 (3)汇编程序运算符优先顺序与 C 和 C++ 不同。 (4)汇编程序字符串不是以空字符为终止标志的。 2.嵌入式汇编程序表达式和C或C++表达式之间的差异 由关键字__asm声明的嵌入式汇编程序,在编译时将作为整个文件体传递给ARM汇编器。在传递过程中,__asm函数的顺序保持不变(用模板实例生成的函数除外)。 3.嵌入式汇编函数的生成 可用__cpp关键字从汇编代码中访问C或C++的编译时的常量表达式,其中包括含有外部链接的数据或函数地址。 4.关键字__cpp 在汇编代码中访问C全局变量,只能通过地址间接访问全局变量。 3.4.3 汇编代码访问C全局变量 对于无符号变量,使用以下指令。 (1)LDRB/STRB:用于char型。 (2)LDRH/STRH:用于short型(对于ARM体系结构v3,使用两个 LDRB/STRB指令)。 (3)LDR/STR:用于int型。 本节描述如何在C++代码中使用C头文件。从C++调用C头文件之前,C头文件必须包含在externC命令中。本节包含以下两部分内容: (1)在C++中使用系统的C头文件; (2)在C++中使用自定义的C头文件。 3.4.4 C++中使用C头文件 (1)语法格式 SPACE伪指令用于分配一片连续的存储区域并初始化为0。 (2)使用说明 (3)示例 7.SPACE (1)语法格式 MAP伪操作用于定义一个结构化的内存表的首地址。 语法格式如下。 MAP expr{,base-register} (2)使用说明 (3)示例 8.MAP (1)语法格式 FIELD伪操作用于定义一个结构化内存表中的数据域。 语法格式如下。 {label} FIELD expr (2)使用说明 (3)示例 9.FILED 3.2.4 汇编控制伪操作 汇编控制伪操作用于控制汇编程序的执行流程,常用的汇编控制伪操作包括以下几条。 (1)IF、ELSE、ENDIF。 (2)WHILE、WEND。 (3)MACRO、MEND。 (4)MEXIT。 (1)语法格式 IF、ELSE、ENDIF伪操作能根据条件的成立与否决定是否执行某个指令序列。 语法格式如下: IF logical-expressing … {ELSE …} ENDIF 1.IF、ELSE、ENDIF (1)语法格式 WHILE、WEND伪操作能根据条件的成立与否决定是否循环执行某个指令序列。 语法格式如下: WHILE logical-expression code WEND logical-expression:用于决定指令执行流程的逻辑表达式。 (2)使用说明 (3)示例 2.WHILE、WEND (1)语法格式 MACRO、MEND伪操作可以将一段代码定义为一个整体,称为宏指令,然后就可以在程序中通过宏指令多次调用该段代码。 语法格式如下: MACRO {$label} macroname {$parameter{,$parameter}…} ;code MEND (2)使用说明 (3)示例 3.MACRO、MEND (1)语法格式 MEXIT用于从宏定义中跳转出去。 语法格式如下: MEXIT (2)示例 4.MEXIT 下面的伪操作在使用时可以嵌套,嵌套的深度不能超过256。 (1)MACRO宏定义。 (2)WHILE…END循环。 (3)IF…ELSE…ENDIF条件语句。 (4)INCLUDE指定头文件。 5.关于伪操作的嵌套 3.2.5 杂项伪操作 ARM汇编中还有一些其他的伪操作,在汇编程序中经常会被使用,包括以下几条。 (1)AREA用于定义一个代码段或数据段。 (2)ALIGN用于使程序当前位置满足一定的
文档评论(0)