第4章 ARM程序设计基础-伪指令2.pptVIP

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 ARM程序设计基础-伪指令2

Assemble Language of ARM 第4章 ARM程序设计基础 4.2 汇编语言的语句格式 ARM(Thumb)汇编语言的语句格式为: {标号} {指令或伪指令} {;注释} 标号必须从一行的行头开始,并且符号中不能包含空格。 指令不能从一行的行头开始,即在一行语句中,指令的前面必须有空格或者标号。 在汇编语言程序设计中,每一条指令的助记符可以全部用大写、或全部用小写,但不允许在一条指令中大、小写混用。 寄存器可以大写或小写。 伪指令有些必须在一行的开头顶格书写,另外一些必须留有空格。 注释以分号“;”开头,到行末结束。 如果一条语句太长,可将该长语句分为若干行来书写,在行的末尾用“\”表示下一行与本行为同一条语句。 在源程序中,语句之间可以插入空行,增强可读性。 汇编语言的源程序主要由指令、伪指令、语句标号和注释组成。 指令:一条指令一般是一个简短的汇编语句行,由指令助记符和操作数、操作寄存器或语句标号组成。 伪指令: 通过伪指令把设计意图表达给编译器,编译器依据这些伪指令,组织、编译和连接程序; 大多数伪指令在编译后都不留痕迹。 语句标号:语句标号的主要作用有两个: 一是表达地址; 二是为一段语句命名,以方便记忆和阅读。 注释:注释是为了方便阅读和记忆。 4.2.1 在汇编语言程序中常用的符号 在汇编语言程序设计中,经常使用各种符号代替地址、变量和常量等,以增加程序的可读性。 尽管符号的命名由编程者决定,但并不是任意的,必须遵循以下的约定: 符号由大小写字母、数字以及下划线组成; 局部标号以数字开头,其他的符号都不能以数字开头; 符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号; 符号在其作用范围内必须唯一; 自定义的符号名不能与系统的保留字相同; 符号名不应与指令或伪指令同名。 1、? 程序中的变量 ?程序中的变量是指其值在程序的运行过程中可以改变的量。ARM(Thumb)汇编程序所支持的变量有数字变量、逻辑变量和字符串变量。 数字变量用于在程序的运行中保存数字值,但注意数字值的大小不应超出数字变量所能表示的范围。 逻辑变量用于在程序的运行中保存逻辑值,逻辑值只有两种取值情况:真{true}或假{false}。 字符串变量用于在程序的运行中保存一个字符串,但注意字符串的长度不应超出字符串变量所能表示的范围。 在ARM(Thumb)汇编语言程序设计中,可使用GBLA、GBLL、GBLS伪指令声明全局变量;使用LCLA、LCLL、LCLS伪指令声明局部变量;并可使用SETA、SETL和SETS对其进行初始化。 2、? 程序中的常量 程序中的常量是指其值在程序的运行过程中不能被改变的量。ARM(Thumb)汇编程序所支持的常量有数字常量、逻辑常量和字符串常量。 数字常量一般为32位的整数,当作为无符号数时,其取值范围为0~232-1;当作为有符号数时,其取值范围为-231~231-1。 逻辑常量只有两种取值情况:真或假。 字符串常量为一个固定的字符串,一般用于程序运行时的信息提示。 使用EQU来定义数字常量。 3、? 程序中的变量替换 程序中的变量可通过替换操作取得一个常量。 替换操作符为“$”。 如果在数字变量前面有一个代换操作符“$”,编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串替换“$”后的数字变量。 如果在逻辑变量前面有一个替换操作符“$”,编译器会将该逻辑变量替换为它的取值(真或假)。 如果在字符串变量前面有一个替换操作符“$”,编译器会将该字符串变量的值替换“$”后的字符串变量。 使用示例: ??? LCLS S1 ;定义局部字符串变量S1和S2 ??? LCLS S2 ??? S1 SETS “Test!” ??? S2 SETS “This is a $S1” ;字符串变量S2的值为“This is a Test!” 变量替换的特殊情况: 如果需要字符$,则用$$来表示。 包含在两个竖线(|)之间的$不进行变量替换,但如果竖线是在双引号内,则将进行变量替换。 使用“.”来表示变量名称的结束。 例如 STR1 SETS “STRING” STR2 SETS “THISISA$STR1.INSETENCE” 4、标号 标号是表示程序中的指令或数据地址的符号,主要有三种: 基于PC的标号 是位于目标指令前或者程序中数据定义伪操作前的标号。 被处理成PC值加上或减去一个数字常量。 基于寄存器的标号 通常用MAP和FIELD伪操作定义,或用EQU伪操作定义。 被处理成寄存器的值加上或减去一个数字常量。 绝对地址 绝对地址是一个32位的数字量。 寻址范围为0~231-1,即可以寻址整个内存空间。 5、局

文档评论(0)

yaocen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档