版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
3.GNUARM匯編偽操作符號定義偽操作數(shù)據(jù)定義偽操作匯編與反匯編代碼控制偽操作預(yù)定義控制偽操作1)符號定義偽操作(1)常量定義偽操作.equ或.set格式.equ symbol,expr.set symbol,expr說明Symbol-要指定的名稱,它可以是以前定義過的符號;Expr-表示數(shù)字常量或程序中的標號。示例.equ Undef_Mode,0x1B.equ
Mode_Mask,0x1F.equ NOINT, 0xC0.global_start.text_start:MRS R0,CPSR @讀CPSR BIC R0,R0,#Mode_Mask
ORR R1,R0,#Undef_Mode|NOINT @修改
MSR CPSR_cxsf,R1 @進入未定義模式Stop: B Stop @使程序停在此處查看結(jié)果.end(2)常量定義偽操作.equiv格式:.equivsymbol,expr說明Symbol-要指定的名稱,它不可以是以前定義過的符號;Expr-表示數(shù)字常量或程序中的標號。(3)聲明全局變量偽操作.global或.globl格式.global symbol.globl symbol說明Symbol-為要聲明的全局變量名稱,該變量可以被其它文件引用。(4)聲明外部變量偽操作.extern格式:.extern symbol說明symbol-為要聲明的外部變量名稱,該變量在其它文件中被定義。例如:在C編程中要引用匯編中定義的函數(shù)或變量,則要在C中用extern進行聲明引用。
在
GNU
ARM
編譯環(huán)境下,在匯編程序中要使用.global偽操作聲明匯編程序為全局的函數(shù),可被外部函數(shù)調(diào)用,同時在C程序中要用關(guān)鍵
extern
聲明要調(diào)用的2)數(shù)據(jù)定義偽操作(1)字節(jié)定義.byte格式:.byte expr{,expr}…說明expr-數(shù)字表達式或程序中的標號。(2)半字定義.hword或.short格式.hword
expr{,expr}…..short expr{,expr}…說明expr-數(shù)字表達式或程序中的標號。(3)字定義.word或.int或.long格式.word expr{,expr}…..int
expr{,expr}….long expr{,expr}…說明expr-數(shù)字表達式或程序中的標號。(4)雙字定義.quad格式:.quad expr{,expr}…說明expr-數(shù)字表達式。(6)字符串定義.ascii和.asciz或.string格式.ascii
expr{,expr}….asciz
expr{,expr}….stringexpr{,expr}…說明expr-表示字符串。(5)四字定義.octa
格式:.octa expr{,expr}…說明expr-數(shù)字表達式。(7)單精度浮點數(shù)定義.float或.single格式.float expr{,expr}…..single expr{,expr}….說明Expr-為32位的IEEE單精度浮點數(shù)。(8)雙精度浮點數(shù)定義.double格式:.double expr{,expr}…說明expr-為64位的IEEE雙精度浮點數(shù)。(9)聲明數(shù)據(jù)緩沖池.ltorg格式:.ltorg說明在使用LDR偽指令時,要在適當?shù)奈恢眉尤?ltorg聲明數(shù)據(jù)緩存池,這樣就會把要加載的數(shù)據(jù)保存到緩存池中,再使用ARM加載指令讀出,如果沒有使用.ltorg聲明數(shù)據(jù)緩沖池,則匯編器會在程序末尾自動聲明。3)匯編與反匯編代碼控制偽操作(1)指令集類型標識偽操作.arm.code32.thumb.code16(2)段屬性定義偽操作格式:.sectionexpr說明expr-為段屬性,可以是.text、.data、.bss中的一個。(3)段起始聲明偽操作格式.text.data.bss(4)對齊方式設(shè)置偽操作.align或.balign格式.align {alignment}{,fill}.balign {alignment}{,fill}說明alignment-是一個數(shù)值表達式,用于指定對齊方式,其取值在0~15范圍內(nèi);默認為字對齊。Fill-用來指定進行填充的數(shù)據(jù)。(5)代碼位置設(shè)置偽操作.org
格式:.orgoffset{,expr}
說明offset-是一個數(shù)值表達式,表示地址偏移量;Expr-用來指定進行填充的數(shù)據(jù)。4)預(yù)定義控制偽操作匯編器在對程序代碼進行編譯時,會根據(jù)匯編控制偽操作的定義情況對程序進行編譯,常用的有條件編譯、宏定義和文件包含(1)文件包含偽操作.include格式:.include "file_name"說明用于將一個源文件包含到當前的源文件中,所包含的文件在.include指令的位置處進行匯編處理。(2)條件編譯偽操作.if格式.if logical_expression程序代碼段A {.else程序代碼段B} ..endif
(3)宏定義偽操作.macro格式.macro{ macroname {parameter{,parameter}…}程序代碼段.endm
4.2ARM匯編語言的語句格式1.ARM編譯環(huán)境下匯編語句格式2.ARM編譯環(huán)境下匯編語句中的符號規(guī)則3.GNU環(huán)境下ARM匯編語句格式4.GNU環(huán)境下ARM匯編程序編譯
1.ARM編譯環(huán)境下匯編語句格式{程序標號}{指令}{;注釋}{程序標號}{偽操作}{;注釋}{程序標號}{偽指令}{;注釋}2.ARM編譯環(huán)境下匯編語句中的符號規(guī)則1)符號命名規(guī)則符號由大小寫字母、數(shù)字、下劃線組成,且符號是區(qū)分大小寫的。符號在其作用范圍內(nèi)必須是唯一的。程序中的符號不要與指令助記符或者偽操作同名。局部標號可以用數(shù)字開頭,其他的標號不能。2)變量數(shù)字變量邏輯變量字符串變量3)常量十進制數(shù),如535、246。十六進制數(shù),如0x64、0xff00。n_XXX,n表示n進制數(shù),從2~9,XXX是具體的數(shù)字。例如:8_3777字符常量用一對單引號括起來,包括一個單字符或者標準C中的轉(zhuǎn)義字符。例如‘A’、‘\n’。字符串常量由一對雙引號以及由它括住的一組字符串組成,包括標準C中的轉(zhuǎn)義字符。如果需要使用雙引號”或字符$,則必須用””和$$代替。4)字符串表達式操作字符串表達式一般由字符串常量、字符串變量、運算符和括號構(gòu)成。與字符串表達式相關(guān)的運算符:
LEN:計算字符串長度運算符。
CHR:ASCII碼轉(zhuǎn)換運算符。STR:字符串轉(zhuǎn)換運算符。LEFT:字符串取左運算符。RIGHT:字符串取右運算符。CC:字符串連接運算符。例如:abcSETS"one""doublequote"improbSETS"literal":CC:(abc:LEFT:4)6)局部標號局部標號是一個0~99之間的十進制數(shù)字,可重復(fù)定義。局部標號后面可以緊接一個通常表示該局部變量作用范圍的符號。局部變量的作用范圍為當前段,也可以用偽操作ROUT來定義局部標號的作用范圍。局部變量命名語法:n{routname}局部變量引用的語法格式:%{F|B}{A|T}n{routname}匯編器默認搜索:先向后搜索,再向前搜索。從當前層次到宏最高層次,比當前層次低的層次不再搜索。n是局部標號的數(shù)字號。routname是當前局部范圍的名稱。%表示引用操作。F指示匯編器只向前搜索。B指示匯編器只向后搜索。A指示匯編器搜索宏的所有嵌套層次。T指示匯編器搜索宏的當前層次。3.GNU環(huán)境下ARM匯編語句格式{程序標號:}{指令}{@注釋}{程序標號:}{偽操作}{@注釋}{程序標號:}{偽指令}{@注釋}4.GNU環(huán)境下ARM匯編程序編譯1)預(yù)處理GNU匯編器as的內(nèi)部預(yù)處理包括:移除多余的間隔符及代碼中的所有注釋,并將字符常量轉(zhuǎn)換為數(shù)字值。它不作宏處理和文件包含處理,但這些事情可以交由gcc編譯器去做,文件包含可以用.include偽指令來實現(xiàn)。2)注釋GNUARMAssembly可識別的注釋方式有:C風格多行注釋符/*...*/或GNU單行注釋符“@”或“#”。3)符號與C語言基本一致,符號名由字母、數(shù)字以及'_'和'.'組成,大小寫敏感。4)段與重定位鏈接器ld用于把多個目標文件合并為一個可執(zhí)行文件。匯編器as生成的目標文件都假定從地址0開始,ld為其指定最終的地址。鏈接器ld把目標文件中的每個section都作為一個整體,為其分配運行的地址。
在ARM(Thumb)匯編語言程序中以程序段為單位組織代碼。段是相對獨立的指令或數(shù)據(jù)序列,具有特定的名稱。段可以分為代碼段(CodeSection)和數(shù)據(jù)段(DataSection),代碼段的內(nèi)容為執(zhí)行代碼,數(shù)據(jù)段存放代碼運行時需要用到的數(shù)據(jù)。一個匯編程序至少應(yīng)該有一個代碼段,當程序較長時,可以分割為多個代碼段和數(shù)據(jù)段,多個段在程序編譯鏈接時最終形成一個可執(zhí)行的映像文件??蓤?zhí)行映像文件通常由以下幾部分構(gòu)成。一個或多個代碼段,代碼段的屬性為只讀。零個或多個數(shù)據(jù)段,數(shù)據(jù)段的屬性為可讀寫。數(shù)據(jù)段可是被初始化的數(shù)據(jù)段或沒有被初始化的數(shù)據(jù)段(ZI,zeroinitialized)。4.3匯編語言的程序格式311.在ARM集成開發(fā)環(huán)境下AREAFCTRL,CODE,READONLY;聲明代碼FCTRLENTRY ;標識程序入口START MOV R0,#0X3000;初始化寄存器
MOV R1,#0X10000001 MOVR2,#100loop_1 STR R1,[R0],#4 ADDR1,R1,#1 SUBSR2,R2,#1 BNE loop_1
MOV R0,#0X3000 MOV R2,#100 MOV R9,#0 MOV R8,#0 loop_2 LDR R1,[R0],#4 ADDS R8,R1,R8 ADC R9,R9,#0 SUBS R2,R2,#1 BNE loop_2Stop B Stop END ;文件結(jié)束332.在GNUARM開發(fā)環(huán)境下.global _start.text_start: MOV R0,#0X3000@初始化寄存器
MOV R1,#0X10000001 MOV R2,#100loop_1: STR R1,[R0],#4 ADD R1,R1,#1 SUBS R2,R2,#1 BNE loop_1
MOV R0,#0X3000 MOV R2,#100 MOV R9,#0 MOV R8,#0 loop_2: LDR R1,[R0],#4 ADDSR8,R1,R8
ADC R9,R9,#0
SUBS R2,R2,#1 BNE loop_2Stop: B Stop.end @文件結(jié)束4.4ADT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報參考:教材插圖智能設(shè)計美學的社會主義核心價值觀對齊研究
- 課題申報參考:建成環(huán)境對老年人公交及地鐵出行的時空動態(tài)影響及適老化建成環(huán)境優(yōu)化研究
- 二零二五版文化藝術(shù)用品采購合同模板3篇
- 二零二五年度房地產(chǎn)投資定金監(jiān)管協(xié)議4篇
- 二零二五年度煤炭運輸節(jié)能減排協(xié)議4篇
- 二零二五版爐渣清潔生產(chǎn)采購技術(shù)服務(wù)合同4篇
- 2025年度高壓供電線路維護服務(wù)協(xié)議范本3篇
- 2025版?zhèn)€人退股協(xié)議書:上市公司股份回購與股東退出協(xié)議4篇
- 深圳2025年度廠房租賃合同范本2篇
- 二零二五年度建筑安全評估師雇傭合同標準版3篇
- 化學-河南省TOP二十名校2025屆高三調(diào)研考試(三)試題和答案
- 智慧農(nóng)貿(mào)批發(fā)市場平臺規(guī)劃建設(shè)方案
- 林下野雞養(yǎng)殖建設(shè)項目可行性研究報告
- 2023年水利部黃河水利委員會招聘考試真題
- Python編程基礎(chǔ)(項目式微課版)教案22
- 01J925-1壓型鋼板、夾芯板屋面及墻體建筑構(gòu)造
- 欠電費合同范本
- 《學習教育重要論述》考試復(fù)習題庫(共250余題)
- 網(wǎng)易云音樂用戶情感畫像研究
- 小學四年級奧數(shù)題平均數(shù)問題習題及答案
- 工作違紀違規(guī)檢討書范文
評論
0/150
提交評論