arm彙編--變數

迷霧綠洲發表於2014-04-15

在程式設計中一個最常規的存在就是變數的操作,無論是迴圈控制、邏輯運算、條件判斷都必不可少的要用到變數操作

在彙編中其實也是和其他語言的程式不會有很大的區別的,變數的賦值、運算 都是很常見的應用

這裡就針對arm彙編的變數給出一個基本的操作方法

arm彙編中全域性變數宣告的關鍵字有這麼幾個

    GBLA ( GBLL 或 GBLS ) 全域性變數名   
    GBLA 、 GBLL 和 GBLS 偽指令用於定義一個 ARM 程式中的全域性變數,並將其初始化。其中:   
    GBLA 偽指令用於定義一個全域性的數字變數,並初始化為 0 ;   
    GBLL 偽指令用於定義一個全域性的邏輯變數,並初始化為 F (假);   
    GBLS 偽指令用於定義一個全域性的字串變數,並初始化為空;  

arm彙編中關於區域性變數的初始化
    LCLA ( LCLL 或 LCLS ) 區域性變數名   
    LCLA 、 LCLL 和 LCLS 偽指令用於定義一個 ARM 程式中的區域性變數,並將其初始化。其中:   
    LCLA 偽指令用於定義一個區域性的數字變數,並初始化為 0 ;   
    LCLL 偽指令用於定義一個區域性的邏輯變數,並初始化為 F (假);   
    LCLS 偽指令用於定義一個區域性的字串變數,並初始化為空;
arm彙編中關於變數初始化

    變數名 SETA ( SETL 或 SETS ) 表示式   
    偽指令 SETA 、 SETL 、 SETS 用於給一個已經定義的全域性變數或區域性變數賦值。   
    SETA 偽指令用於給一個數學變數賦值;   
    SETL 偽指令用於給一個邏輯變數賦值;   
    SETS 偽指令用於給一個字串變數賦值;
最後給一個變數和while迴圈的例子出來給大家參參考吧

                              GBLA  COU ;宣告變數
COU                     SETA 0x0     ;變數初始化

;MMU_TABLE_INIT            DCD mmu_table

mmu_table
                        WHILE  COU = 0xa;迴圈條件的判定
                        ldr r0,=0x0
                        HH r0,0,0,0,0
                        LDR r1,"COU";變數值的匯入

                        SUB r1 ,#1
                        STR COU,r1   ;變數儲存
                        ;ldr COU ,r1
                        WEND              ;迴圈結束


相關文章