第4节_ARM汇编语言程序设计基础.ppt

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 ARM汇编语言程序设计基础 目 录 4.1 ARM汇编语言的程序结构 4.2 ARM汇编语言程序设计 4.3 C与汇编混合编程 本章小结 2 4.1 ARM汇编语言的程序结构 本章通过一个完整的ARM汇编例子入手,给出了ARM汇编程序的基本框架,并详细介绍了编写汇编程序常用的汇编器伪指令,具备了这些基础知识,学生就能自己动手编写汇编程序。 4.1.1 一个简单的ARM汇编程序例子 4.1.2 汇编器伪指令 4.1.3 汇编语言的规范 4.1.1 一个简单的ARM汇编程序例子 4 一段完整的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位位图数据标准的常数。其使用情景及

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档