- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第一讲_伪操作、宏指令与伪指令课件
汇编程序代码控制伪操作 .end 汇编文件结束,后面的代码不做处理 汇编程序代码控制伪操作 .include 将一个源文件包含到当前源文件中 .include “44b0.h” 汇编程序代码控制伪操作 .align和.balign .align {alignment} {,fill} {,max} 通过填充一定的字节,满足一定的对齐方式,alignment对齐方式,可以是2的次幂,缺省是4,fill是填充内容,max填充的最大字节,如果填充字节数超过max就不进行对齐 .align 4 宏及条件编译控制伪操作 伪操作 语法格式 作 用 .macro、.exitm及.endm .macro acroname{parameter{, parameter}…} … .endm .macro伪操作标识宏定义的开始,.endm标识宏定义的结束。用.macro及.endm定义一段代码,称为宏定义体。.exitm伪操作用于提前退出宏。 . ifdef,.else及.endif .ifdef condition … .else … .endif 当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。其中else可以缺省。 宏及条件编译控制伪操作 .macro和.endm .macro macroname {param{,param}….} ……. .endm 宏及条件编译控制伪操作 .macro HANDLER Label SUB SP,SP,#4 STMFD SP!,{R0} LDR R0,=\ Label LDR R0,[R0] STR R0,[SP,#4] LDMFD SP!,{R0,PC} .endm HANDLER Func 宏及条件编译控制伪操作 .exitm 提前推出宏 .macro HANDLER Label SUB SP,SP,#4 STMFD SP!,{R0} LDR R0,=\ Label .exitm LDR R0,[R0] STR R0,[SP,#4] LDMFD SP!,{R0,PC} .endm 宏及条件编译控制伪操作 .ifdef、.else、.endif .ifdef PLLONSTART LDR R0,=PLLCON STR R1,[R0] endif 其他伪操作 伪操作 语法格式 作 用 .eject .eject 在汇编符号列表文件中插入一分页符。 .list .list 产生汇编列表(从 .list 到 .nolist)。 .nolist .nolist 表示汇编列表结束处。 .title .title “heading” 使用“heading ”作为标题。 .sbttl .sbttl “heading” 使用“heading”作为子标题。 .ltorg .ltorg 在当前段的当前地址(字对齐)产生一个文字池。 .req .req name,expr 为一个特定的寄存器定义名称。 .err .err 使编译时产生错误报告。 .print .print string 打印信息到标准输出。 .fail .fail expr 编译汇编文件时产生警告。 五、ARM汇编语言的伪指令 伪指令 语法格式 作 用 ADR ADR {cond} register,expr 将基于PC或基于寄存器的地址值读取到寄存器中。小范围的地址读取。 ADRL ADRL {cond} register,expr 将基于PC或基于寄存器的地址值读取到寄存器中。中等范围的地址读取。 LDR LDR {cond} register,=[expr | label-expr] 将一个32位的立即数或者一个地址值读取到寄存器中。大范围的地址读取。 NOP NOP 在汇编时将被替换成ARM中的空操作。 ARM中伪指令不是真正的ARM指令或Thumb指令, 它们在编译器对源程序进行汇编处理时被替换成相 应的ARM或Thumb指令序列。 ARM汇编语言的伪指令 ADR、ADRL、LDR Start MOV R0,#10 ADR R1,Start ADRL R4,start+60000 LDR R1,=0xFF 汇编后:MOV R1,0xFF LDR R1,=0xFFF 汇编后:LDR R1,[PC,OFFSET_TO_LPOOL]
文档评论(0)