第4章_arm汇编语言程序设计基础

第4章_arm汇编语言程序设计基础

ID:40223972

大小:1.42 MB

页数:68页

时间:2019-07-27

第4章_arm汇编语言程序设计基础_第1页
第4章_arm汇编语言程序设计基础_第2页
第4章_arm汇编语言程序设计基础_第3页
第4章_arm汇编语言程序设计基础_第4页
第4章_arm汇编语言程序设计基础_第5页
资源描述:

《第4章_arm汇编语言程序设计基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章ARM汇编语言程序设计基础目录4.1ARM汇编语言的程序结构4.2ARM汇编语言程序设计4.3C与汇编混合编程本章小结24.1ARM汇编语言的程序结构本章通过一个完整的ARM汇编例子入手,给出了ARM汇编程序的基本框架,并详细介绍了编写汇编程序常用的汇编器伪指令,具备了这些基础知识,学生就能自己动手编写汇编程序。4.1.1一个简单的ARM汇编程序例子4.1.2汇编器伪指令4.1.3汇编语言的规范4.1.1一个简单的ARM汇编程序例子4一段完整的ARM汇编语言程序,由若干个段组成,段可以分为代码段和数据段,代码段的内容为执行代

2、码,数据段存放代码运行时需要用到的变量。程序框架可抽象如下:AREA代码段名字,CODE,READONLYENTRYCODE32;添加用户代码AREA数据段名字,DATA,READWRITE;添加用户数据END指令和汇编器伪指令的比较①指令语句:在汇编后能产生目标代码的语句,CPU可以执行并能完成一定的功能,例如MOV,ADD等;②汇编器伪指令:在汇编后不产生目标代码的语句,仅在汇编过程中告诉汇编器如何汇编。汇编器伪指令的作用包括:定义数据、分配存储区、定义段、定义宏、定义子程序等。一旦汇编结束,它们的使命就完成了。4.1.2汇编

3、器伪指令在ARM的汇编程序中,有如下几种汇编器伪指令:符号定义伪指令,数据定义伪指令,段定义伪指令,模块控制伪指令,汇编控制伪指令,宏处理伪指令等。段定义相关伪指令AREA语法格式:AREA段名属性1,属性2,……程序4-1中使用如下语句定义段:AREAMAIN,CODE,READONLY;定义代码段,名字为MAINAREANUM,DATA,READWRITE;定义数据段,名字为NUMAREA伪指令用于定义一个代码段或数据段。其中,段名若以数字开头,则该段名需用“

4、”括起来,如

5、1_data

6、。属性字段表示该代码段(或数据段)的相

7、关属性,例如:CODE(定义代码段),DATA(定义数据段),READONLY(只读),READWRITE(读写)。多个属性用逗号分隔。一个汇编程序至少应该有一个代码段,由具体的设计需求,也可由多个代码段和数据段组成,多个段在程序汇编链接时最终形成一个可执行的映象文件。可执行映象文件通常由以下几部分构成:①一个或多个代码段,代码段的属性为只读。②零个或多个包含初始化数据的数据段,数据段的属性为可读写。③零个或多个不包含初始化数据的数据段,数据段的属性为可读写。ENTRYENTRY用于指示程序的入口,其后紧跟着第一条可执行语句。CO

8、DE16/CODE32CODE16用于通知汇编器,本语句后面的指令序列为16位的Thumb指令。CODE32用于通知汇编器,本语句后面的指令序列为32位的ARM指令。ENDEND用于指示程序的结束,每一个汇编源程序都必须以END语句结束,以通知汇编器结束汇编。2.数据定义伪指令DCB(Define?Byte)语法格式(方括号内的内容为可选项):标号DCB表达式[,表达式]……DCB用于在内存中分配一片连续的字节单元,并用表达式进行初始化。每个表达式可以是数字或字符串,数字的范围在0~255内,也可以为算术表达式,例如:StrDCB

9、“HelloWorld!”num_bDCB2+3,3*5字符串只能用DCB定义。DCW(Define?Word)语法格式:标号DCW表达式[,表达式]……DCW用于在内存中分配一片连续的半字单元,并用指定的表达式进行初始化。这些分配的内容是半字对齐的。其中表达式可以为程序标号或者数字表达式。例如:num_wDCW0x1234,0x5678DCD(Define?Doubleword)语法格式:标号DCD表达式[,表达式]……DCD用于在内存中分配一片连续的字单元,并用指定的表达式进行初始化。这些分配的内容是字对齐的。其中表达式可以为

10、程序标号或者数字表达式。例如:num_dDCD-5,0x90abcdefSPACE语法格式:标号SPACE表达式SPACE用于分配一片连续的存储区域并初始化为0。其中,表达式为要分配的字节数。例如:dataSPACE1024;分配1024个字节空间并初始化为0LTORGLTORG用于声明一个文字池,用来存放常量,特别是不符合8位位图数据标准的常数。其使用情景及实例见本章的4.2.1节。3.宏处理伪指令MACRO和ENDM语法格式:宏名MACRO[参数1][,参数2]……宏体ENDMMACRO用于定义一个宏,引用宏时需使用宏名,并传

11、递实参。ENDM用于结束宏定义。例如:以下定义一个宏,实现参数x与参数y相加再减去参数z,结果放在参数x中,三个参数均为存储器操作数。addmMACROx,y,zLDRR2,=xLDRR1,[R2]LDRR3,=yLDRR4,=zADDR1,R1,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。