微处理器系统结构与嵌入式系统设计第9章 ARM程序设计.ppt
常用运算符和表达式在汇编语言程序设计中,经常会使用各种表达式。表达式常用于各种变量的运算,一般由变量、常量、运算符和括号构成。常用表达式有数字表达式、逻辑表达式和字符串表达式,其运算次序遵循如下优先级。?优先级相同的双目运算符的运算顺序为从左到右;?相邻的单目运算符的运算顺序为从右到左,且单目运算符的优先级高于其他运算符;?括号运算符的优先级最高。算术/逻辑表达式及运算符算术/逻辑表达式由数字/逻辑变量、数字/逻辑常量、运算符和括号构成。X+Y和X-Y差X×Y乘X/Y除X:MOD:Y余运算次序的规定:?优先级相同的双目运算符的运算顺序为从左到右;?相邻的单目运算符的运算顺序为从右到左,且单目运算符 的优先级高于其他运算符;括号运算符的优先级最高。X:ROL:YX循环左移Y位X:ROR:YX循环右移Y位X:SHL:YX左移Y位X:SHR:YX右移Y位X:AND:Y按位逻辑与X:OR:Y按位逻辑或:NOT:Y按位逻辑非X:EOR:Y按位逻辑异或X=YX等于YXYX大于YXYX小于YX=YX大于等于YX=YX小于等于YX/=YX不等于YXYX不等于YX:LAND:Y逻辑与X:LOR:Y逻辑或:LNOT:Y逻辑非X:LEOR:Y逻辑异或*/52注意:这些运算在汇编过程中计算,机器码中出现的已经是表达式的值了。字符串表达式及运算符字符串表达式一般由字符串常量、字符串变量、运算符和括号构成。编译器支持的字符串最大长度为512字节。①LEN:X返回字符串X的长度(字符数)。②CHR:M将0~255之间的整数M转换为一个字符。③STR:X将数字或逻辑表达式X转换为一个字符串。对于数字表达式,STR运算得到一个以十六进制字符组成的字符串;对于逻辑表达式,STR运算得到字符串“T”或“F”。④X:LEFT:Y返回字符串X左端的一个子串。整数Y表示要返回的字符个数。⑤X:RIGHT:Y返回字符串X右端的一个子串。整数Y表示要返回的字符个数⑥X:CC:Y将字符串Y连接到字符串X的后面形成一个新字符串。**/52其它常用运算符③?X 返回定义符号X的代码行所生成的可执行代码的长度(字 节数)④:DEF:X 判断是否定义了符号X:如果符号X已经定义则结果为真,否则为假。①BASE:X 返回基于寄存器的表达式X中寄存器的编号。②INDEX:X 返回基于寄存器的表达式X中相对于其基址寄存器的偏移量。**/52ARM汇编语言程序结构ARM(Thumb)汇编语言程序中,以程序段(代码段和数据段)为单位组织代码。一个汇编程序至少应该有一个代码段。当程序较长时,可以分割为多个代码段和数据段,多个段在程序编译连接时最终形成一个可执行的映象文件。可执行映象文件通常由以下几部分构成:?一个或多个代码段,代码段的属性默认为READONLY。?零个或多个包含初始化数据的数据段,数据段的属性默认为 READWRITE。?零个或多个不包含初始化数据的数据段,数据段的属性为默认为 READWRITE。**/52ARM汇编语言程序结构示例GEToption.s GETaddr.s ……AREA Init,CODE,READONLY ENTRY spr MUL r1,r0,r0 ……AREA Data1,DATA,READWRITE num DCD 10 ……END 引用其它源文件代码段数据段定义代码段指定程序入口程序主体ARM汇编程序设计实例重点介绍如何用ARM汇编语言实现:顺序结构分支结构循环结构子程序调用与返回顺序结构-两个64位数相加AREAadd64,CODE,READONLYENTRYstart LDR R0,=data1;R0中保存data1的首地址 LDR R1,[R0] ;用寄存器间接寻址方式读数据1的高32位到R1 LDR R2,[R0,#4