符號定義偽指令

2021-07-10 16:20:36 字數 1993 閱讀 7749

符號定義偽指令用於定義 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...