符號定義偽指令用於定義 arm 匯程式設計序中的變數、對變數賦值以及定義暫存器的別名等操作。
常見的符號定義偽指令有如下幾種:
a.用於定義全域性變數的 gbla 、 gbll 和 gbls
b. 用於定義區域性變數的 lcla 、 lcll 和 lcls
c.用於對變數賦值的 seta 、 setl 、 sets
d.為通用暫存器列表定義名稱的 rlist
1. gbla、gbll 和gbls
語法格式:
gbla ( gbll 或 gbls ) 全域性變數名
gbla 、 gbll 和 gbls 偽指令用於定義乙個 arm 程式中的全域性變數,並將其初始化。其中:
gbla 偽指令用於定義乙個全域性的數字變數,並初始化為 0 ;
gbll 偽指令用於定義乙個全域性的邏輯變數,並初始化為 f (假);
gbls 偽指令用於定義乙個全域性的字串變數,並初始化為空;
由於以上三條偽指令用於定義全域性變數,因此在整個程式範圍內變數名必須唯一。
使用示例:
gbla test1 ;定義乙個全域性的數字變數,變數名為 test1
test1 seta 0xaa ;將該變數賦值為 0xaa
gbll test2 ;定義乙個全域性的邏輯變數,變數名為 test2
test2 setl ;將該變數賦值為真
gbls test3 ;定義乙個全域性的字串變數,變數名為 test3
test3 sets 「 testing 」 ;將該變數賦值為 「 testing 」
2. lcla、lcll 和lcls
語法格式:
lcla ( lcll 或 lcls ) 區域性變數名
lcla 、 lcll 和 lcls 偽指令用於定義乙個 arm 程式中的區域性變數,並將 其初始化。其中:
lcla 偽指令用於定義乙個區域性的數字變數,並初始化為 0 ;
lcll 偽指令用於定義乙個區域性的邏輯變數,並初始化為 f (假);
lcls 偽指令用於定義乙個區域性的字串變數,並初始化為空;
以上三條偽指令用於宣告區域性變數,在其作用範圍內變數名必須唯一。
使用示例:
lcla test4 ;宣告乙個區域性的數字變數,變數名為 test4
test3 seta 0xaa ;將該變數賦值為 0xaa
lcll test5 ;宣告乙個區域性的邏輯變數,變數名為 test5
test4 setl ;將該變數賦值為真
lcls test6 ;定義乙個區域性的字串變數,變數名為 test6
test6 sets 「 testing 」 ;將該變數賦值為 「 testing 」
3. seta、setl 和sets
語法格式:
變數名 seta ( setl 或 sets ) 表示式
偽指令 seta、setl、sets用於給乙個已經定義的全域性變數或區域性變數賦值。
seta 偽指令用於給乙個數學變數賦值;
setl 偽指令用於給乙個邏輯變數賦值;
sets 偽指令用於給乙個字串變數賦值;
其中,變數名為已經定義過的全域性變數或區域性變數,表示式為將要賦給變數的值。
使用示例:
lcla test3 ;宣告乙個區域性的數字變數,變數名為 test3
test3 seta 0xaa ;將該變數賦值為 0xaa
lcll test4 ;宣告乙個區域性的邏輯變數,變數名為 test4
test4 setl ;將該變數賦值為真
4. rlist
語法格式:
名稱 rlist
rlist 偽指令可用於對乙個通用暫存器列表定義名稱,使用該偽指令定義的名稱可在 arm 指令 ldm/stm 中使用。在 ldm/stm 指令中,列表中的暫存器訪問次序為根據暫存器的編號由低到高,而與列表中的暫存器排列次序無關。
使用示例:
reglist rlist ;將暫存器列表名稱定義為 reglist ,可在 arm 指令 ldm/stm中通過該名稱訪問暫存器列表。
彙編偽指令注釋
彙編偽指令注釋 1 ds 預留儲存區命令 格式 標號 ds 表示式值 其功能是從指定位址開始,定義乙個儲存區,以備源程式使用。儲存區預留的儲存單元數由表示式的值決定。tmp ds 1 從標號tep位址處開始保留1個儲存單元 位元組 2 bit 定義位命令 其功能用於給字元名稱定義位位址。spk bi...
彙編偽指令注釋
1 ds 預留儲存區命令 格式 標號 ds 表示式值 其功能是從指定位址開始,定義乙個儲存區,以備源程式使用。儲存區預留的儲存單元數由表示式的值決定。tmp ds 1 從標號tep位址處開始保留1個儲存單元 位元組 2 bit 定義位命令 其功能用於給字元名稱定義位位址。spk bit p3.7 經...
彙編assume 偽指令
這幾天在看王爽大大的 組合語言。對於assume偽指令卻很是不懂。比如已經定義了assume cs code,ds data 但用debug觀察的時候,發現ds段暫存器卻沒有相關聯的資料。必須在cs中寫明 mov ax,data mov ds,ax 然後才能發現ds中有正確的資料。於是疑惑,assu...