新聞中心

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

ARM匯編程序設(shè)計(jì)之:匯編語(yǔ)言文件格式

作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://www.butianyuan.cn/article/257046.htm

3.浮點(diǎn)數(shù)字量表達(dá)式

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

·{-}digitsE{-}digits。

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

·0xhexdigits。

·hexdigits。

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

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

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

DCFD1E308,-4E-100

DCFS1.0

DCFD3.725e15

LDFS0x7FC00000;

LDFDFFF0000000000000;

4.邏輯表達(dá)式

邏輯表達(dá)式一般由邏輯量、邏輯運(yùn)算符和括號(hào)構(gòu)成,其表達(dá)式的運(yùn)算結(jié)果為真或假。與邏輯表達(dá)式相關(guān)的運(yùn)算符有“=”、“>”、“”、“>=”、“=”、“/=”、“>”運(yùn)算符和“LAND”、“LOR”、“LNOT”及“LEOR”運(yùn)算符。

5.程序或寄存器相關(guān)表達(dá)式

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

程序相關(guān)表達(dá)式的值等于程序計(jì)數(shù)器PC的值加上或減去一個(gè)數(shù)字表達(dá)式的值。此種表達(dá)式通常由程序中的標(biāo)號(hào)與一個(gè)數(shù)字表達(dá)式組成。

下面的例子說(shuō)明了程序或寄存器相關(guān)表達(dá)式的基本使用方法。

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

;code

MOVpc,lr

dataDCDvalue0

;n-1個(gè)DCD偽操作

DCDvaluen ;data+4*n指向此

;更多DCD偽操作

6.匯編中的操作符

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

在匯編語(yǔ)言程序設(shè)計(jì)中,表達(dá)式包含一個(gè)擴(kuò)展的操作符集,這些操作符和高級(jí)語(yǔ)言中的運(yùn)算符十分接近。其運(yùn)算次序遵循如下的優(yōu)先級(jí)。

①優(yōu)先級(jí)相同的雙目運(yùn)算符的運(yùn)算順序?yàn)閺淖蟮接摇?/p>

②相鄰的單目運(yùn)算符的運(yùn)算順序?yàn)閺挠业阶?,單目運(yùn)算符的優(yōu)先級(jí)高于其他運(yùn)算符。

③括號(hào)運(yùn)算符的優(yōu)先級(jí)最高。

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

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

注意

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

表10.4列出了匯編操作符的優(yōu)先級(jí)以及對(duì)應(yīng)的C語(yǔ)言運(yùn)算符。

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

匯編操作符

C語(yǔ)言運(yùn)算符

單目運(yùn)算

單目運(yùn)算

*/:MOD:

*/%

字符串操作

n/a

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

>>

+-:AND::OR::EOR:

+-$|

=>>==/=>

==>>==!=

:LAND::LOR::LEOR:

||

說(shuō)明

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

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

·單目運(yùn)算

·*/%

·+-(asbinaryoperators)

·>>

·=>>=

·==!=

·

·^

·|

·

·||

(2)單目運(yùn)算

最高優(yōu)先級(jí)的單目運(yùn)算在表達(dá)式中最先被計(jì)算。單目操作符寫在操作數(shù)的前面。運(yùn)算順序?yàn)閺挠业阶蟆?/p>

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

表10.5 匯編中單目運(yùn)算操作符及其返回值。

操作符

使用

描述

:CHR:

:CHR:A

返回字母A的ASCII碼

:LOWERCASE

:LOWERCASE:string

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

REVERSE_CC

:REVERSE_CC:cond_code

對(duì)條件碼取反

:STR:

:STR:A

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

:UPPERCASE:

:UPPERCASE:string

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

?

?A

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

續(xù)表

操作符

使用

描述

+和-

+A和-A

單目加和單目減,操作數(shù)為數(shù)學(xué)或程序相關(guān)表達(dá)式

:BASE:

:BASE:A

如果A是程序或寄存器相關(guān)表達(dá)式,:BASE:返回基址寄存器的編號(hào)

:CC_ENCODING:

:CC_ENCODING:cond_code

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

:DEF:

:DEF:A

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

:INDEX:

:INDEX:A

如果A是寄存器相關(guān)表達(dá)式,:INDEX:返回A相對(duì)于寄存器的偏移量,常用在宏操作中

:LEN:

:LEN:A

字符串A的長(zhǎng)

:LNOT:

:LNOT:A

邏輯表達(dá)式A的值取反

:NOT:

:NOT:A

~A

A的值按位取反

:RCONT:

:RCONT:Rn

返回寄存器編號(hào),0~15對(duì)應(yīng)寄存器r0~r15



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉