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