




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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 集成開(kāi)發(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) 分析問(wèn)題,明確要求明確要解決的問(wèn)題、要達(dá)到的目的、技術(shù)指標(biāo)等(2) 確定算法根據(jù)實(shí)際問(wèn)題的要求、給出的條件及特點(diǎn),找出規(guī)律性,最后確定所采用的計(jì)算公式和計(jì)算方法,這就是一般所說(shuō)的算法。 算法是進(jìn)行程序設(shè)計(jì)的依據(jù),它決定了程序的正確性和程序的指令。(3) 畫(huà)程序流程圖,用圖解來(lái)描述和說(shuō)明解題步驟(4)分配內(nèi)存工作單元,確定
2、程序與數(shù)據(jù)區(qū)的存放地址(5)編寫(xiě)源程序(6) 程序優(yōu)化(7) 程序調(diào)試、修改和最后確定源程序只有通過(guò)上機(jī)調(diào)試并得出正確結(jié)果的程序,才能認(rèn)為是正確的程序。沒(méi)有調(diào)試過(guò)的程序,很難保證程 序無(wú)錯(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ī)按指令編寫(xiě)的次序從頭到尾一條條執(zhí)行即可,這樣的程序 結(jié)構(gòu)稱為順序結(jié)構(gòu)?!纠?-1】已知X和Y是數(shù)據(jù)段中的兩個(gè)無(wú)符號(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ù)條 件是否滿足,來(lái)改變程序執(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;匯編如何改寫(xiě)/C程序if(R5!=10) R1=R5;else R0=R5;R1=R5 例:若R5 = 10, R5僅存入R1,否則分別存入R0,R1。問(wèn):若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)初始化開(kāi)始開(kāi)始循環(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)務(wù)管理成本控制領(lǐng)域試題集萃
- 內(nèi)蒙古自治區(qū)巴彥淖爾市一中2024-2025學(xué)年高三下學(xué)期開(kāi)學(xué)檢測(cè)語(yǔ)文試題(原卷版+解析版)
- 農(nóng)業(yè)設(shè)備采購(gòu)合同標(biāo)準(zhǔn)文本
- 2025年全國(guó)中小學(xué)校青少年禁毒知識(shí)競(jìng)賽復(fù)習(xí)題庫(kù)及答案(共250題)
- 2025年公共營(yíng)養(yǎng)師公眾演講試題及答案
- 2025年育嬰師考試復(fù)習(xí)心得分享試題及答案
- 2024年圖書(shū)管理員考試的多元評(píng)價(jià)模式試題及答案
- 2025年計(jì)算機(jī)二級(jí)考試考點(diǎn)一覽試題及答案
- 農(nóng)場(chǎng)項(xiàng)目轉(zhuǎn)讓合同樣本
- 2024年西醫(yī)臨床服務(wù)質(zhì)量標(biāo)準(zhǔn)試題及答案
- 居室空間設(shè)計(jì) 課件 項(xiàng)目四 起居室空間設(shè)計(jì)
- 【歷史】隋唐時(shí)期的科技與文化教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 勞務(wù)外包服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 中國(guó)水泥回轉(zhuǎn)窯行業(yè)發(fā)展監(jiān)測(cè)及投資方向研究報(bào)告
- 《檔案編研工作》課件
- 初中英語(yǔ)牛津深圳版單詞表(按單元順序)七年級(jí)至九年級(jí)
- 槍支安全及使用指南
- 《肝衰竭診治指南(2024版)》解讀
- 國(guó)省道公路標(biāo)志標(biāo)線維護(hù)方案投標(biāo)文件(技術(shù)方案)
- 【MOOC】科技英語(yǔ)寫(xiě)作-西安電子科技大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 電動(dòng)汽車課件
評(píng)論
0/150
提交評(píng)論