- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章_ARM汇编语言程序设计基础
4.1 ARM汇编语言的程序结构 本章通过一个完整的ARM汇编例子入手,给出了ARM汇编程序的基本框架,并详细介绍了编写汇编程序常用的汇编器伪指令,具备了这些基础知识,学生就能自己动手编写汇编程序。 4.1.1 一个简单的ARM汇编程序例子 4.1.2 汇编器伪指令 4.1.3 汇编语言的规范 一段完整的ARM汇编语言程序,由若干个段组成,段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的变量。 程序框架可抽象如下: AREA 代码段名字, CODE, READONLY ENTRY CODE32 ;添加用户代码 AREA 数据段名字, DATA, READWRITE ;添加用户数据 END 指令和汇编器伪指令的比较 ① 指令语句:在汇编后能产生目标代码的语句,CPU可以执行并能完成一定的功能,例如MOV,ADD等; ② 汇编器伪指令:在汇编后不产生目标代码的语句,仅在汇编过程中告诉汇编器如何汇编。汇编器伪指令的作用包括:定义数据、分配存储区、定义段、定义宏、定义子程序等。一旦汇编结束,它们的使命就完成了。 4.1.2 汇编器伪指令 在 ARM 的汇编程序中,有如下几种汇编器伪指令:符号定义伪指令,数据定义伪指令,段定义伪指令,模块控制伪指令,汇编控制伪指令,宏处理伪指令等。 段定义相关伪指令 AREA 语法格式: AREA 段名 属性1, 属性2, …… 程序4-1中使用如下语句定义段: AREA MAIN, CODE, READONLY ;定义代码段,名字为MAIN AREA NUM, DATA, READWRITE ;定义数据段,名字为NUM AREA伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名需用 “ | ” 括起来,如 |1_data| 。属性字段表示该代码段(或数据段)的相关属性,例如:CODE(定义代码段),DATA(定义数据段),READONLY(只读),READWRITE(读写)。多个属性用逗号分隔。 一个汇编程序至少应该有一个代码段,由具体的设计需求,也可由多个代码段和数据段组成,多个段在程序汇编链接时最终形成一个可执行的映象文件。可执行映象文件通常由以下几部分构成: ① 一个或多个代码段,代码段的属性为只读。 ② 零个或多个包含初始化数据的数据段,数据段的属性为可读写。 ③ 零个或多个不包含初始化数据的数据段,数据段的属性为可读写。 ENTRY ENTRY用于指示程序的入口,其后紧跟着第一条可执行语句。 CODE16/CODE32 CODE16用于通知汇编器,本语句后面的指令序列为16位的Thumb指令。CODE32用于通知汇编器,本语句后面的指令序列为32位的ARM指令。 END END用于指示程序的结束,每一个汇编源程序都必须以END语句结束,以通知汇编器结束汇编。 2. 数据定义伪指令 DCB(Define ? Byte) 语法格式(方括号内的内容为可选项): 标号 DCB 表达式 [, 表达式]…… DCB用于在内存中分配一片连续的字节单元,并用表达式进行初始化。每个表达式可以是数字或字符串,数字的范围在0~255内,也可以为算术表达式,例如: Str DCB “Hello World!” num_b DCB 2+3, 3*5 字符串只能用DCB定义。 DCW(Define ? Word) 语法格式:标号 DCW 表达式 [, 表达式]…… DCW用于在内存中分配一片连续的半字单元,并用指定的表达式进行初始化。这些分配的内容是半字对齐的。其中表达式可以为程序标号或者数字表达式。例如: num_w DCW 0x1234,0x5678 DCD(Define ? Double word) 语法格式:标号 DCD 表达式 [, 表达式]…… DCD用于在内存中分配一片连续的字单元,并用指定的表达式进行初始化。这些分配的内容是字对齐的。其中表达式可以为程序标号或者数字表达式。例如: num_d DCD -5,0x90abcdef SPACE 语法格式:标号 SPACE 表达式 SPACE用于分配一片连续的存储区域并初始化为0。其中,表达式为要分配的字节数。例如: data SPACE 1024 ;分配1024个字节空间并初始化为0 LTORG LTORG用于声明一个文字池,用来存放常量,特别是不符合8位位图数据标准的常数。其使用情景及实例见本章的4.2.1节。 3. 宏处理伪指令 MACRO和ENDM 语法格式: 宏名 MACRO [参数1][, 参数2]…… 宏体 ENDM M
您可能关注的文档
最近下载
- DB 14T 2122—2020地质灾害调查规范.pdf VIP
- 高速铁路的养护维修—高铁精密测量控制网.pptx
- 俄语学法指导八年级全一册答案.doc VIP
- 4.6线段的垂直平分线(第1课时线段垂直平分线的性质定理及逆定理)(教学课件)-2025-2026学年八年级数学上册(湘教版2024).pptx
- 卫星互联网行业报告:卫星互联网建设与应用.pptx VIP
- 石油和天然气开采钻井井场设备设施安全事故隐患排查清单.pdf VIP
- 09SMS202-1埋地矩形雨水管道及其附属构筑物(混凝土模块砌体)清晰版建筑工程图集 .docx VIP
- ..物质由微观粒子构成.资料.ppt
- TGSS型水平刮板输送机.doc VIP
- 医学ppt--肥胖心血管疾病.ppt VIP
文档评论(0)