4ARM汇编语言程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3 、 MACRO 、 MEND 语法格式: MACRO $ 标号宏名 $ 参数 1 , $ 参数 2 , …… 指令序列 MEND MACRO 、 MEND 伪指令可以将一段代码定义为一个 整体,称为宏指令,然后就可以在程序中通过宏指 令多次调用该段代码。其中, $ 标号在宏指令被展 开时,标号会被替换为用户定义的符号 ; 宏指令可以使用一个或多个参数,当宏指令被 展开时,这些参数被相应的值替换。 MACRO 、 MEND 伪指令可以嵌套使用。 s3c44b0x 初始化程序里的例子: MACRO $HandlerLabel HANDLER $HandleLabel $HandlerLabel sub sp,sp,#4 stmfd sp!,{r0} ldr r0,= $HandleLabel ldr r0,[r0] str r0,[sp,#4] ldmfd sp!,{r0,pc} MEND HandlerEINT4567 HANDLER HandleEINT4567 将被汇编成如下语句: HandlerEINT4567 sub sp,sp,#4 stmfd sp!, {r0} ldr r0,= HandleEINT4567 ; ldr r0, [r0] str r0, [sp,#4] ldmfd sp!,{r0,pc} HandleEINT4567 的定义 : ^ (_IRQ_BASEADDRESS+0x100) HandleADC # 4 ……………… .. HandleEINT4567 # 4 为PC预留的单 元,此时还没 存。 堆栈,向地址减少 的方向增长 低地址 高地址 sp先减少四 个字节 图 1 执行 sub sp,sp,#4 时堆栈的情况 图 2 执行 stmfd sp!, {r0}, 将 R0 压入堆栈 后缀“!”表示最后的地址写回到 sp 中 R0 为PC预留的单 元,此时还没 存。 sp再减少四 个字节 图 3 执行 str r0,[sp,#4] ,将 R0 压入堆栈 (R0)= HandleXXX 处的内容,不改变 SP 的值。 R0 Handle X X X 处的内容 sp加四之后 指向刚才预 留的位置 图 4 ldmfd sp!,{r0,pc} ;弹出两个字,分别送到 R0 , PC R0 Handle X X X 处的内容 sp在执行指 令之后指向 R0寄存器 PC寄存器 4 、 MEXIT 语法格式: MEXIT MEXIT 用于从宏定义中跳转出去。 ARM 指令系统 4.1.6 其他常用的伪指令 还有一些其他的伪指令,在汇编程序中 经常会被使用,包括以下几条: AREA ALIGN CODE16 、 CODE32 ENTRY END EQU EXPORT (或 GLOBAL ) IMPORT EXTERN GET (或 INCLUDE ) INCBIN RN ROUT 1 、 AREA 语法格式: AREA 段名 属性 1 ,属性 2 , …… AREA 伪指令用于定义一个代码段或数据 段。其中,段名若以数字开头,则该段名需 用“ |” 括起来,如 |1_test| 。 属性字段表示该代码段(或数据段)的 相关属性,多个属性用逗号分隔。常用的属 性如下: CODE 属 性 : 用 于 定 义 代 码 段 , 默 认 为 READONLY 。 DATA 属 性 : 用 于 定 义 数 据 段 , 默 认 为 READWRITE 。 READONLY 属性:指定本段为只读,代码段默认为 READONLY 。 READWRITE 属性:指定本段为可读可写,数据段的 默认属性为 READWRITE 。 ALIGN 属性:使用方式为 ALIGN 表达式。在默认时, ELF (可执行连接文件)的代码段和数据段是按字 对齐的,表达式的取值范围为 0 ~ 31 ,相应的对齐方 式为 2 表达式次方。 This is not the same as the way that the ALIGN directive is specified. Do not use ALIGN=0 or ALIGN=1 for code sections. 使用示例: AREA Init , CODE , READONLY ;该伪指令定义了一个代码段,段名为 Init ,属性为只读 AREA MyDATA,DATA,READONLY,ALIGN=14 ;( 以 2 14 字节对齐 .) 2 、 ALIGN 语法格式: ALIGN { 表达式 { ,偏移量 }} ALIGN 伪指令可通过添加填充字节的方 式,使当前位置满足一定的对其方式 | 。 其中,表达式的值用于指定对齐方式, 可能的取值

文档评论(0)

sandajie + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档