ARM学习资料 MDK入门文档RealViewMDK使用之宏汇编器armasm_第1页
ARM学习资料 MDK入门文档RealViewMDK使用之宏汇编器armasm_第2页
ARM学习资料 MDK入门文档RealViewMDK使用之宏汇编器armasm_第3页
ARM学习资料 MDK入门文档RealViewMDK使用之宏汇编器armasm_第4页
ARM学习资料 MDK入门文档RealViewMDK使用之宏汇编器armasm_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Copyright RealView宏汇编器armasm Copyright 版本管理 修改记录 审核记录版本号版本号.作者作者描述描述修改日期修改日期v01毛会懂First Draft20111018V02张立为调整内容20111019版本号版本号.职务职务签名签名修改日期修改日期Copyright 主要内容 简介 汇编程序的基本格式与结构 汇编源程序 汇编命令 符号、运算符与表达式Copyright 介绍 ARMASM能够将符号代码(汇编语言)翻译成为可执行的目标代码; 这种目标代码能够被基于ARM体系结构的微控制器执行。 汇编器的基本知识:源程序的基本格式、汇编过程、汇编器命令、符号、运

2、算符及表达式Copyright 汇编源语句格式 在ARM汇编语言程序中源语句行的一般格式: label instruciton|directive|pseudo-instruction;comment Label:标号 instruciton|directive|pseudo-instruction:指令|命令|伪指令 Comment:注释注意:1、armasm汇编器对标示符大小写敏感 2、源程序中允许有空行,以便代码更有可读性 3、标号必须从第一列开始,并且不能包含任何空白字符(如空格或制表符)Copyright 汇编语言程序的基本结构 ARM汇编语言程序设计采用分段式设计,一个ARM源程序

3、至少需要一个代码段,复杂的程序可以包括多个代码段及数据段。 段是独立的,须命名的,不可分割的代码或数据序列。一个代码段是生成一个应用程序的最低要求。 用AREA伪指令标记一个段的开始。该伪指令对段进行命名并设置其属性。属性可以为段选择任何段名,但以任何非字母,数字字符开头的名称必须放在竖杠内,否则会产生AREA name missing 汇编错误。Copyright 汇编语言程序的基本结构 ENTRY伪指令标记程序要执行的第一个指令。对于包含多个源文件的程序可以有多个ENTRY,但在一个源文件中最多只有一个ENTRY。 END伪指令告知编译器该源文件已结束。 子程序一般用来处理重复执行的代码,

4、以降低程序的复杂程度和代码的长度。调用一个子程序,可使用一个跳转和链接指令。语法:BL destinationCopyright 汇编语言程序的基本结构 AREA START ,code,readwrite export Reset_Handler code32num equ 2 ENTRY Reset_Handler mov r0,#0 mov r1,#3 move r2,#2 bl arithfuncStop b stoparithfunc cmp r0,#numCopyright 汇编语言程序的基本结构bhs DoAdd adr r3,JumpTable ldr pc,r3,r0,LSL

5、 #2JumpTable dcd DoAdd dcd DoSubDoAdd add r0,r1,r2 bx lrDoSub sub r0,r1,r2 bx lr ENDCopyright 汇编语言程序的基本结构 宏 宏必须定义后在使用; 宏定义从MACRO 伪指令开始,到END 伪指令结束;Copyright 汇编输出文件 输出文件的位置可以在option for Target对话框的output和Listing页中设置。 默认情况下,每个输出文件具有与源文件相同的文件名,然后各有不同的扩展名,主要的文件有列表文件(.LST)和目标文件(.OBJ)。 列表文件包含格式化的源代码及由汇编器检查到

6、的任何错误。 目标文件包含可重定位的目标代码,目标模块可以由armlink连接器连接成一个绝对目标模块。Copyright 列表文件 页眉。 源码表。 行号 、当前段中地址计数器的值、产生的目标代码、对应的源代码 命令行 符号表:可重定位符号、绝对符号、外部符号汇总 ,包含符号的名、值、在哪里定义、在何处被使用,使用几次、共有多少符号以及一些警告提示信息。Copyright 目标文件 为全局变量保留的内存 公有符号(变量和函数)的名字 外部符号(变量和函数)引用 链接的库文件 调试信息、以将源代码行与目标代码同步Copyright 汇编命令 -arm 指示汇编器将指令解释为ARM指令。 -bi

7、gend或-bi 指示汇编器生成大端模式的代码。 -brief_diagnostics 允许使用更短的诊断信息输出模式。 -littleend 或li 指示汇编器生成适合小端模式的代码。 -checkreglist 指示汇编器核查寄存器列表,确保这些寄存器是按标号递增排列的。若不是按顺序排列,将会产生一个警告信息。 -debug 指示汇编器生成DWARF调试表。Copyright 符号的命名规则 符号名在其作用范围内必须是唯一的。 可以在符号名称中使用大小写字母,数字字符或下划线字符;符号名称区分大小写,而且符号名称中的所有字符都是有效的。 除了在局部符号中外请不要使用数字作为符号名称的第一个

8、字符。 符号不得使用内置变量名或预定义符号名。 最好不要使用与指令和伪指令助记符相同的符号名。如果需要,应使用双竖杠来定界符号名。 禁止使用符号|$a|,|$t|,|$t.x|或|$d|做为符号。这些符号是用来在目标文件中标记ARM,Thumb,ThumbEE和数据的映射符号。Copyright 变量和常数 在ARM汇编语言中有3种类型的变量:数字,逻辑量和字符串。 使用GBLA,GBLL,GBLS,LCLA,LCLL和LCLS伪指令声明各种变量的符号,使用SETA,SETL和SETS伪指令为其赋值。 变量一旦定义,其类型不能改变。 数字变量及常数的取值范围为32位的整数。数字常数用伪指令EQU定义。 逻辑变量及常数的取值范围是TRUE或FALSE。 字符串变量的取值范围是允许使用0-255的任何ASCII码字符,字符串表达式的长度不能超过512个字符,但长度可以是0。Copyright 一元运算符 一元运算符拥有最高的优先级,优先于其他运算符,并且首先求值。对相邻的一元运算符从右到左求值。 返回字符串的一元运算符 返回数值或逻辑值的一元运算符Copyright 二元运算符 二元运算符放在运算的一对子表达式之间,二元运算符的优先级比一元运算符低。 乘除法运算符。 字符串操作运算符。 移位运算符。 关系运算符。 布尔运算符。Copyright 表达

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论