第3.2章汇编语言程序设计基础与Embest模拟开发流程.pptVIP

第3.2章汇编语言程序设计基础与Embest模拟开发流程.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.1 ARM汇编语言的伪操作、宏指令与伪指令 伪操作、宏指令一般和编译程序有关。因此ARM汇编语言的伪操作、宏指令在不同的编译环境下有不同的编写形式和规则。 目前常用的ARM编译开发环境有两种 4.1.1 GNU编译环境下的ARM伪操作 常量编译控制伪操作 1 .byte 用于分配一段字节内存单元,并用伪操作中的expr初始化。 语法格式 . byte expr{,expr}… . byte 21,48,89,0x13,0xff 4.1.1 GNU编译环境下的ARM伪操作 常量编译控制伪操作 1 .word .long .int 用于分配一段字内存单元,并用伪操作中的expr初始化。 语法格式 . word expr{,expr}… . word 21,0x1,10033,0x77ff2255 4.1.1 GNU编译环境下的ARM伪操作 Src: . long 1,2,3,4,5,6 /*定义一个数据区,以src为起始地址*/ /*每个数据均分配4B空间*/ 4.1.1 GNU编译环境下的ARM伪操作 字符编译控制伪操作 1 .equ及.set .equ伪操作用于为数字常量、基于寄存器的值和程序中的标号定义一个字符名称。.set作用同 .equ。 语法格式 .equ symbol,expr .equ x, 45 /* 定义变量x,并赋值为45*/ 2 .global,.globl, .extern 声明一个符号可以被其他文件引用。相当于声明了一个全局变量,语法格式 .global symbol 其中:symbol为声明的符号的名称,它是区分大小写的。 示例: .global _start .extern Main 汇编程序代码控制伪操作 1 .text .text伪操作将操作符开始的代码编译到代码段或代码段子段(subsection)。 语法格式 .text {subsection} 示例 .text 2 .data 作用:.data伪操作将操作符开始的数据编译到数据段或数据段 子(subsection)。 语法格式 .data {subsection} 示例 .data src: .long 1,2,3,4,5 /*定义了一个数据区,以src为起始地址*/ dst: .long 0,0,0,0,0 /*定义了一个数据区,以src为起始地址*/ 3 .code 16|32 作用:.code伪操作用于选择当前汇编指令的指令 集。参数16选择Thumb指令集,参数32选择ARM指令集。 语法格式   .code 16   .code 32 4 .end 作用:标记汇编文件的结束行,即标号后的代码不作处理。 语法格式    .end 5  .include 作用:   .include伪操作用于将一个源文件包含到当前源文件中。一般是将该源文件用到的库文件包含到本源文件中。 语法格式   .include “filename” #include 44blib.h 4.1.2 宏编译控制伪操作   .macro伪操作标识宏定义的开始,.endm标识宏定义的结束。用.macro及.endm定义一段代码,称为宏定义体,这样在程序中就可以通过宏指令多次调用该代码段。 语法格式   .macro macroname{parameter…}    … /*代码段*/   .endm 其中,宏参数的定义可以使用逗号分隔,宏字符参数可以使用斜线“\字符”直接使用。 .macro HANDLER Label /*宏名为HANDLER,有一个参数Label*/ sub sp,sp,#4 stmfd sp!,{r0} ldr r0,=\ Label ldr r0,[r0] str r0,[sp,#4] ldmfd sp!,{r0,pc} .endm        /*宏定义体结束*/ HandlerRTC: sub sp,sp,#4 stmfd sp!,{r0} ldr r0, =HandleRTC ldr r0,[r0] str r0,[sp,#4] ldmfd sp!,{r0,pc}         4.1.3 ARM伪指令 2. LDR大范围的地址读取伪指令 寄存器赋值时经常使用 NOP空操作伪指令 使用格式:  n

文档评论(0)

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

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

1亿VIP精品文档

相关文档