- 1、本文档共74页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
共74页 * [WEAK] 选项表示当前所有的源文件都没有定义这样一个符号时,编译器也不报错,并在多数情况下将该符号置为 0 。但该符号被 B 或 BL 指令所引用时,则将 B 或 BL 指令置为 NOP 操作。 AREA Init, CODE, READONLY IMPORT Main … END 共74页 * (8)等效伪指令 EQU EQU 伪指令用于为程序中的常量、标号等定义一个等效的字符名字,其作用类似于 C语言 中的 #define。 名称 EQU 表达式 {,类型} EQU 也可用“*” 代替。 共74页 * 由 EQU 伪指令定义的字符名称,当其表达式为 32位 常量时,可以指定表达式的数据类型,有以下三种类型:CODE16、CODE32 和 DATA。 Test EQU 50 ;定义标号Test的值为50 Addr EQU 0x55, CODE32 ;定义Addr的值为0x55,且该处为32位的ARM指令 共74页 * (9)EXTERN EXTERN 伪指令与 IMPORT 伪指令的功能基本相同,但如果当前源文件中的程序实际并未使用该指令,则该符号不会加入到当前源文件的符号表中。 其它与 IMPORT 相同。 共74页 * GET 伪指令用于将一个源文件包含到当前的源文件中,并将被包含的源文件在当前位置进行汇编。 GET 文件名 可以使用 INCLUDE 代替 GET。 GET 伪指令只能用于包含 源文件,包含目标文件则需要使用 INCBIN 伪指令。 (10)GET(或INCLUDE) 共74页 * AERA Init, CODE, READONLY GET a1.s GET c:\a2.s … END 共74页 * (11)INCBIN INCBIN 伪指令用于将一个 目标文件 或 数据文件 包含到当前的源文件中,被包含的文件不做任何变动地存放在当前文件中,编译器从其后开始继续处理。 INCBIN 文件名 共74页 * AREA Init, CODE, READONLY INCBIN a1.dat INCBIN c:\a2.txt … END 共74页 * (12)RN RN 伪指令用于给一个寄存器定义一个别名,以提高程序的可读性。 名称 RN 表达式 名称为给寄存器定义的别名,表达式为寄存器的编码。 Temp RN R0 ;将R0定义一个别名Temp 共74页 * (13)ROUT ROUT 伪指令用于给一个局部变量定义作用范围。 名称 ROUT 在程序中未使用该伪指令时,局部变量的作用范围为所在的 AREA ;而使用 ROUT 后,局部变量的作用范围为当前 ROUT 和下一个 ROUT 之间。 共74页 * 作业 1、目前汇编主要有几种?分别是什么? 2、指令与伪指令的本质区别在哪里? 3、ARM主要有几种伪指令?分别是什么? 4、请列出常用的伪指令。 共74页 * 在应用程序中经常使用一种如下图所示的表: (2)MAP 和 FIELD 共74页 * MAP 可以用“^” 代替。 MAP 用于定义一个结构化的内存表的首地址。语法格式如下: MAP expr {,baseregister} expr 为结构化表首地址。可以为 标号 或 数字表达式。 baseregister 为基址寄存器(可选项)。基址寄存器的值与 expr 的值之和就是表首地址。 共74页 * MAP fun ; fun就是内存表的首地址 MAP 0x100,R9 ;内存表的首地址为R9+0X100 MAP 通常和 FIELD 伪指令相配合来定义一个结构化的内存表。 FIELD 伪指令用于定义一个结构化内存表中的数据域。 label FIELD expr label 为标号。 要顶格写 共74页 * expr 为表达式。它的值为数据域所占的字节数。 FIELD 伪指令与 MAP 伪指令配合使用来定义结构化的内存表。 MAP 伪指令定义内存表的首地址; FIELD 伪指令定义内存表中各个数据域,并可以为每个数据域指定一个 标号 供其他指令引用。 共74页 * MAP 0X100 ;定义结构化内存表首地址为 0X100 A FIELD 16 ;定义A的长度为16字节,位置为 0X100 B FIELD 32 ;定义B的长度为32字节,位置为 0X110 S FIELD 256 ;定义S的长度为256字
文档评论(0)