- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
END ARM系统硬件设计基础 本章习题:P.191 1、2 * * * * 嵌入式系统原理与应用 第4章 ARM系统硬件设计基础 4.2 基于ARM的汇编语言程序设计 ARM系统硬件设计基础 4.2.1 ARM汇编器支持的伪指令 教材178页表4.1 伪指令:特殊指令助记符,没有相对应的操作码,所完成的操作称为伪操作。 伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。 常用的伪指令 AREA ALIGN CODE16、CODE32 ENTRY END EQU EXPORT(或GLOBAL) IMPORT EXTERN GET(或INCLUDE) 1.AREA ——用于定义一个代码段或数据段 ARM系统硬件设计基础 语法格式:AREA 段名,属性1,属性2,… 常用的属性: —CODE属性:用于定义代码段,默认为READONLY —DATA属性:用于定义数据段,默认为READWRITE —READONLY属性:指定本段为只读 —READWRITE属性:指定本段可读可写,是数据段的默认属性 —ALIGN属性:对齐方式,取值为2的幂 使用示例: AREA Init,CODE,READONLY 该伪指令定义了一个代码段,段名为Init,属性为只读 2.CODE16、CODE32 ——通知编译器后续的指令代码位数 ARM系统硬件设计基础 语法格式:CODE16(或CODE32) 使用示例: …… CODE32 ;其后的指令为32位的ARM指令 LDR R0,=NEXT+1 ;将跳转地址放入寄存器R0 BX R0 ;程序跳转,切换到Thumb工作状态 …… CODE16 ;其后的指令为16位Thumb指令 NEXT LDR R3,=0x3FF …… 3.ENTRY ——用于指定汇编程序的入口点 ARM系统硬件设计基础 语法格式:ENTRY 使用示例: AREA Init,CODE,READONLY ENTRY ;指定应用程序的入口点 …… 4.END ——用于通知编译器已经到了源程序的结尾 ARM系统硬件设计基础 语法格式:END 使用示例: AREA Init,CODE,READONLY ENTRY …… …… END ;源程序结尾 4.2.2 基于ARM的汇编语言语句格式 ARM系统硬件设计基础 [标号] [指令或伪指令] [;注释] 代表地址的标号,大小写敏感,在行的顶格书写 不可在行的顶格书写,大小写均可,不能大小写混写 4.3.2 汇编语言程序的基本结构 ARM系统硬件设计基础 在ARM汇编语言中,以程序段为单位来组织代码。 代码段 ——执行代码 数据段 ——代码运行所操作的数据 一个程序可以有多个代码段,在最终编译链接时形成一个可执行映像文件。 映像文件的组成: 一个或多个代码段,具有只读属性 零个或多个包含初始化数据的数据段,具有可读/写属性 零个或多个不包含初始化数据的数据段,具有可读/写属性 各个段的位置由链接器自动分配。 ARM汇编语言中的子程序调用 ARM系统硬件设计基础 通过 B 或 BL 指令实现,格式: B 子程序名 BL 子程序名 BL指令在执行时,会将下一条指令的地址自动保存到R14(LR)中。 从子程序返回:MOV PC,LR 含有子程序调用的代码段例子: ARM系统硬件设计基础 AREA Init,CODE,READONLY ENTRY LDR R0,=0x3FF5000 LDR R1,0x0F STR R1,[R0] LDR R0,=0x3FF5008 LDR R1,0x01 STR R1,[R0] BL PROC ;子程序调用 ... PROC ... ;子程序开始 ... MOV PC,LR ;子程序返回 ... ... END 段名 段属性 入口 数据段的代码例子: ARM系统硬件设计基础 AREA DataArea,DATA,NOINIT,ALIGN=2 DISPBUF SPACE 200 RCVBUF SPACE 200 ... ... 4.2.4 基于ARM的汇编语言程序举例 ARM系统硬件设计基础 AREA Example,CODE,READONLY ENTRY START LDR R0,=DAT1 ;R0:数据基址 MOV R1,#0 ;R1:数据偏移量 MOV R3,#0 ;R3:累加和 LOOP LDR R2,[R0,R1,LSL #2] ;R2:加数 ADD R1,R1,#1 ADD
您可能关注的文档
- ansys12-FLUENT05湍流模型分析报告.ppt
- ETCH(PCB蚀刻培训教材)分析报告.ppt
- 2016年高考地理二轮复习微专题强化:考点9《城市空间结构与城市化》分析报告.ppt
- ANSYS14.0培训分析报告.ppt
- 2016年高考历史一轮复习考点8.2工业革命分析报告.ppt
- ANSYS单元理论知识分析报告.ppt
- ETFE充气式膜结构在建筑中的应用分析报告.ppt
- 2016年高考历史一轮复习考点13.1希腊先哲的精神觉醒与文艺复兴巨匠的人文风采分析报告.ppt
- ANSYS非线性基础培训手册_Basic3分析报告.ppt
- 2016年高考物理大一轮复习9.2法拉第电磁感应定律自感涡流新人教版分析报告.ppt
文档评论(0)