• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

    作者: 時間:2013-09-30 來源:網絡 收藏

    本文引用地址:http://www.czjhyjcfj.com/article/257046.htm

    3.浮點數字量表達式

    浮點數字量有以下幾種形式。

    ·{-}digitsE{-}digits。

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

    ·0xhexdigits。

    ·hexdigits。

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

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

    下面的例子說明了浮點數據量的基本用法。

    DCFD1E308,-4E-100

    DCFS1.0

    DCFD3.725e15

    LDFS0x7FC00000;

    LDFDFFF0000000000000;

    4.邏輯表達式

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

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

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

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

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

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

    ;code

    MOVpc,lr

    dataDCDvalue0

    ;n-1個DCD偽操作

    DCDvaluen ;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語言運算符優先級從高到低排列如下。

    ·單目運算

    ·*/%

    ·+-(asbinaryoperators)

    ·>>

    ·=>>=

    ·==!=

    ·

    ·^

    ·|

    ·

    ·||

    (2)單目運算

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

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

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

    操作符

    使用

    描述

    :CHR:

    :CHR:A

    返回字母A的ASCII碼

    :LOWERCASE

    :LOWERCASE:string

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

    REVERSE_CC

    :REVERSE_CC:cond_code

    對條件碼取反

    :STR:

    :STR:A

    將一個數字量或邏輯表達式轉換成串

    :UPPERCASE:

    :UPPERCASE:string

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

    ?A

    返回定義符號A的代碼行所生產代碼行的字節數

    續表

    操作符

    使用

    描述

    +和-

    +A和-A

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

    :BASE:

    :BASE:A

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

    :CC_ENCODING:

    :CC_ENCODING:cond_code

    返回條件碼中的數字值

    :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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 定边县| 当阳市| 平舆县| 武义县| 峡江县| 阆中市| 临沂市| 咸宁市| 嵩明县| 南雄市| 手游| 米泉市| 民勤县| 红安县| 洛宁县| 林口县| 河南省| 乡宁县| 鲁甸县| 图们市| 河南省| 将乐县| 长汀县| 布尔津县| 诏安县| 东山县| 应用必备| 长兴县| 壶关县| 天津市| 吉林市| 大荔县| 呼伦贝尔市| 乃东县| 阳泉市| 二手房| 双桥区| 阿拉善左旗| 晋州市| 龙江县| 井冈山市|