




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第四章 ARM匯編語言程序設(shè)計(jì)ADS1.2環(huán)境下的匯編語句格式1. ARM 匯編中,所有標(biāo)號(hào)必須在一行的頂格書寫,其后面不要添加“:,而所有指令均不能頂格書寫。2. ARM 匯編器對(duì)標(biāo)識(shí)符大小寫敏感,書寫標(biāo)號(hào)及指令時(shí)字母大小寫要一致,在ARM 匯編程序中,一個(gè)ARM 指令、偽指令、存放器名可以全部為大寫字母,也可以全部為小寫字母,但不要大小寫混合使用(如果混合使用也能編譯通過,如mov SP, r6能編譯通過,但是moV SP, r6則出現(xiàn)錯(cuò)誤)。3. 注釋可以在一行的頂格書寫。14.1偽操作 在ARM匯編語言程序里,有一些特殊指令助記符,這些助記符與指令系統(tǒng)的助記符不同,沒有相對(duì)應(yīng)的操作碼,
2、通常稱這些特殊指令助記符為偽指令 他們所完成的操作稱為偽操作。ARM 指令系統(tǒng)2 偽指令 : 由匯編器處理 偽指令是由匯編器對(duì)源程序匯編期間進(jìn)行處理的. 偽指令僅在匯編過程中起作用,一旦匯編結(jié)束,偽指令的使命就完成。 指令 : 由ARM處理器執(zhí)行ARM 指令系統(tǒng)3在ARM的匯編程序中,有如下幾種偽指令:符號(hào)定義偽指令、數(shù)據(jù)定義偽指令、匯編控制偽指令、宏指令以及其他偽指令。ARM 指令系統(tǒng)44.1.1 符號(hào)定義偽指令 符號(hào)定義偽指令用于定義ARM匯編程序中的變量、對(duì)變量賦值以及定義存放器的別名等操作。ARM 指令系統(tǒng)54.1.1 符號(hào)定義偽指令 常見的符號(hào)定義偽指令有如下幾種:用于定義全局變量的
3、GBLA、GBLL和GBLS。用于定義局部變量的LCLA、LCLL和LCLS。用于對(duì)變量賦值的SETA、SETL、SETS。為通用存放器列表定義名稱的RLIST。ARM 指令系統(tǒng)61、GBLA、GBLL和GBLS語法格式:GBLA(GBLL或GBLS)全局變量名GBLA、GBLL和GBLS偽指令用于定義一個(gè)ARM程序中的全局變量,并將其初始化。GBLA偽指令用于定義一個(gè)全局的數(shù)字變量,并初始化為0;GBLL偽指令用于定義一個(gè)全局的邏輯變量,并初始化為F(假);GBLS偽指令用于定義一個(gè)全局的字符串變量,并初始化為空;由于以上三條偽指令用于定義全局變量,因此在整個(gè)程序范圍內(nèi)變量名必須唯一。7GB
4、LATest1;定義一個(gè)全局的數(shù)字變量,變量名為Test1Test1SETA0 xaa;將該變量賦值為0 xaaGBLLTest2;定義一個(gè)全局的邏輯變量,變量名為Test2Test2SETLTRUE;將該變量賦值為真GBLSTest3;定義一個(gè)全局的字符串變量,變量名為Test3Test3SETSTesting;將該變量賦值為Testing82、LCLA、LCLL和LCLS語法格式:LCLA(LCLL或LCLS)局部變量名LCLA、LCLL和LCLS偽指令用于定義一個(gè)ARM程序中的局部變量,并將其初始化。其中: LCLA偽指令用于定義一個(gè)局部的數(shù)字變量,并初始化為0; LCLL偽指令用于定義
5、一個(gè)局部的邏輯變量,并初始化為F(假); LCLS偽指令用于定義一個(gè)局部的字符串變量,并初始化為空;以上三條偽指令用于聲明局部變量ARM 指令系統(tǒng)9使用例如:LCLATest4 ;聲明一個(gè)局部的數(shù)字變量,變量名為Test4Test3SETA0 xaa ;將該變量賦值為0 xaaLCLLTest5;聲明一個(gè)局部的邏輯變量,變量名為Test5Test4SETLTRUE;將該變量賦值為真LCLSTest6;定義一個(gè)局部的字符串變量,變量名為Test6Test6SETS“Testing;將該變量賦值為“Testing103、SETA、SETL和SETS語法格式:變量名SETA(SETL或SETS)表達(dá)
6、式 偽指令SETA、SETL、SETS給一個(gè)已經(jīng)定義的全局變量或局部變量賦值。SETA偽指令用于給一個(gè)數(shù)學(xué)變量賦值;SETL偽指令用于給一個(gè)邏輯變量賦值;SETS偽指令用于給一個(gè)字符串變量賦值; 其中,變量名為已經(jīng)定義過的全局變量或局部變量,表達(dá)式為將要賦給變量的值。11使用例如:LCLATest3;聲明一個(gè)局部的數(shù)字變量,變量名為Test3Test3 SETA0 xaa;將該變量賦值為0 xaaLCLLTest4;聲明一個(gè)局部的邏輯變量,變量名為Test4Test4 SETLTRUE;將該變量賦值為真ARM 指令系統(tǒng)12 4、RLIST 名稱 RLIST存放器列表 RLIST偽指令可用于對(duì)一
7、個(gè)通用存放器列表定義名稱,使用該偽指令定義的名稱可在ARM指令LDM/STM中使用。 在LDM/STM指令中,列表中的存放器訪問次序?yàn)楦鶕?jù)存放器的編號(hào)由低到高,而與列表中的存放器排列次序無關(guān)。13RLIST使用例如:RegListRLISTR0-R5,R8,R10 將存放器列表名稱定義為RegList,可在ARM指令LDM/STM中通過該名稱訪問存放器列表。例:RegListRLISTr1-r13;必須頂格開始寫 LDMIA r0,RegList144.1.2 數(shù)據(jù)定義(Data Definition)偽指令 數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲(chǔ)單元,同時(shí)可完成已分配存儲(chǔ)單元的初始化。常
8、見的數(shù)據(jù)定義偽指令有如下幾種:DCB 用于分配一片連續(xù)的字節(jié)存儲(chǔ)單元并用指定的數(shù)據(jù)初始化。DCW(DCWU)用于分配一片連續(xù)的半字存儲(chǔ)單元并用指定的數(shù)據(jù)初始化。DCFD(DCFDU)用于為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲(chǔ)單元并用指定的數(shù)據(jù)初始化。ARM 指令系統(tǒng)15DCFS(DCFSU)用于為單精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲(chǔ)單元并用指定的數(shù)據(jù)初始化。DCQ(DCQU)用于分配一片以8字節(jié)為單位的連續(xù)的存儲(chǔ)單元并用指定的數(shù)據(jù)初始化。DCD(DCDU)用于分配一片連續(xù)的字存儲(chǔ)單元并用指定的數(shù)據(jù)初始化。SPACE用于分配一片連續(xù)的存儲(chǔ)單元MAP 用于定義一個(gè)結(jié)構(gòu)化的內(nèi)存表首地址FIELD 用于定
9、義一個(gè)結(jié)構(gòu)化的內(nèi)存表的數(shù)據(jù)域161、DCB(DCB也可用“=代替)語法格式:標(biāo)號(hào)DCB 表達(dá)式 DCB偽指令用于分配一片連續(xù)的字節(jié)存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。其中,表達(dá)式可以為0255的數(shù)字或字符串。使用例如:Str DCBThis is a test?。环峙湟黄B續(xù)的字節(jié)存儲(chǔ)單元并初始化。172、DCD(或DCDU,DCD也可用“&代替)語法格式:標(biāo)號(hào)DCD(或DCDU)表達(dá)式 DCD(或DCDU)偽指令用于分配一片連續(xù)的字存儲(chǔ)單元并用偽指令中指定的表達(dá)式初始化。其中,表達(dá)式可以為程序標(biāo)號(hào)或數(shù)字表達(dá)式。 用DCD分配的字存儲(chǔ)單元是字對(duì)齊的,而用DCDU分配的字存儲(chǔ)單元并不嚴(yán)格字對(duì)
10、齊。使用例如:DataTestDCD4,5,6;分配一片連續(xù)的字存儲(chǔ)單元并初始化。183、SPACE(SPACE也可用“代替)語法格式:標(biāo)號(hào)SPACE表達(dá)式 SPACE偽指令用于分配一片連續(xù)的存儲(chǔ)區(qū)域并初始化為0。其中,表達(dá)式為要分配的字節(jié)數(shù)。使用例如:DataSpaceSPACE100;分配連續(xù)100字節(jié)的存儲(chǔ)單元并初始化為0。194、MAP,MAP也可用“代替。語法格式:MAP表達(dá)式,基址存放器 MAP偽指令用于定義一個(gè)結(jié)構(gòu)化的內(nèi)存表的首地址。 表達(dá)式可以為程序中的標(biāo)號(hào)或數(shù)學(xué)表達(dá)式,基址存放器為可選項(xiàng),當(dāng)基址存放器選項(xiàng)不存在時(shí),表達(dá)式的值即為內(nèi)存表的首地址,當(dāng)該選項(xiàng)存在時(shí),內(nèi)存表的首地址為
11、表達(dá)式的值與基址存放器的和。20 MAP偽指令通常與FIELD偽指令配合使用來定義結(jié)構(gòu)化的內(nèi)存表。使用例如:MAP0 x100,R0;定義結(jié)構(gòu)化內(nèi)存表首地址的值為0 x100R0。215、FILED FILED也可用“#代替。語法格式:標(biāo)號(hào)FIELD表達(dá)式 FIELD偽指令用于定義一個(gè)結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域。 表達(dá)式的值為當(dāng)前數(shù)據(jù)域在內(nèi)存表中所占的字節(jié)數(shù)。 FIELD偽指令常與MAP偽指令配合使用來定義結(jié)構(gòu)化的內(nèi)存表。MAP偽指令定義內(nèi)存表的首地址,F(xiàn)IELD偽指令定義內(nèi)存表中的各個(gè)數(shù)據(jù)域,并可以為每個(gè)數(shù)據(jù)域指定一個(gè)標(biāo)號(hào)供其他的指令引用。22注意 MAP和FIELD偽指令僅用于定義數(shù)據(jù)結(jié)構(gòu),并
12、不實(shí)際分配存儲(chǔ)單元。使用例如: MAP0 x100;定義結(jié)構(gòu)化內(nèi)存表首地址的值為0 x100。AFIELD16;定義A的長(zhǎng)度為16字節(jié),位置為0 x100BFIELD32;定義B的長(zhǎng)度為32字節(jié),位置為0 x110SFIELD256;定義S的長(zhǎng)度為256字節(jié),位置為0 x13023 s3c44b0 x ARM芯片的初始化源程序: AREA RamData, DATA, READWRITE (_IRQ_BASEADDRESS) ; 即 MAPHandleReset # 4 ; # 即 DCDHandleUndef # 4HandleSWI # 4HandlePabort # 4HandleDab
13、ort # 4HandleReserved # 4HandleIRQ # 4HandleFIQ # 4244.1.3 匯編控制偽指令 匯編控制偽指令用于控制匯編程序的執(zhí)行流程常用的匯編控制偽指令包括 :IF、ELSE、ENDIFWHILE、WENDMACRO、MENDMEXITARM 指令系統(tǒng)251 IF、ELSE、ENDIF (等價(jià)于 | )語法格式:IF邏輯表達(dá)式指令序列1ELSE指令序列2ENDIF IF、ELSE、ENDIF偽指令能根據(jù)條件的成立與否決定是否執(zhí)行某個(gè)指令序列。當(dāng)IF后面的邏輯表達(dá)式為真,則執(zhí)行指令序列1,否則執(zhí)行指令序列2。其中,ELSE及指令序列2可以沒有,此時(shí),當(dāng)I
14、F后面的邏輯表達(dá)式為真,則執(zhí)行指令序列1,否則繼續(xù)執(zhí)行后面的指令。26IF、ELSE、ENDIF偽指令可以嵌套使用。使用例如:GBLL Test;聲明一個(gè)全局的邏輯變量,變量名為Test IF Test = TRUE指令序列1 ELSE指令序列2 ENDIF27 s3c44b0 x ARM芯片的初始化源程序: GBLL THUMBCODE ;global logical variable, init. to false CONFIG = 16 ;=if,CONFIG:build-in variable defined by ARM ;assembler,16=assembing Thumbco
15、de.THUMBCODE SETLTRUE ;SETL:set the logic variable CODE32 ;changing from Thumb state to Arm state | ;|=elseTHUMBCODE SETLFALSE ;=endif282、WHILE、WEND語法格式:WHILE邏輯表達(dá)式指令序列WEND WHILE、WEND偽指令可以嵌套使用。 WHILE、WEND偽指令能根據(jù)條件的成立與否決定是否循環(huán)執(zhí)行某個(gè)指令序列。當(dāng)WHILE后面的邏輯表達(dá)式為真,則執(zhí)行指令序列,該指令序列執(zhí)行完畢后,再判斷邏輯表達(dá)式的值,若為真則繼續(xù)執(zhí)行,一直到邏輯表達(dá)式的值為假。
16、29使用例如: GBLA Counter;聲明一個(gè)全局的數(shù)學(xué)變量,變量名為CounterCounter SETA3;由變量Counter控制循環(huán)次數(shù) WHILECounter 10 指令序列 WEND303、MACRO、MEND語法格式: MACRO$標(biāo)號(hào)宏名 $參數(shù)1,$參數(shù)2, 指令序列 MEND MACRO、MEND偽指令可以將一段代碼定義為一個(gè)整體,稱為宏指令,然后就可以在程序中通過宏指令屢次調(diào)用該段代碼。其中,$標(biāo)號(hào)在宏指令被展開時(shí),標(biāo)號(hào)會(huì)被替換為用戶定義的符號(hào); 宏指令可以使用一個(gè)或多個(gè)參數(shù),當(dāng)宏指令被展開時(shí),這些參數(shù)被相應(yīng)的值替換。 MACRO、MEND偽指令可以嵌套使用。31s
17、3c44b0 x初始化程序里的例子: MACRO$HandlerLabel HANDLER $HandleLabel$HandlerLabel sub sp,sp,#4 stmfd sp!,r0 ldr r0,=$HandleLabel ldr r0,r0 str r0,sp,#4 ldmfd sp!,r0,pc MEND32HandlerEINT4567HANDLER HandleEINT4567將被匯編成如下語句:HandlerEINT4567 sub sp,sp,#4 stmfd sp!, r0 ldr r0,= HandleEINT4567; ldr r0, r0 str r0, sp
18、,#4 ldmfd sp!,r0,pc33HandleEINT4567的定義: (_IRQ_BASEADDRESS+0 x100)HandleADC # 4.HandleEINT4567 # 434圖1 執(zhí)行sub sp,sp,#4時(shí)堆棧的情況35圖2 執(zhí)行stmfd sp!, r0,將R0壓入堆棧后綴“!表示最后的地址寫回到sp 中36圖3 執(zhí)行str r0,sp,#4,將R0壓入堆棧 (R0)= HandleXXX處的內(nèi)容,不改變SP的值。 37圖4 ldmfd sp!,r0,pc;彈出兩個(gè)字,分別送到R0,PC 384、MEXIT語法格式:MEXITMEXIT用于從宏定義中跳轉(zhuǎn)出去。AR
19、M 指令系統(tǒng)394.1.6 其他常用的偽指令 還有一些其他的偽指令,在匯編程序中經(jīng)常會(huì)被使用,包括以下幾條: AREA ALIGN CODE16、CODE32 ENTRY END EQU EXPORT(或GLOBAL) IMPORT EXTERN GET(或INCLUDE) INCBIN RN ROUT401、AREA語法格式:AREA段名 屬性1,屬性2, AREA偽指令用于定義一個(gè)代碼段或數(shù)據(jù)段。其中,段名若以數(shù)字開頭,則該段名需用“|括起來,如|1_test|。 屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個(gè)屬性用逗號(hào)分隔。常用的屬性如下:CODE屬性:用于定義代碼段,默認(rèn)為READO
20、NLY。DATA屬性:用于定義數(shù)據(jù)段,默認(rèn)為READWRITE。41READONLY屬性:指定本段為只讀,代碼段默認(rèn)為READONLY。READWRITE屬性:指定本段為可讀可寫,數(shù)據(jù)段的默認(rèn)屬性為READWRITE。ALIGN屬性:使用方式為ALIGN 表達(dá)式。在默認(rèn)時(shí),ELF(可執(zhí)行連接文件)的代碼段和數(shù)據(jù)段是按字對(duì)齊的,表達(dá)式的取值范圍為031,相應(yīng)的對(duì)齊方式為2表達(dá)式次方。 This is not the same as the way that the ALIGN directive is specified. Do not use ALIGN=0 or ALIGN=1 for co
21、de sections. 42使用例如: AREA Init,CODE,READONLY;該偽指令定義了一個(gè)代碼段,段名為Init,屬性為只讀 AREA MyDATA,DATA,READONLY,ALIGN=14;(以214字節(jié)對(duì)齊.)432、ALIGN語法格式:ALIGN表達(dá)式,偏移量 ALIGN偽指令可通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對(duì)其方式|。 其中,表達(dá)式的值用于指定對(duì)齊方式,可能的取值為2的冪,如1、2、4、8、16等。若未指定表達(dá)式,則將當(dāng)前位置對(duì)齊到下一個(gè)字的位置。 偏移量也為一個(gè)數(shù)字表達(dá)式,如果不是用在AREA里的,應(yīng)該是 表達(dá)式 偏移量.44 將兩個(gè)字節(jié)的數(shù)據(jù)放在
22、同一個(gè)字的第一個(gè)字節(jié)和第四個(gè)字節(jié)中,帶offset 的ALIGN對(duì)齊: AREA offsetFxample, CODE DCB 0 x31 ;第一個(gè)字節(jié)保存0 x31 ALIGN 4,3 ;字對(duì)齊 DCB 0 x32 ;第四個(gè)字節(jié)保存0 x32 內(nèi)容是:0 x32000031 上面的語句ALIGN 4,3意義是:字對(duì)齊,然后再加上偏移345Examples AREA cacheable, CODE, ALIGN=3rout1 ; code ; aligned on 8-byte boundary ; code MOV pc,lr ; aligned only on 4-byte bounda
23、ry ALIGN 8 ; now aligned on 8-byte boundaryrout2 ; code463、CODE16、CODE32語法格式:CODE16(或CODE32)CODE16偽指令通知編譯器,其后的指令序列為16位的Thumb指令。CODE32偽指令通知編譯器,其后的指令序列為32位的ARM指令。47 若在匯編源程序中同時(shí)包含ARM指令和Thumb指令時(shí),可用CODE16偽指令通知編譯器其后的指令序列為16位的Thumb指令,CODE32偽指令通知編譯器其后的指令序列為32位的ARM指令。因此,在使用ARM指令和Thumb指令混合編程的代碼里,可用這兩條偽指令進(jìn)行切換 注
24、意:他們只通知編譯器其后指令的類型,并不能對(duì)處理器進(jìn)行狀態(tài)的切換。48AREAInit,CODE,READONLY CODE32;通知編譯器其后的指令為32位的ARM指令LDRR0,NEXT1;將跳轉(zhuǎn)地址放入存放R0BX R0;程序跳轉(zhuǎn)到新的位置執(zhí)行,并將處理器切換到Thumb工作狀態(tài)CODE16;通知編譯器其后的指令為16位的Thumb指令NEXT LDRR3,0 x3FF END;程序結(jié)束494、ENTRY語法格式:ENTRY ENTRY偽指令用于指定匯編程序的入口點(diǎn)。在一個(gè)完整的匯編程序中至少要有一個(gè)ENTRY(也可以有多個(gè),當(dāng)有多個(gè)ENTRY時(shí),程序的真正入口點(diǎn)由鏈接器指定),但在一個(gè)
25、源文件里最多只能有一個(gè)ENTRY(可以沒有)。50使用例如:AREAInit,CODE,READONLYENTRY;指定應(yīng)用程序的入口點(diǎn) 515、END語法格式:END END偽指令用于通知編譯器已經(jīng)到了源程序的結(jié)尾,用于指示匯編編譯器源文件已結(jié)束.每一個(gè)匯編源文件均要使用一個(gè).使用例如:AREAInit,CODE,READONLYEND;指定應(yīng)用程序的結(jié)尾526、EQU,可用“*代替。語法格式:名稱EQU表達(dá)式,類型名稱 必須頂格寫EQU偽指令用于為程序中的常量、標(biāo)號(hào)等定義一個(gè)等效的字符名稱,類似于C語言中的define。名稱為EQU偽指令定義的字符名稱,當(dāng)表達(dá)式為32位的常量時(shí),可以指定表
26、達(dá)式的數(shù)據(jù)類型,可以有以下三種類型:CODE16、CODE32和DATA53使用例如:TestEQU50;定義標(biāo)號(hào)Test的值為50AddrEQU0 x55,CODE32;定義Addr的值為0 x55,且該處為32位的ARM指令。547、EXPORT(或GLOBAL)語法格式:EXPORT標(biāo)號(hào)WEAK EXPORT偽指令用于在程序中聲明一個(gè)全局的標(biāo)號(hào),該標(biāo)號(hào)可在其他的文件中引用。EXPORT可用GLOBAL代替。 標(biāo)號(hào)在程序中區(qū)分大小寫 WEAK選項(xiàng)聲明其他的同名標(biāo)號(hào)優(yōu)先于該標(biāo)號(hào)被引用。55使用例如:AREAInit,CODE,READONLYEXPORTStest ;聲明一個(gè)可全局引用的標(biāo)號(hào)
27、Stest END 568、IMPORT語法格式: IMPORT標(biāo)號(hào)WEAK IMPORT偽指令用于通知編譯器要使用的標(biāo)號(hào)在其他的源文件中定義,但要在當(dāng)前源文件中引用,而且無論當(dāng)前源文件是否引用該標(biāo)號(hào),該標(biāo)號(hào)均會(huì)被參加到當(dāng)前源文件的符號(hào)表中。 WEAK選項(xiàng)表示當(dāng)所有的源文件都沒有定義這樣一個(gè)標(biāo)號(hào)時(shí),編譯器也不給出錯(cuò)誤信息,在多數(shù)情況下將該標(biāo)號(hào)置為0,若該標(biāo)號(hào)為B或BL指令引用,則將B或BL指令置為NOP操作。57使用例如:AREAInit,CODE,READONLYIMPORTMain;通知編譯器當(dāng)前文件要引用標(biāo)號(hào)Main,但Main在其他源文件中定義END 589、EXTERN語法格式:EX
28、TERN標(biāo)號(hào)WEAK EXTERN偽指令用于通知編譯器要使用的標(biāo)號(hào)在其他的源文件中定義,但要在當(dāng)前源文件中引用,如果當(dāng)前源文件實(shí)際并未引用該標(biāo)號(hào),該標(biāo)號(hào)就不會(huì)被參加到當(dāng)前源文件的符號(hào)表中。59使用例如:AREAInit,CODE,READONLYEXTERNMain;通知編譯器當(dāng)前文件要引用標(biāo)號(hào)Main,但Main在其他源文件中定義END6010、GET(或INCLUDE)語法格式:GET文件名 GET偽指令用于將一個(gè)源文件包含到當(dāng)前的源文件中,并將被包含的源文件在當(dāng)前位置進(jìn)行匯編處理。 使用方法與C語言中的“include相似。 GET偽指令只能用于包含源文件,包含目標(biāo)文件需要使用INCBI
29、N偽指令61使用例如: AREAInit,CODE,READONLY GETa1.s;通知編譯器當(dāng)前源文件包含源文件a1.s GETC:a2.s;通知編譯器當(dāng)前源文件包含源文件C: a2.s END6211、INCBIN語法格式: INCBIN文件名INCBIN偽指令用于將一個(gè)目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文件中,被包含的文件不作任何變動(dòng)的存放在當(dāng)前文件中,編譯器從其后開始繼續(xù)處理。63使用例如: AREAInit,CODE,READONLY INCBINa1.dat;通知編譯器當(dāng)前源文件包含文件a1.dat INCBIN C:a2.txt;通知編譯器當(dāng)前源文件包含文件 C:a2.txt E
30、ND6412、RN語法格式:名稱RN表達(dá)式 RN偽指令用于給一個(gè)存放器定義一個(gè)別名。采用這種方式可以方便程序員記憶該存放器的功能。其中,名稱為給存放器定義的別名,表達(dá)式為存放器的編碼。名稱必須頂格寫.使用例如:Temp RNR0;將R0定義一個(gè)別名Temp6513、ROUT語法格式:名稱ROUTROUT偽指令用于給一個(gè)局部變量定義作用范圍。在程序中未使用該偽指令時(shí),局部變量的作用范圍為所在的AREA,而使用ROUT后,局部變量的作為范圍為當(dāng)前ROUT和下一個(gè)ROUT之間。6614、NOP語法格式: NOP空操作,不影響CPSR中的條件標(biāo)志位674.4 匯編語言程序格式 1)在ARM(Thumb)匯編語言程序中,以程序段為單位組織代碼。2)段是相對(duì)獨(dú)立的指令或數(shù)據(jù)序列,具有特定的名稱。3)段可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省武威市涼州區(qū)武威第八中學(xué)2024-2025學(xué)年高一下學(xué)期開學(xué)生物學(xué)試題(含答案)
- 古代寓言故事教案狐貍與烏鴉新解
- 雪孩子幼兒教育動(dòng)畫片觀后感
- 故事性文本的寫作技巧與實(shí)踐練習(xí):初中作文指導(dǎo)課程教案
- 互聯(lián)網(wǎng)產(chǎn)品聯(lián)合推廣合作協(xié)議書
- 古詩文朗讀技巧與欣賞
- 小學(xué)生綜合素質(zhì)評(píng)價(jià)標(biāo)準(zhǔn)征文
- 法律學(xué)科民法學(xué)原理試題及答案庫
- 家用電器選購與使用注意事項(xiàng)指南
- 協(xié)作方案指南
- 小學(xué)語文一年級(jí)下冊(cè) 快樂讀書吧 課件(共13張PPT)
- 11471勞動(dòng)爭(zhēng)議處理(第2章)
- 疾控中心職責(zé)
- 朗讀技巧與朗讀教學(xué)課件
- 最新安全生產(chǎn)管理教材電子版
- 藥業(yè)有限公司內(nèi)部審計(jì)報(bào)告
- 空分制氧工基礎(chǔ)知識(shí)題庫完整
- 茶樹栽培學(xué)茶樹的修剪課件
- 辦公用品申購單
- 檢驗(yàn)流程圖樣板
- 《新課標(biāo)高中化學(xué)學(xué)業(yè)水平考試合格考知識(shí)點(diǎn)總結(jié)》
評(píng)論
0/150
提交評(píng)論