微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM汇编程序设计之:汇编语言文件格式

ARM汇编程序设计之:汇编语言文件格式

时间:08-30 来源:3721RD 点击:

几种形式。

· 十进制数(decimal-digis)

· "0x"+ 十六进制数(0xhexadecimal-digits)

· "&"+ 十六进制数(&hexadecimal-digits)

· n进制数(n_base-n-digits)

· 字符(character)

其中,十进制数(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的ASCII码)存入寄存器

ADD r3,r2,#'\'' ;将整数39(字符"/"的ASCII码)加到r2,结果存入r3

3.浮点数字量表达式

浮点数字量有以下几种形式。

· {-}digitsE{-}digits。

· {-}{digits}.digits{E{-}digits}。

· 0xhexdigits。

· &hexdigits。

其中,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"运算符。

5.程序或寄存器相关表达式

寄存器相关表达式的值等于指定寄存器的值加上或减去一个数字表达式。

程序相关表达式的值等于程序计数器PC的值加上或减去一个数字表达式的值。此种表达式通常由程序中的标号与一个数字表达式组成。

下面的例子说明了程序或寄存器相关表达式的基本使用方法。

LDR r4,=data+4*n ;n 是汇编时取值变量

; code

MOV pc,lr

data DCD value0

; n-1 个DCD 伪操作

DCD valuen ;data+4*n 指向此

;更多DCD伪操作

6.汇编中的操作符

(1)操作符的优先级

在汇编语言程序设计中,表达式包含一个扩展的操作符集,这些操作符和高级语言中的运算符十分接近。其运算次序遵循如下的优先级。

① 优先级相同的双目运算符的运算顺序为从左到右。

② 相邻的单目运算符的运算顺序为从右到左,单目运算符的优先级高于其他运算符。

③ 括号运算符的优先级最高。

汇编语法的操作符优先级和C语言中的不完全相同。例如在汇编中,下面的汇编语言

(1+2∶SHR∶3)相当于(1+(2∶SHR∶3)),而在C语言中,运算则变为((1+2)>>3)=0。类似于这样的操作,在使用时要特别注意。

注意

为了保证表达式运算结果的正确,建议使用"()"来避免异义。

表10.4列出了汇编操作符的优先级以及对应的C语言运算符。

表10.4 汇编操作符优先级

汇编操作符

C语言运算符

单目运算

单目运算

* / :MOD:

* / %

字符串操作

n/a

:SHL::SHR::ROR::ROL:

<< >>

+ - :AND: :OR: :EOR:

+ - $ |

= > >= < <= /= <>

== > >= < <= !=

:LAND: :LOR: :LEOR:

&& ||

说明

表10.3是按操作符的优先级从上到下排列的。

C语言运算符优先级从高到低排列如下。

· 单目运算

· * / %

· + - (as binary operators)

· << >>

· < <= > >=

· == !=

· &

· ^

· |

· &&

· ||

(2)单目运算

最高优先级的单目运算在

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top