




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章ARM程序設(shè)計(jì)本章主要內(nèi)容5.0 集成開發(fā)環(huán)境使用5.1 匯編語(yǔ)言程序設(shè)計(jì)方5.2 順序程序設(shè)計(jì)5.3 分支程序設(shè)計(jì)5.4 循環(huán)程序設(shè)計(jì)5.5 子程序設(shè)計(jì)/參數(shù)傳遞方法5.6 C語(yǔ)言與匯編語(yǔ)言混合程序設(shè)計(jì)方法5.1 ARM匯編語(yǔ)言程序設(shè)計(jì)1. 匯編語(yǔ)言程序設(shè)計(jì)步驟(1) 分析問題,明確要求明確要解決的問題、要達(dá)到的目的、技術(shù)指標(biāo)等(2) 確定算法根據(jù)實(shí)際問題的要求、給出的條件及特點(diǎn),找出規(guī)律性,最后確定所采用的計(jì)算公式和計(jì)算方法,這就是一般所說的算法。 算法是進(jìn)行程序設(shè)計(jì)的依據(jù),它決定了程序的正確性和程序的指令。(3) 畫程序流程圖,用圖解來描述和說明解題步驟(4)分配內(nèi)存工作單元,確定
2、程序與數(shù)據(jù)區(qū)的存放地址(5)編寫源程序(6) 程序優(yōu)化(7) 程序調(diào)試、修改和最后確定源程序只有通過上機(jī)調(diào)試并得出正確結(jié)果的程序,才能認(rèn)為是正確的程序。沒有調(diào)試過的程序,很難保證程 序無錯(cuò)誤,程序調(diào)試是不可缺省的。2. 程序段/數(shù)據(jù)段范例AREA Init,CODE,READONLY ;只讀段Init,偽指令ENTRY;程序入口點(diǎn), 偽指令StartLDR R0,=0x3ff5000;若整個(gè)程序只有一個(gè)Entry, Start=0x0LDR R1,=0xffSTRR1,R0;初始化端口0x3ff5000 LDR R0,=0x3ff5008LDR R1,=0x01STRR1,R0;初始化端口0x
3、3ff5008AREAStrings, DATA, READWRITEsrcstrDCB First string - source,0dststrDCB Second string - destination,0END;程序結(jié)束5.2 順序程序設(shè)計(jì)對(duì)于一些簡(jiǎn)單的數(shù)據(jù)處理,只要把完成處理的各個(gè)步驟用匯編語(yǔ)言描述清楚,讓計(jì)算機(jī)按指令編寫的次序從頭到尾一條條執(zhí)行即可,這樣的程序 結(jié)構(gòu)稱為順序結(jié)構(gòu)?!纠?-1】已知X和Y是數(shù)據(jù)段中的兩個(gè)無符號(hào)16bit字單元, 用程序完成表達(dá)式 Z =(X2Y2)/ 2 的計(jì)算。1. 分配空間XDCWU0x1000YDCWU0x2001;16b ZDCDU0x000
4、00000 ;32b2. 找到合適指令順序設(shè)計(jì) 計(jì)算程序“參考ARM-ISA指令集(中文版).chm”文件AREA Init,CODE,READONLY ;只讀段Init,偽指令ENTRY;程序入口點(diǎn), 偽指令StartLDR R0,=X;若整個(gè)程序只有一個(gè)Entry, Start=0x0LDRH R1,R0;LDRSHLDR R0,=YLDRH R2,R0MUL R3,R1,R1;R3=R1*R1MLA R3,R2,R2,R3;R3=R2*R2+R3MOV R3, R3, ASR#1;R3=R3/2LDR R0,=Z; STRR3,R0AREA VAR, DATA, READWRITEXDC
5、WU0x1000YDCWU0x2001ZDCDU0x00000000END;程序結(jié)束5.3 分支程序設(shè)計(jì)分支程序是利用條件執(zhí)行指令, 使程序執(zhí)行到某一指令后,根據(jù)條 件是否滿足,來改變程序執(zhí)行的次 序。在程序設(shè)計(jì)中經(jīng)常會(huì)遇到各種 判斷和比較,例如“相等”和“不 相等”;“正”和“負(fù)”;“大于”和“小于”;“滿足條件”和“不滿足條件”等等,這些判斷和比較在程序中都可以組成各種不同的邏輯框,并產(chǎn)生相應(yīng)的分支程序。是條件1否是條件2分支程序段3否分支程序段2分支程序段1結(jié)束1. 普通分支程序設(shè)計(jì)(相當(dāng)于C語(yǔ)言的if else 結(jié)構(gòu))YesR0(R5)NoNE?R1(R5)(R5)-10;匯編:CMP
6、R5,10 MOVEQR0,R5 MOVR1,R5?實(shí)現(xiàn)下列代碼功能if(R5!=10) R1=R5;else R0=R5;匯編如何改寫/C程序if(R5!=10) R1=R5;else R0=R5;R1=R5 例:若R5 = 10, R5僅存入R1,否則分別存入R0,R1。問:若R5!=10,存入R0,否則存入R1. 程序如何改?3分支程序流程3分支程序段代碼CMP R1,R2HI LOCMPR1,R2BEQExitBLSLab2BHILab1Lab1 B ExitLab2 Exit HI/LO/EQ?EQ執(zhí)行Lab1程序段執(zhí)行Lab2程序段exit2. 多分支程序設(shè)計(jì)(相當(dāng)于C語(yǔ)言的swi
7、tch case 結(jié)構(gòu))例:若R1=1,執(zhí)行程序,若R1=2,執(zhí)行程序,若R1=10,執(zhí)行程序10, 否則不做任何處理。程序10R1=10 ?NoYes程序2R1=2 ?NoYesNo程序1YesR1=1 ?ExitR1=1?L3 L10 CMP R1,#10BNE ExitExit: ExitR1,#2 L3ExitR1,#1L2CMPBNE BCMP BNEB;匯編:L1L2/C程序switch(a1)case 1:;break; case 2:;break; case 10:;break; default:break;2. 帶狀態(tài)切換的分支程序設(shè)計(jì)例:若R1=1,執(zhí)行程序,若R1=1,執(zhí)
8、行程序,若R1=10,執(zhí)行程序10, 否則不做任何處理。跳轉(zhuǎn)地址標(biāo)號(hào);從Arm狀態(tài)切換到Thumb狀態(tài)CODE32地址最低位為1,表示切換到Thumb狀態(tài)Lable32LDRR0,=Lable16+1 BXR0;從Thumb狀態(tài)切換到ARM狀態(tài)CODE16地址最低位為0,表示切換到ARM狀態(tài)Lable16LDRR0,=Lable32 BXR05.4 循環(huán)程序設(shè)計(jì)循環(huán)程序分為單循環(huán)和多重循環(huán),兩重以結(jié)束否結(jié)束是外控制結(jié)束處理外循環(huán)體是否否判斷內(nèi)控制是循環(huán)控制內(nèi)循環(huán)體循環(huán)體內(nèi)循環(huán)初始化初始化外循環(huán)初始化開始開始循環(huán)程序是強(qiáng)制CPU重復(fù)執(zhí)行某一指令系列的一種程序結(jié)構(gòu)形式,它可以使許多重復(fù)工作的程序大
9、為簡(jiǎn)化,而且減少內(nèi)存空間。被重復(fù)執(zhí)行的部分稱作循環(huán)體, 要想把循環(huán)體多次執(zhí)行,就必須在循環(huán)體的前后有相應(yīng)的指令實(shí)現(xiàn)循環(huán)控制。循環(huán)程序一般由4 部分組成:初始化、循環(huán)體、循環(huán)控制、循環(huán)結(jié)束處理上循環(huán)稱為多重循環(huán)循環(huán)程序有兩種結(jié)構(gòu): while() do,do while();do until() 或for(;)while() do 結(jié)構(gòu)do until() 或for(;) 結(jié)構(gòu)循環(huán)結(jié)束NoYes循環(huán)條件滿足?循環(huán)體循環(huán)狀態(tài)初始化循環(huán)條Yes件滿足?No循環(huán)結(jié)束循環(huán)體循環(huán)狀態(tài)初始化;do while(1) 結(jié)構(gòu)匯編模板COUNTER EQU 100MOV R1,#COUNTER ;小于255用MOV;LDR R1,=COUNTER ;大于用LDR LOOPSUBS R1,R1,#1 BNE LOOP例把首址為data_src的存儲(chǔ)區(qū)內(nèi)的80個(gè)字復(fù)制到Data_dst指向的存儲(chǔ)區(qū)中。;匯編:data_src EQU 0x-Data_dst EQ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版數(shù)學(xué)六年級(jí)下冊(cè)總復(fù)習(xí)綜合練習(xí)(數(shù)與代數(shù))1-7
- 廣東省揭陽(yáng)市華僑高級(jí)中學(xué)2025屆高三沖刺高考最后1卷物理試題含解析
- 昆明衛(wèi)生職業(yè)學(xué)院《交通運(yùn)輸商務(wù)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 貴州城市職業(yè)學(xué)院《汽車保險(xiǎn)與理賠》2023-2024學(xué)年第二學(xué)期期末試卷
- 應(yīng)收賬款流程管理圖解
- 上海建橋?qū)W院《聲樂》2023-2024學(xué)年第一學(xué)期期末試卷
- 西安科技大學(xué)《獸醫(yī)微生物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 海南比勒費(fèi)爾德應(yīng)用科學(xué)大學(xué)《西方文藝美學(xué)專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北省荊門市京山市2025年數(shù)學(xué)五年級(jí)第二學(xué)期期末復(fù)習(xí)檢測(cè)模擬試題含答案
- 股骨干骨折中醫(yī)護(hù)理查房
- 環(huán)保知識(shí)競(jìng)賽考試參考題庫(kù)300題(含各題型)
- 基于AT89C51單片機(jī)的智能水表設(shè)計(jì)
- 【超星學(xué)習(xí)通】追尋幸福:中國(guó)倫理史視角(清華大學(xué))章節(jié)答案
- 常見急危重癥的快速識(shí)別要點(diǎn)與處理技巧演示課件
- 動(dòng)物疫病的防控
- GB/Z 18620.1-2008圓柱齒輪檢驗(yàn)實(shí)施規(guī)范第1部分:輪齒同側(cè)齒面的檢驗(yàn)
- GB/T 6084-2001齒輪滾刀通用技術(shù)條件
- 現(xiàn)代漢語(yǔ)語(yǔ)法(2)短語(yǔ)課件
- 冰雪之都冰城哈爾濱旅游宣傳風(fēng)土人情城市介紹PPT圖文課件
- 量子力學(xué)完整版課件
- 生態(tài)修復(fù)地質(zhì)勘察報(bào)告
評(píng)論
0/150
提交評(píng)論