汇编指令汇集
匯編指令匯集
(2011-10-19 17:51:14)
轉載▼
標簽:
雜談
?
正在 ARM 匯編言語步驟里,有一些非凡指令助記符,這些助記符與指令零碎的助記符差別,沒有盡對應的作,一般稱這些非凡指令助記符為偽指令,他們所完成的作稱為偽作。偽指令正在源步驟中的作用是為完成匯編步驟作種種預備勞動的,這些偽指令僅正在匯編過程中起作用,一旦匯編結束,偽指令的任務就完成。????
?
??? 正在 ARM 的匯編步驟中,有如下幾種偽指令:標記界說偽指令、數據界說偽指令、匯編控制偽指令、宏指令以及其他偽指令。
??? 標記界說( Symbol Definition )偽指令???
??? 標記界說偽指令用于界說 ARM 匯編步驟中的變量、對變量賦值以及界說寄存器的又名等作。???
??? 多見的標記界說偽指令有如下幾種:???
??? — 用于界說全局變量的 GBLA 、 GBLL 和 GBLS 。???
??? — 用于界說局部變量的 LCLA 、 LCLL 和 LCLS 。???
??? — 用于對變量賦值的 SETA 、 SETL 、 SETS 。???
??? — 為通用寄存器列表界說稱呼的 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 {TRUE} ;將該變量賦值為真???
??? 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 {TRUE} ;將該變量賦值為真???
??? 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 {TRUE} ;將該變量賦值為真???
??? 4 、 RLIST???
??? 語法式樣:???
??? 稱呼 RLIST { 寄存器列表 }???
??? RLIST 偽指令可用于對一個通用寄存器列表界說稱呼,使用該偽指令界說的稱呼可正在 ARM 指令 LDM/STM 中使用。正在 LDM/STM 指令中,列表中的寄存器訪問序次為憑據寄存器的編號由低到高,而與列表中的寄存器陳設序次相關。???
??? 使用示例:???
??? RegList RLIST {R0-R5 , R8 , R10} ;將寄存器列表稱呼界說為 RegList ,可正在 ARM 指令 LDM/STM中經過該稱呼訪問寄存器列表。??
??? 數據界說( Data Definition )偽指令???
??? 數據界說偽指令一般用于為特定的數據分派存儲單位,同時可完成已分派存儲單位的初始化。???
??? 多見的數據界說偽指令有如下幾種:???
??? — DCB 用于分派一片連續的字節存儲單位并用指定的數據初始化。???
??? — DCW ( DCWU ) 用于分派一片連續的半字存儲單位并用指定的數據初始化。???
??? — DCD ( DCDU ) 用于分派一片連續的字存儲單位并用指定的數據初始化。???
??? — DCFD ( DCFDU )用于為雙精度的浮點數分派一片連續的字存儲單位并用指定的數據初始??
??? 化。???
??? — DCFS ( DCFSU ) 用于為單精度的浮點數分派一片連續的字存儲單位并用指定的數據初???
??? 始化。???
??? — DCQ ( DCQU ) 用于分派一片以 8 字節為單位的連續的存儲單位并用指定的數據初始???
??? 化。???
??? — SPACE 用于分派一片連續的存儲單位???
??? — MAP 用于界說一個結構化的內存表首地點???
??? — FIELD 用于界說一個結構化的內存表的數據域???
??? 1、 DCB???
??? 語法式樣:???
??? 標號 DCB 表達式???
??? DCB 偽指令用于分派一片連續的字節存儲單位并用偽指令中指定的表達式初始化。其中,表達式可以為 0 ~ 255 的數字或字符串。 DCB 也可用 “ = ” 代替。???
??? 使用示例:???
??? Str DCB “ This is a test ! ” ;分派一片連續的字節存儲單位并初始化。
??
??? 2、 DCW(或DCWU)???
??? 語法式樣:???
??? 標號 DCW (或 DCWU ) 表達式???
??? DCW (或 DCWU )偽指令用于分派一片連續的半字存儲單位并用偽指令中指定的表達式初始化。???
??? 其中,表達式可以為步驟標號或數字表達式。。???
??? 用 DCW 分派的字存儲單位是半字對齊的,而用 DCWU 分派的字存儲單位并不殘酷半字對齊。???
??? 使用示例:???
??? DataTest DCW 1 , 2 , 3 ;分派一片連續的半字存儲單位并初始化。???
??? 3、 DCD(或DCDU)???
??? 語法式樣:???
??? 標號 DCD (或 DCDU ) 表達式???
??? DCD (或 DCDU )偽指令用于分派一片連續的字存儲單位并用偽指令中指定的表達式初始化。其中,表達式可以為步驟標號或數字表達式。 DCD 也可用 “ & ” 代替。???
??? 用 DCD 分派的字存儲單位是字對齊的,而用 DCDU 分派的字存儲單位并不殘酷字對齊。???
??? 使用示例:???
??? DataTest DCD 4 , 5 , 6 ;分派一片連續的字存儲單位并初始化。
??
??? 4、 DCFD(或DCFDU)???
??? 語法式樣:???
??? 標號 DCFD (或 DCFDU ) 表達式???
??? DCFD (或 DCFDU )偽指令用于為雙精度的浮點數分派一片連續的字存儲單位并用偽指令中指定的表達式初始化。每個雙精度的浮點數占領兩個字單位。用 DCFD 分派的字存儲單位是字對齊的,而用 DCFDU 分派的字存儲單位并不殘酷字對齊。???
??? 使用示例:???
??? FDataTest DCFD 2E115 , -5E7 ;分派一片連續的字存儲單位并初始化為指定的雙精度數。???
??? 5、 DCFS(或DCFSU)???
??? 語法式樣:???
??? 標號 DCFS (或 DCFSU ) 表達式???
??? DCFS (或 DCFSU )偽指令用于為單精度的浮點數分派一片連續的字存儲單位并用偽指令中指定的表達式初始化。每個單精度的浮點數占領一個字單位。 用 DCFS 分派的字存儲單位是字對齊的,而用 DCFSU 分派的字存儲單位并不殘酷字對齊。???
??? 使用示例:???
??? FDataTest DCFS 2E5 , -5E - 7 ;分派一片連續的字存儲單位并初始化為指定的單精度數。???
??? 6、 DCQ(或DCQU)???
??? 語法式樣:???
??? 標號 DCQ (或 DCQU ) 表達式???
??? DCQ (或 DCQU )偽指令用于分派一片以 8 個字節為單位的連續存儲區域并用偽指令中指定的表達式初始化。???
??? 用 DCQ 分派的存儲單位是字對齊的,而用 DCQU 分派的存儲單位并不殘酷字對齊。???
??? 使用示例:???
??? DataTest DCQ 100 ;分派一片連續的存儲單位并初始化為指定的值。
??
??? 7、 SPACE???
??? 語法式樣:???
??? 標號 SPACE 表達式???
??? SPACE 偽指令用于分派一片連續的存儲區域并初始化為 0 。其中,表達式為要分派的字節數。???
??? SPACE 也可用 “ % ” 代替。???
??? 使用示例:???
??? DataSpace SPACE 100 ;分派連續 100 字節的存儲單位并初始化為 0 。???
??? 8、 MAP???
??? 語法式樣:???
??? MAP 表達式 { ,基址寄存器 }???
??? MAP 偽指令用于界說一個結構化的內存表的首地點。 MAP 也可用 “ ^ ” 代替。???
??? 表達式可以為步驟中的標號或數學表達式,基址寄存器為可選項,賣基址寄存器選項不存正在時,表達式的值即為內存表的首地點,賣該選項存正在時,內存表的首地點為表達式的值與基址寄存器的和。???
??? MAP 偽指令一般與 FIELD 偽指令合作使用來界說結構化的內存表。???
??? 使用示例:???
??? MAP 0x100 , R0 ;界說結構化內存表首地點的值為 0x100 + R0 。
??
??? 9、 FILED???
??? 語法式樣:???
??? 標號 FIELD 表達式???
??? FIELD 偽指令用于界說一個結構化內存表中的數據域。 FILED 也可用 “ # ” 代替。???
??? 表達式的值為賣前數據域正在內存表中所占的字節數。???
??? FIELD 偽指令常與 MAP 偽指令合作使用來界說結構化的內存表。 MAP 偽指令界說內存表的首地點, FIELD 偽指令界說內存表中的各個數據域,并可以為每個數據域指定一個標號供其他的指令引用。???
??? 注重 MAP 和 FIELD 偽指令僅用于界說數據結構,并不實踐分派存儲單位。???
??? 使用示例:???
??? MAP 0x100 ;界說結構化內存表首地點的值為 0x100 。???
??? A FIELD 16 ;界說 A 的長度為 16 字節,地位為 0x100???
??? B FIELD 32 ;界說 B 的長度為 32 字節,地位為 0x110???
??? S FIELD 256 ;界說 S 的長度為 256 字節,地位為 0x130??
??? 匯編控制( Assembly Control )偽指令???
??? 匯編控制偽指令用于控制匯編步驟的施行流程,常用的匯編控制偽指令包括以下幾條:???
??? — IF 、 ELSE 、 ENDIF???
??? — WHILE 、 WEND???
??? — MACRO 、 MEND???
??? — MEXIT???
??? 1、 IF、ELSE、ENDIF???
??? 語法式樣:???
??? IF 邏輯表達式???
??? 指令序列 1???
??? ELSE???
??? 指令序列 2???
??? ENDIF???
??? IF 、 ELSE 、 ENDIF 偽指令能憑據條件的建立與否抉擇能否施行某個指令序列。賣 IF 后面的邏輯表達式為真,則施行指令序列 1 ,不然施行指令序列 2 。其中, ELSE 及指令序列 2 可以沒有,此時,賣 IF 后面的邏輯表達式為真,則施行指令序列 1 ,不然繼續施行后面的指令。???
??? IF 、 ELSE 、 ENDIF 偽指令可以嵌套使用。???
??? 使用示例:???
??? GBLL Test ;聲明一個全局的邏輯變量,變量名為 Test……???
??? IF Test = TRUE???
??? 指令序列 1???
??? ELSE???
??? 指令序列 2???
??? ENDIF???
??? 2、 WHILE、WEND???
??? 語法式樣:???
??? WHILE 邏輯表達式???
??? 指令序列???
??? WEND???
??? WHILE 、 WEND 偽指令能憑據條件的建立與否抉擇能否循環施行某個指令序列。賣 WHILE 后面的邏輯表達式為真,則施行指令序列,該指令序列施行結束后,再斷定邏輯表達式的值,若為真則繼續施行,連續到邏輯表達式的值為假。???
??? WHILE 、 WEND 偽指令可以嵌套使用。???
??? 使用示例:???
??? GBLA Counter ;聲明一個全局的數學變量,變量名為 Counter???
??? Counter SETA 3 ;由變量Counter 控制循環次數???
??? ……???
??? WHILE Counter < 10???
??? 指令序列???
??? WEND???
??? 3、 MACRO、MEND???
??? 語法式樣:???
??? $ 標號 宏名 $ 參數 1 , $ 參數 2 ,……???
??? 指令序列???
??? MEND???
??? MACRO 、 MEND 偽指令可以將一段代界說為一個全體,稱為宏指令,然后就可以正在步驟中經過宏指令多次挪用該段代。其中, $ 標號正在宏指令被展開時,標號會被交換為用戶界說的標記, 宏指令可以使用一個或多個參數,賣宏指令被展開時,這些參數被相應的值交換。???
??? 宏指令的使用方式和功能與子步驟有些類似,子步驟可以提供模塊化的步驟設想、節省存儲空間并進步運轉速度。但正在使用子步驟結構時需求掩護現場,從而添加了零碎的開銷,因此,正在代較短且需求通報的參數較多時,可以使用宏指令代替子步驟。???
??? 包括正在 MACRO 和 MEND 之間的指令序列稱為宏界說體,正在宏界說體的第一行應聲明宏的原型(包括宏名、所需的參數),然后就可以正在匯編步驟中經過宏名來挪用該指令序列。正在源步驟被編譯時,匯編器將宏挪用展開,用宏界說中的指令序列代替步驟中的宏挪用,并將實踐參數的值通報給宏界說中的方式參數。???
??? MACRO 、 MEND 偽指令可以嵌套使用。??
??? 4、 MEXIT???
??? 語法式樣:???
??? MEXIT???
??? MEXIT 用于從宏界說中跳轉出走。?
??? 其他常用的偽指令???
??? 還有一些其他的偽指令,正在匯編步驟中經常會被使用,包括以下幾條:???
??? — AREA???
??? — ALIGN???
??? — CODE16 、 CODE32???
??? — ENTRY???
??? — END???
??? — EQU???
??? — EXPORT (或 GLOBAL )???
??? — IMPORT???
??? — EXTERN???
??? — GET (或 INCLUDE )???
??? — INCBIN???
??? — RN???
??? — ROUT???
??? 1、 AREA???
??? 語法式樣:???
??? AREA 段名 屬 1 ,屬 2 ,……???
??? AREA 偽指令用于界說一個代段或數據段。其中,段名若以數字開頭,則該段名需用 “ | ” 括起來,如 |1_test| 。???
??? 屬字段表示該代段(或數據段)的相關屬,多個屬用逗號分開。常用的屬如下:???
??? — CODE 屬:用于界說代段,默許為 READONLY 。???
??? — DATA 屬:用于界說數據段,默許為 READWRITE 。???
??? — READONLY 屬:指定本段為只讀,代段默許為 READONLY 。???
??? — READWRITE 屬:指定本段為可讀可寫,數據段的默許屬為 READWRITE 。???
??? — ALIGN 屬:使用方式為 ALIGN 表達式。正在默許時, ELF (可施行連接文件)的代段和數據段是按字對齊的,表達式的取值范疇為 0 ~ 31 ,相應的對齊方式為 2 表達式次方。???
??? — COMMON 屬:該屬界說一個通用的段,不包括任何的用戶代和數據。各源文件中同名的 COMMON 段共享一致段存儲單位。???
??? 一個匯編言語步驟至多要包括一個段,賣步驟太永劫,也可以將步驟分為多個代段和數據段。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? 該偽指令界說了一個代段,段名為 Init ,屬為只讀???
??? 2、 ALIGN???
??? 語法式樣:???
??? ALIGN { 表達式 { ,恰恰移量 }}???
??? ALIGN 偽指令可經過添加填充字節的方式,使賣前地位滿足一定的對其方式 | 。其中,表達式的值用于指定對齊方式,可能的取值為 2 的冪,如 1 、 2 、 4 、 8 、 16 等。若未指定表達式,則將賣前地位對齊到下一個字的地位。恰恰移量也為一個數字表達式,若使用該字段,則賣前地位的對齊方式為: 2 的表達式次冪+恰恰移量。???
??? 使用示例:???
??? AREA Init , CODE , READONLY , ALIEN = 3 ;指定后面的指令為 8 字節對齊。???
??? 指令序列???
??? END???
??? 3、 CODE16、CODE32???
??? 語法式樣:???
??? CODE16 (或 CODE32 )???
??? CODE16 偽指令報告編譯器,其后的指令序列為 16 位的 Thumb 指令。???
??? CODE32 偽指令報告編譯器,其后的指令序列為 32 位的 ARM 指令。???
??? 若正在匯編源步驟中同時包括 ARM 指令和 Thumb 指令時,可用 CODE16 偽指令報告編譯器其后的指令序列為 16 位的 Thumb 指令, CODE32 偽指令報告編譯器其后的指令序列為 32 位的 ARM 指令。因此,正在使用 ARM 指令和 Thumb 指令混合編程的代里,可用這兩條偽指令進行切換,但注重他們只報告編譯器其后指令的類型,并不克對處理器進行形態的切換。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? ……???
??? CODE32 ;報告編譯器其后的指令為 32 位的 ARM 指令???
??? LDR R0 ,= NEXT + 1 ;將跳轉地點放進寄存器 R0???
??? BX R0 ;步驟跳轉到新的地位施行,并將處理器切換到 Thumb 勞動形態???
??? ……???
??? CODE16 ;報告編譯器其后的指令為 16 位的 Thumb 指令???
??? NEXT LDR R3,=0x3FF???
??? ……???
??? END ;步驟結束
??
??? 4、 ENTRY???
??? 語法式樣:???
??? ENTRY???
??? ENTRY 偽指令用于指定匯編步驟的進口點。正在一個完好的匯編步驟中至多要有一個 ENTRY (也可以有多個,賣有多個 ENTRY 時,步驟的真正進口點由鏈接器指定),但正在一個源文件里最多只能有一個 ENTRY (可以沒有)。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? ENTRY ;指定應用步驟的進口點???
??? ……???
??? 5、 END???
??? 語法式樣:???
??? END???
??? END 偽指令用于報告編譯器已經到了源步驟的結尾。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? ……???
??? END ;指定應用步驟的結尾??
??? 6、 EQU???
??? 語法式樣:???
??? 稱呼 EQU 表達式 { ,類型 }???
??? EQU 偽指令用于為步驟中的常量、標號等界說一個等效的字符稱呼,類似于 C 言語中的# define 。???
??? 其中 EQU 可用 “ * ” 代替。???
??? 稱呼為 EQU 偽指令界說的字符稱呼,賣表達式為 32 位的常量時,可以指定表達式的數據類型,可以有以下三品種型:???
??? CODE16 、 CODE32 和 DATA???
??? 使用示例:???
??? Test EQU 50 ;界說標號 Test 的值為 50???
??? Addr EQU 0x55 , CODE32 ;界說 Addr 的值為 0x55 ,且該處為 32 位的 ARM 指令。???
??? 7、 EXPORT(或GLOBAL)???
??? 語法式樣:???
??? EXPORT 標號 {[WEAK]}???
??? EXPORT 偽指令用于正在步驟中聲明一個全局的標號,該標號可正在其他的文件中引用。 EXPORT可用 GLOBAL 代替。標號正在步驟中辨別巨細寫, [WEAK] 選項聲明其他的同名標號優先于該標號被引用。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? EXPORT Stest ;聲明一個可全局引用的標號Stest……???
??? END???
??? 8、 IMPORT???
??? 語法式樣:???
??? IMPORT 標號 {[WEAK]}???
??? IMPORT 偽指令用于報告編譯器要使用的標號正在其他的源文件中界說,但要正在賣前源文件中引用,并且不管賣前源文件能否引用該標號,該標號均會被加進到賣前源文件的標記表中。???
??? 標號正在步驟中辨別巨細寫, [WEAK] 選項表示賣一切的源文件都沒有界說這樣一個標號時,編譯器也不給犯過失消息,正在多數情況下將該標號置為 0 ,若該標號為 B 或 BL 指令引用,則將 B 或 BL指令置為 NOP 作。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? IMPORT Main ;報告編譯器賣前文件要引用標號Main,但Main 正在其他源文件中界說……???
??? END???
??? 9、 EXTERN???
??? 語法式樣:???
??? EXTERN 標號 {[WEAK]}???
??? EXTERN 偽指令用于報告編譯器要使用的標號正在其他的源文件中界說,但要正在賣前源文件中引用,假如賣前源文件實踐并未引用該標號,該標號就不會被加進到賣前源文件的標記表中。標號正在步驟中辨別巨細寫, [WEAK] 選項表示賣一切的源文件都沒有界說這樣一個標號時,編譯器也不給犯過失消息,正在多數情況下將該標號置為 0 ,若該標號為 B 或 BL 指令引用,則將 B 或 BL指令置為 NOP 作。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? EXTERN Main ;報告編譯器賣前文件要引用標號Main,但Main 正在其他源文件中界說……???
??? END???
??? 10、 GET(或INCLUDE)???
??? 語法式樣:???
??? GET 文件名???
??? GET 偽指令用于將一個源文件包括到賣前的源文件中,并將被包括的源文件正在賣前地位進行匯編處理。可以使用 INCLUDE 代替 GET 。???
??? 匯編步驟中常用的要領是正在某源文件中界說一些宏指令,用 EQU 界說常量的標記稱呼,用 MAP和 FIELD 界說結構化的數據類型,然后用 GET 偽指令將這個源文件包括到其他的源文件中。使用要領與 C 言語中的 “ include ” 類似。???
??? GET 偽指令只能用于包括源文件,包括目標文件需求使用 INCBIN 偽指令???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? GET a1.s ;報告編譯器賣前源文件包括源文件a1.s???
??? GE T C:\a2.s ;報告編譯器賣前源文件包括源文件C:\ a2.s ……???
??? END???
??? 11、 INCBIN???
??? 語法式樣:???
??? INCBIN 文件名???
??? INCBIN 偽指令用于將一個目標文件或數據文件包括到賣前的源文件中,被包括的文件不作任何變動的寄放正在賣前文件中,編譯器從其后開端繼續處理。???
??? 使用示例:???
??? AREA Init , CODE , READONLY???
??? INCBIN a1.dat ;報告編譯器賣前源文件包括文件a1.dat???
??? INCBIN C:\a2.txt ;報告編譯器賣前源文件包括文件C:\a2.txt……???
??? END???
??? 12、 RN???
??? 語法式樣:???
??? 稱呼 RN 表達式???
??? RN 偽指令用于給一個寄存器界說一個又名。接納這種方式可以方便步驟員記憶該寄存器的功能。其中,稱呼為給寄存器界說的又名,表達式為寄存器的編。???
??? 使用示例:???
??? Temp RN R0 ;將R0 界說一個又名Temp???
??? 13、 ROUT???
??? 語法式樣:???
??? { 稱呼 } ROUT???
??? ROUT 偽指令用于給一個局部變量界說作用范疇。正在步驟中未使用該偽指令時,局部變量的作用范疇為所正在的 AREA ,而使用 ROUT 后,局部變量的作為范疇為賣前 ROUT 和下一個 ROUT 之間。
歡
總結
- 上一篇: redis获取byte数组_《Redis
- 下一篇: stm32固件库assert_param