第4章arm汇载编语言程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章arm汇载编语言程序设计

第4章ARM汇编语言程序设计 教学目的 掌握汇编语言程序的基本结构 掌握ARM汇编器的伪操作 掌握汇编语言程序的上机过程 教学内容 4.1汇编语言程序格式 4.2 ARM汇编器的伪操作 4.3汇编语言程序的上机过程 4.4汇编语言程序设计 4.5工作模式切换编程 4.6常用的使用规则 4.7 ARM和Thumb混合编程 4.8汇编语言和C语言交互编程 4.1汇编语言程序格式 4.1.1汇编语言的基本概念 4.1.2汇编语言源程序的组成 4.1.3汇编语言程序中常用的符号 4.1.4汇编语言程序中的表达式和运算符 4.1.1汇编语言的基本概念 4.1.2汇编语言源程序的组成 1.汇编语言源程序的结构 AREA Init,CODE,READONLY ENTRY Start LDR R0,=0x3FF5000 LDR R1,#0xFF STR R1,[R0] LDR R0,=0x3FF5008 LDR R1,#0x01 STRR1,[R0] … END 程序段 段是相对独立的指令或数据序列,具有特定的名称。 代码段 数据段 通用段 段具有一定的属性。 READONLY READWRITE 2.汇编语言的语句格式 [LABEL] OPERATION [OPERAND] [;COMMENT] 标号域 操作助记符域 操作数域 注释域 Start MOV R0,0x3F ;将立即数传送到寄存器R0 (1)标号域(Label) 标号域用来表示指令的地址、变量、过程名、数据的地址和常量。 标号是一个自行设计的标识符或名称,语句标号可以是大小写字母混合,通常以字母开头,由字母、数字、下划线等组成。 语句标号不能与寄存器名、指令助记符、伪指令(操作)助记符、变量名同名。 语句标号必须在一行的开头书写,不能留空格。 (2)操作助记符域(OPERATION) 操作助记符域可以为指令、伪操作、宏指令或伪指令的助记符。 ARM汇编器对大小写敏感,在汇编语言程序设计中,每一条指令的助记符可以全部用大写、或全部用小写,但不允许在一条指令中大、小写混用。 所有的指令都不能在行的开头书写,必须在指令的前面有空格,然后再书写指令。 指令助记符和后面的操作数或操作寄存器之间必须有空格,不可以在这之间使用逗号。 (3)操作数域(OPERAND) 操作数域表示操作的对象,操作数可以是常量、变量、标号、寄存器名或表达式,不同对象之间必须用逗号“,”分开。 课堂练习 判断指令格式正误 AREA EX3,CODE,READONLY GBLA DATA DATA SETA 0x20 ADD R0,R1,R2 ADD R0,R1,r2 add R0,R1,r2 Add R0,R1,r2 4.1.3汇编语言程序中常用的符号 在汇编语言程序设计中,经常使用各种符号表 示变量、常量和地址 符号由大小写字母、数字以及下划线组成。 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。 符号在其作用范围内必须唯一,即在其作用范围内不可有同名的符号。 自定义的符号名不能与系统的保留字相同。 符号名不应与指令或伪指令同名。 1.程序中的变量 变量的类型: 数值变量 逻辑变量 字符串变量 作用范围: 全局变量 局部变量 2.程序中的常量 ARM(Thumb)汇编程序所支持的常量有数值常量、逻辑常量和字符串常量。 数值常量一般为32位的整数,当作为无符号数时,其取值范围为0~232-1,当作为有符号数时,其取值范围为-231~231-1。在ARM汇编语言中,使用EQU来定义数 值常量。数值常量一经定义,其数值就不能再修改。 数值常量有下列表示方式: 十进制数:在表达式中可以直接表达。如1、2、345。 十六进制数:有两种表达方法,使用前缀0x,如0x003、0x001C,或使用前缀,如10F、134。这两种方法都是等效的。 n进制数:形如n_XXX,其中n的范围是2到9,XXX是具体数值。如: 8_247表示一个八进制数。 ASCII的表示:有些值可以使用ASCII表达, 例如:‘A’表达A的ASCII码。指令: MOV R1,#’B’ 等同于 MOV R1,#0x42。

文档评论(0)

186****0772 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档