欢迎来到天天文库
浏览记录
ID:39302842
大小:1020.10 KB
页数:164页
时间:2019-06-30
《ARM汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章ARM汇编语言程序设计教学目的掌握汇编语言程序的基本结构掌握ARM汇编器的伪操作掌握汇编语言程序的上机过程教学内容4.1汇编语言程序格式4.2ARM汇编器的伪操作4.3汇编语言程序的上机过程4.4汇编语言程序设计4.5工作模式切换编程4.6常用的使用规则4.7ARM和Thumb混合编程4.8汇编语言和C语言交互编程4.1汇编语言程序格式4.1.1汇编语言的基本概念4.1.2汇编语言源程序的组成4.1.3汇编语言程序中常用的符号4.1.4汇编语言程序中的表达式和运算符4.1.1汇编语言的基本概念4.1.2汇
2、编语言源程序的组成1.汇编语言源程序的结构AREAInit,CODE,READONLYENTRYStartLDRR0,=0x3FF5000LDRR1,#0xFFSTRR1,[R0]LDRR0,=0x3FF5008LDRR1,#0x01STRR1,[R0]…END程序段段是相对独立的指令或数据序列,具有特定的名称。代码段数据段通用段段具有一定的属性。READONLYREADWRITE2.汇编语言的语句格式[LABEL]OPERATION[OPERAND][;COMMENT]标号域操作助记符域操作数域注释域Star
3、tMOVR0,0x3F;将立即数传送到寄存器R0(1)标号域(Label)标号域用来表示指令的地址、变量、过程名、数据的地址和常量。标号是一个自行设计的标识符或名称,语句标号可以是大小写字母混合,通常以字母开头,由字母、数字、下划线等组成。语句标号不能与寄存器名、指令助记符、伪指令(操作)助记符、变量名同名。语句标号必须在一行的开头书写,不能留空格。(2)操作助记符域(OPERATION)操作助记符域可以为指令、伪操作、宏指令或伪指令的助记符。ARM汇编器对大小写敏感,在汇编语言程序设计中,每一条指令的助记符可
4、以全部用大写、或全部用小写,但不允许在一条指令中大、小写混用。所有的指令都不能在行的开头书写,必须在指令的前面有空格,然后再书写指令。指令助记符和后面的操作数或操作寄存器之间必须有空格,不可以在这之间使用逗号。(3)操作数域(OPERAND)操作数域表示操作的对象,操作数可以是常量、变量、标号、寄存器名或表达式,不同对象之间必须用逗号“,”分开。课堂练习判断指令格式正误AREAEX3,CODE,READONLYGBLADATADATASETA0x20ADDR0,R1,R2ADDR0,R1,r2addR0,R1,
5、r2AddR0,R1,r2前面必须有空格前面必须有空格DATA变量名前面不能留空格全部大写,正确寄存器小写,正确指令助记符小写,寄存器大写或小写,正确寄存器小写,正确;指令助记符大小写混合,不正确4.1.3汇编语言程序中常用的符号在汇编语言程序设计中,经常使用各种符号表示变量、常量和地址符号由大小写字母、数字以及下划线组成。符号区分大小写,同名的大、小写符号会被编译器认为是两个不同的符号。符号在其作用范围内必须唯一,即在其作用范围内不可有同名的符号。自定义的符号名不能与系统的保留字相同。符号名不应与指令或伪指令
6、同名。1.程序中的变量变量的类型:数值变量逻辑变量字符串变量作用范围:全局变量局部变量2.程序中的常量ARM(Thumb)汇编程序所支持的常量有数值常量、逻辑常量和字符串常量。数值常量一般为32位的整数,当作为无符号数时,其取值范围为0~232-1,当作为有符号数时,其取值范围为-231~231-1。在ARM汇编语言中,使用EQU来定义数值常量。数值常量一经定义,其数值就不能再修改。数值常量有下列表示方式:十进制数:在表达式中可以直接表达。如1、2、345。十六进制数:有两种表达方法,使用前缀0x,如0x003
7、、0x001C,或使用前缀&,如&10F、&134。这两种方法都是等效的。n进制数:形如n_XXX,其中n的范围是2到9,XXX是具体数值。如:8_247表示一个八进制数。ASCII的表示:有些值可以使用ASCII表达,例如:‘A’表达A的ASCII码。指令:MOVR1,#’B’等同于MOVR1,#0x42。逻辑常量只有两种取值情况:{TRUE}和{FALSE},注意带大括号。字符串常量为一个固定的字符串,一般用于程序运行时的信息提示。字符常量由单引号表示,包括C语言中的转义字符,如’’。字符串常量用双引号
8、表示,也包括C语言中的转义字符如“abcd xcr”。4.1.4汇编语言程序中的表达式和运算符数值表达式逻辑表达式字符串表达式表达式中各元素运算次序的优先级如下:括号运算符的优先级最高。相邻的单目运算符的运算顺序为从右到左,单目运算符的优先级高于其它运算符。优先级相同的双目运算符的运算顺序为从左到右。4.2ARM汇编器的伪操作区别:指令伪指令伪操作4.2ARM汇编器的伪操作4.2.
此文档下载收益归作者所有