新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM匯編程序設計之:ARM匯編器所支持的偽操作

        ARM匯編程序設計之:ARM匯編器所支持的偽操作

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

        本文引用地址:http://www.104case.com/article/257006.htm

        2.局部變量定義LCLA、LCLL和LCLS

        (1)語法格式

        LCLA、LCLL和LCLS偽指令用于定義一個程序中的局部變量并將其初始化。其中:

        LCLA用于定義一個局部的數字變量并初始化為0。

        LCLL用于定義一個局部的邏輯變量并初始化為F(假)。

        LCLS偽操作用于定義一個局部的字符串變量并初始化為空。

        以上三條偽操作用于聲明局部變量,在其作用范圍內變量名必須惟一。

        語法格式如下。

        lclx>variable>

        ①gblx>

        取值為LCLA、LCLL、LCLS之一。

        ②variable>

        所定義的局部變量名,在其作用范圍內必須惟一。局部變量作用范圍為包含該局部變量的宏。

        (2)使用說明

        如果用這些偽操作重新聲明已經聲明過的變量,則變量的值將被初始化成后一次聲明語句中的值。

        (3)示例

        ①使用偽操作聲明局部變量。

        LCLATest4 ;聲明一個局部的數字變量,變量名為Test4

        Test3SETA0xaa ;將該變量賦值為0xaa

        LCLLTest5 ;聲明一個局部的邏輯變量,變量名為Test5

        Test4SETL{TRUE} ;將該變量賦值為真

        LCLSTest6 ;定義一個局部的字符串變量,變量名為Test6

        Test6SETSTesting ;將該變量賦值為“Testing”

        ②下面的例子定義一個宏,顯示了局部變量的作用范圍。

        MACRO ;聲明一個宏

        $labelmessage$a ;宏原型

        LCLSerr ;聲明局部字符串變量

        $label

        INFO0,err:CC::STR:$a

        MEND ;宏結束,局部變量不再起作用

        3.變量賦值偽操作SETA、SETL和SETS

        (1)語法格式

        偽指令SETA、SETL和SETS用于給一個已經定義的全局變量或局部變量賦值。

        SETA偽操作用于給一個數學變量賦值;

        SETL偽操作用于給一個邏輯變量賦值;

        SETS偽操作用于給一個字符串變量賦值;

        語法格式如下。

        Variablesetx>expr

        ①Variable

        變量名為已經定義過的全局變量或局部變量,表達式為將要賦給變量的值。

        ②setx>

        取值為SETA、SETL、SETS之一。

        ③expr

        數學、邏輯或字符串表達式,也就是將要賦予變量的值。

        (2)使用說明

        在向變量賦值前必須先聲明變量。

        也可以在匯編指令中預定義變量,如:

        Armasm--pdobjectsizeSETAoxff--oobjectfilesourcefile

        (3)示例

        ①為預先定義的變量賦值。

        LCLATest3 ;聲明一個局部的數字變量,變量名為Test3

        Test3SETA0xaa ;將該變量賦值為0xaa

        LCLLTest4 ;聲明一個局部的邏輯變量,變量名為Test4

        Test4SETL{TRUE} ;將該變量賦值為真

        LCLSTest6 ;定義一個局部的字符串變量,變量名為Test6

        Test6SETSTesting ;將該變量賦值為“Testing”

        ②使用變量賦值偽操作,定義一些程序相關內容。

        GBLAversionNumber

        VersionNumber SETA21

        GBLLDebug

        Debug SETL{TRUE}

        GBLS versionString

        VersionString SETSversion1.0

        4.通用寄存器列表定義偽操作RLIST

        (1)語法格式

        RLIST偽操作可用于對一個通用寄存器列表定義名稱,使用該偽操作定義的名稱可在指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器訪問次序根據寄存器的編號由低到高,與列表中的寄存器排列次序無關。

        語法格式如下。

        NameRLIST{list-of-registers}

        ①Name

        寄存器列表的名稱。

        注意

        該名稱不能和已經定義寄存器或協處理器名稱相同。

        ②list-of-registers

        通用寄存器列表。列表中的寄存器用“,”隔開,如果是編號連續的通用寄存器可以用“-”指定寄存器范圍。具體用法參見程序示例。

        (2)使用說明

        在使用匯編編譯器編譯源文件時,可以使用“-checkreg”選項來指定進行寄存器檢查。如果檢測到寄存器列表中的寄存器編號非升序排列,將給出編譯警告。

        (3)示例

        ①將寄存器列表名稱定義為RegList,可在ARM指令LDM/STM中通過該名稱訪問寄存器列表。

        RegListRLIST{R0-R5,R8,R10};

        ②使用“-”在寄存器列表中,指定寄存器范圍。

        ContextRLIST{r0-r6,r8,r10-r12,r15} ;



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 成安县| 繁昌县| 石景山区| 长阳| 察哈| 松江区| 鹤壁市| 鲜城| 东安县| 天柱县| 台山市| 海兴县| 长乐市| 湖南省| 黄陵县| 舞钢市| 灯塔市| 彰武县| 玛沁县| 昆明市| 武宣县| 周口市| 宣化县| 固阳县| 桃园市| 鲁山县| 宿松县| 靖西县| 临泉县| 水富县| 霸州市| 仙桃市| 衡水市| 射洪县| 孝义市| 泊头市| 尚志市| 徐汇区| 永州市| 玉溪市| 自治县|