新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM匯編程序設計之:匯編語言文件格式

ARM匯編程序設計之:匯編語言文件格式

作者: 時間:2013-09-30 來源:網(wǎng)絡 收藏

本文引用地址:http://2s4d.com/article/257046.htm

3.浮點數(shù)字量表達式

浮點數(shù)字量有以下幾種形式。

·{-}digitsE{-}digits。

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

·0xhexdigits。

·hexdigits。

其中,digits為十進制數(shù),要在其后加上字母E(大寫或小寫)來表示其指數(shù);hexdigits為十六進制數(shù)。

單精度浮點數(shù)的表示范圍為1.17549435e−38~3.40282347e+38;雙精度浮點數(shù)的表示范圍為2.22507385850720138e-308~1.79769313486231571e+308。

下面的例子說明了浮點數(shù)據(jù)量的基本用法。

DCFD1E308,-4E-100

DCFS1.0

DCFD3.725e15

LDFS0x7FC00000;

LDFDFFF0000000000000;

4.邏輯表達式

邏輯表達式一般由邏輯量、邏輯運算符和括號構成,其表達式的運算結(jié)果為真或假。與邏輯表達式相關的運算符有“=”、“>”、“”、“>=”、“=”、“/=”、“>”運算符和“LAND”、“LOR”、“LNOT”及“LEOR”運算符。

5.程序或寄存器相關表達式

寄存器相關表達式的值等于指定寄存器的值加上或減去一個數(shù)字表達式。

程序相關表達式的值等于程序計數(shù)器PC的值加上或減去一個數(shù)字表達式的值。此種表達式通常由程序中的標號與一個數(shù)字表達式組成。

下面的例子說明了程序或寄存器相關表達式的基本使用方法。

LDRr4,=data+4*n ;n是匯編時取值變量

;code

MOVpc,lr

dataDCDvalue0

;n-1個DCD偽操作

DCDvaluen ;data+4*n指向此

;更多DCD偽操作

6.匯編中的操作符

(1)操作符的優(yōu)先級

在匯編語言程序設計中,表達式包含一個擴展的操作符集,這些操作符和高級語言中的運算符十分接近。其運算次序遵循如下的優(yōu)先級。

①優(yōu)先級相同的雙目運算符的運算順序為從左到右。

②相鄰的單目運算符的運算順序為從右到左,單目運算符的優(yōu)先級高于其他運算符。

③括號運算符的優(yōu)先級最高。

匯編語法的操作符優(yōu)先級和C語言中的不完全相同。例如在匯編中,下面的匯編語言

(1+2∶SHR∶3)相當于(1+(2∶SHR∶3)),而在C語言中,運算則變?yōu)椋ǎ?+2)>>3)=0。類似于這樣的操作,在使用時要特別注意。

注意

為了保證表達式運算結(jié)果的正確,建議使用“()”來避免異義。

表10.4列出了匯編操作符的優(yōu)先級以及對應的C語言運算符。

表10.4 匯編操作符優(yōu)先級

匯編操作符

C語言運算符

單目運算

單目運算

*/:MOD:

*/%

字符串操作

n/a

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

>>

+-:AND::OR::EOR:

+-$|

=>>==/=>

==>>==!=

:LAND::LOR::LEOR:

||

說明

表10.3是按操作符的優(yōu)先級從上到下排列的。

C語言運算符優(yōu)先級從高到低排列如下。

·單目運算

·*/%

·+-(asbinaryoperators)

·>>

·=>>=

·==!=

·

·^

·|

·

·||

(2)單目運算

最高優(yōu)先級的單目運算在表達式中最先被計算。單目操作符寫在操作數(shù)的前面。運算順序為從右到左。

表10.5列出了匯編中單目運算操作符及其返回值。

表10.5 匯編中單目運算操作符及其返回值。

操作符

使用

描述

:CHR:

:CHR:A

返回字母A的ASCII碼

:LOWERCASE

:LOWERCASE:string

將給定字符串中的所有大寫字母變成小寫

REVERSE_CC

:REVERSE_CC:cond_code

對條件碼取反

:STR:

:STR:A

將一個數(shù)字量或邏輯表達式轉(zhuǎn)換成串

:UPPERCASE:

:UPPERCASE:string

將給定字符串中的所有小寫字母變成大寫

?A

返回定義符號A的代碼行所生產(chǎn)代碼行的字節(jié)數(shù)

續(xù)表

操作符

使用

描述

+和-

+A和-A

單目加和單目減,操作數(shù)為數(shù)學或程序相關表達式

:BASE:

:BASE:A

如果A是程序或寄存器相關表達式,:BASE:返回基址寄存器的編號

:CC_ENCODING:

:CC_ENCODING:cond_code

返回條件碼中的數(shù)字值

:DEF:

:DEF:A

判斷A是否被定義,如果被定義返回{TRUE};如果沒有定義返回{FALSE}

:INDEX:

:INDEX:A

如果A是寄存器相關表達式,:INDEX:返回A相對于寄存器的偏移量,常用在宏操作中

:LEN:

:LEN:A

字符串A的長

:LNOT:

:LNOT:A

邏輯表達式A的值取反

:NOT:

:NOT:A

~A

A的值按位取反

:RCONT:

:RCONT:Rn

返回寄存器編號,0~15對應寄存器r0~r15



評論


相關推薦

技術專區(qū)

關閉