赞
踩
在汇编语言程序设计中,也经常使用各种表达式,表达式一般由变量、常量、运算符和括号构成。常用的表达式有数字表达式、逻辑表达式和字符串表达式。
下面分别介绍表达式中的各元素。
(1)字符串表达式
字符串表达式一般由字符串常量、字符串变量、运算符和括号构成。字符串由包含在双引号内的一系列字符组成。编译器所支持的字符串最大长度为512字节。
当在字符串中包含“$”或引号时,可以用“$$”表示“$”,用两个双引号表示一个双引号。
例如:
- abc SETS "one""double quote"
- def SETS "one$$dollar symbol"
上面的例子分别将字符串abc和def赋值为“one " double quote”和“one $ dollar symbol”。
字符串可以通过SETA、SETL、SETS伪操作对其赋值。
常用的与字符串表达式相关的运算符如下。
下面的例子说明了如何使用字符串操作符给字符串变量赋值。
improb SETS "literal":CC:(strvar2:LEFT:4)
这个例子将字符串赋值为“literalatrv”。
(2)整数表达式
整数表达式一般由数字常量、数字变量、数字运算符和括号构成。
整数表示式可以包含寄存器相关(register-relative)或程序相关(program-relative)表达式,这些表达式在编译时被汇编器翻译为地址无关数字常量。
整数表达式一般被计算为32位的整数,当此整数被定义为无符号数时,其取值范围为0~232-1,当被定义为有符号数时,其取值范围为-231~231-1。汇编器认为-n和232-n是相等的。对于关系操作,如比较两个数的大小,汇编器将其操作数看做无符号的数。也就是说“0>-1”,对汇编器来说取值为“假({FLASE})”。
下面的例子说明了在程序中,如何对整数表达式进行操作。
- a SETA 256*256 ;将数字变量赋值为 256*256
- MOV r1,#(a*22) ; 将数字表达式(a*22) 的值放入r1
汇编语言中,整数数字量有以下几种形式。
其中,十进制数(decimal-digis)可以是数字“0”到“9”的任意组合;十六进制数(hexadecimal-digits)可以是数字“0”到“9”和字母“A”到“F”的任意组合;“n_”可以取数字2到9,“base-n-digits”是在n进制下合法的任意数值;字符(character)可以是除单引号以外的所有字符。
下面的例子说明了整数表达式的基本用法。
- a SETA 34906
- addr DCD 0xA10E
- LDR r4,=&1000000F
- DCD 2_11001010
- c3 SETA 8_74007
- DCQ 0x0123456789abcdef
- LDR r1,='A' ;ARM伪指令将整数65(A的ASICII码)存入寄存器
- ADD r3,r2,#'\''; 将整数39(字符“/”的ASICII码)加到r2,结果存入r3
(3)浮点数字量表达式
浮点数字量有以下几种形式。
其中,digits为十进制数,要在其后加上字母E(大写或小写)来表示其指数;hexdigits为十六进制数。
单精度浮点数的表示范围为1.17549435e–38~3.40282347e+38;双精度浮点数的表示范围为2.22507385850720138e–308~1.79769313486231571e+308。
下面的例子说明了浮点数据量的基本用法。
- DCFD 1E308,-4E-100
- DCFS 1.0
- DCFD 3.725e15
- LDFS 0x7FC00000
- LDFD &FFF0000000000000
(4)逻辑表达式
逻辑表达式一般由逻辑量、逻辑运算符和括号构成,其表达式的运算结果为真或假。与逻辑表达式相关的运算符有“=”、“>”、“<”、“>=”、“<=”、“/=”、“ <>” 运算符和“LAND”、“LOR”、“LNOT”及“LEOR”运算符。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。