![電子科技大學(xué)微嵌實(shí)驗(yàn)最新版_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/68f0eb8c-ee5e-4287-b917-422c63a13a7c/68f0eb8c-ee5e-4287-b917-422c63a13a7c1.gif)
![電子科技大學(xué)微嵌實(shí)驗(yàn)最新版_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/68f0eb8c-ee5e-4287-b917-422c63a13a7c/68f0eb8c-ee5e-4287-b917-422c63a13a7c2.gif)
![電子科技大學(xué)微嵌實(shí)驗(yàn)最新版_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/3/68f0eb8c-ee5e-4287-b917-422c63a13a7c/68f0eb8c-ee5e-4287-b917-422c63a13a7c3.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、電子科技大學(xué)實(shí)驗(yàn)報(bào)告修正了 M00和舊版答案的錯(cuò)誤,代碼使用 Keil uVision5均已調(diào)試通過。課程名稱微處理器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)名稱ARM基礎(chǔ)編程實(shí)驗(yàn)任課教師 實(shí)驗(yàn)教師 學(xué)號(hào)實(shí)驗(yàn)地點(diǎn)分組號(hào)時(shí)間年_月_日一、實(shí)驗(yàn)?zāi)康?. 熟悉并掌握常用ARM匚編指令2. 熟悉并掌握“ C+匯編”混合編程技術(shù)3. 熟練使用ARM軟件開發(fā)調(diào)試工具Keil二、實(shí)驗(yàn)容1. 學(xué)習(xí)使用Keil開發(fā)工具2. 使用ARM匚編語言,編程實(shí)現(xiàn)1+2+N累加運(yùn)算功能3. 使用C調(diào)用匯編函數(shù),實(shí)現(xiàn)字符串拷貝功能4. 使用匯編調(diào)用C函數(shù),實(shí)現(xiàn)求和運(yùn)算功能5. 使用ARM匚編語言,實(shí)現(xiàn)冒泡排序算法(選做)三、實(shí)驗(yàn)步驟1.
2、 實(shí)驗(yàn)1.1 :運(yùn)行Keil,建立工程文件,單步運(yùn)行調(diào)試演示 示例程序,深刻理解每一條指令,觀察寄存器,存空間的 變化。2. 實(shí)驗(yàn)1.2 :用匯編語言實(shí)現(xiàn)1+2+.+N的累加:a)建立新工程,加入實(shí)驗(yàn)1.2文件夾中的sum.sb)用匯編補(bǔ)充算法核心部分,代碼參考流程圖如下 圖1.1所示。c)使用單步調(diào)試,仔細(xì)觀察過程中關(guān)鍵寄存器值的 變化。R0暫存累加和圖1.13. 實(shí)驗(yàn)1.3 : C調(diào)用匯編實(shí)現(xiàn)字符串拷貝功能:a)建立新工程,加入實(shí)驗(yàn)1.3文件夾中的ma in .c和testfile.s(同一個(gè)工程下添加兩個(gè)文件一起編譯)。b)補(bǔ)充完成源代碼中缺失的部分,分別實(shí)現(xiàn)1. 拷貝源字符串的一個(gè)字節(jié)
3、到 R2中;2. 將拷貝的字節(jié)復(fù)制到目標(biāo)空間。c)運(yùn)行Debug進(jìn)行調(diào)試。4. 實(shí)驗(yàn)1.4 :匯編調(diào)用C實(shí)現(xiàn)求和1+2+.+10 :a)建立新工程,加入實(shí)驗(yàn)1.4文件夾中的sum.c和testfile.s(同一個(gè)工程下添加兩個(gè)文件一起編譯)。b)補(bǔ)充完成源代碼中缺失的部分,通過調(diào)用c函數(shù)g()實(shí)現(xiàn)1+2+3+glovb1,結(jié)果存在 R8中。c)運(yùn)行Debug進(jìn)行調(diào)試5. 實(shí)驗(yàn)1.5 : ARM匚編實(shí)現(xiàn)冒泡算法:a)建立新工程,加入實(shí)驗(yàn)1.5文件夾中的 maopao.s。b)補(bǔ)充完成源代碼中缺失的部分,實(shí)現(xiàn)冒泡排序功 能。c)運(yùn)行Debug進(jìn)行調(diào)試四、實(shí)驗(yàn)結(jié)果1. 實(shí)驗(yàn)1.2 :用匯編語言實(shí)現(xiàn)1
4、+2+.+N的累加 核心代碼如下:ADD R0,R1BVS SUM_ENDCMP R1,R2BHS SUM_ENDADD R1,#1B SUN_L1一 CurrtRlOkOQOOOOICR1OhOO000007腿OhQ0DODO64OmOOOOOOOCR4(bcOOOOOOOCR5OkCKOOOOOOQkWQOWQCR70x30000000B8OxOOOOLSBAR9OmOOOOOOOOR10OxtKOOOOOCRUOkQOOODOOOR12ftrinooomR13爼刃(k30DO3EECR14OJO (k(» 000017R15(FCOhOO 00002®由 CrSROM
5、GWOOOOF3ff srsRokoooooioc圖1.2可以看見最終結(jié)果顯示在寄存器 R8處,十六進(jìn)制為13BA 轉(zhuǎn)換成十進(jìn)制為5050,實(shí)現(xiàn)了累加功能。2. 實(shí)驗(yàn)1.3 : C調(diào)用匯編實(shí)現(xiàn)字符串拷貝功能核心代碼如下:LDRB R2,R1,#1; 拷貝源字符串的一個(gè)字節(jié)STRB R2,R0,#1 ;將拷貝的字節(jié)復(fù)制到目標(biāo)空間NameLoetitMi/VNlufType0 ® miinOxMWOlBSintfOEl * 乩auto - char *圧0 ch0x40000450 "bbbb"utQ - cliarUI圖1.3NameLccation/ValueTy
6、pe7 mainl± * dOxOOOOOlESint fQCxOOOOOOOOMito - char*0x40000450 "aaaa"auto -匚hsr5圖1.4可以看出拷貝前 srcstr 是” aaaa”,dststr 是” bbbb”,拷 貝后 srcstr 是” aaaa” ,dststr 是” aaaa”,實(shí)現(xiàn)了字符串 拷貝功能。3. 實(shí)驗(yàn)1.4 :匯編調(diào)用C實(shí)現(xiàn)求和1+2+.+10核心代碼如下:MOV R0,#1MOV R1,#2MOV R2,#3MOV R3,#10BL gMOV R8,R0ReistrValue區(qū)fiOObdOOOOOOlOE
7、lOkDOOOOC02蹬ftxOOOOOCClSR3UxLiOCOLULkR4jjOOOOOOOOE5OkOOODOOOOB&uoooocwoaET3開aKooooooiaR9OmOOOOOOOOEIDmOOOOOOOOfillOitOOOOOOOOEl 2OkOOOOOCOIR13 (SP)OxOOOOOCOOR1& (U)(hOOODOOU- FC 10即口00001&f+1 CF5KOkOOOOOOD3f+1 5F5IIkOOOOOOOO圖1.5可以看出最終結(jié)果顯示在寄存器 R8處,十六進(jìn)制表示為0010,轉(zhuǎn)換為十進(jìn)制為 0x104. 實(shí)驗(yàn)1.5 : ARM匚編實(shí)
8、現(xiàn)冒泡算法代碼如下:AREA Sort,CODE,READONL YENTR YstartMOV R4,#0LDR R6,=srcADD R6,R6,#le nLDR R7,=src;初始化R4作為循環(huán)計(jì)數(shù)器inner2MOV R1,R7CMP R6,R7BLE outer;將每次循環(huán)開始,正確設(shè)置 R1的值為數(shù)組開始地址;如果所有數(shù)字均已排序,即 R6<=R7輸出跳轉(zhuǎn)到outer函 數(shù)innerLDR R2,R1LDR R3,R1,#4CMP R2,R3BGT excha nge;判斷相鄰數(shù)字是否符合規(guī)律,不符合跳轉(zhuǎn)到exchange函數(shù)inner1ADD R1,R1,#4CMP R1
9、,R6BLT innerADD R4,R4,#4CMP R4,#le nBLE subtracti onexchangeSTR R3,R1STR R2,R1,#4B inn er1subtracti onSUB R6,R6,#4B inn er2outerLDR R1,=srcsrc DCD 2,4,10,8,14,1,20AREA Array,DATA,READWRITE len EQU 7*4ENDMemory MapCurrent Mapped Ranges(WO- IMD000MJ0 QxOOO?OQ5B exec readJfl 1 加JCQK5C - M>J0CKK 75 e
10、xec raad vrite Qfl2r SxJJGQOCTC - 2xOJOQK03 exec read003- (h4(KKWFF= readwrifp0(M 3?(4AOT0Q0 - 3?(4AOOOOir read write 兇5 COODOOO- MC000017 raadwriteKill BbIhcIbl Fbariya |Map Range - E>anpie. 0)40000000. OxOMFFFFIQxOOOCOOSl OxDQOCODTO7 eacV Write7 zxc.JteCksseHelp|圖1.6排序前在star函數(shù)中獲得R6地址后,首先如上圖,設(shè)置權(quán)
11、限才 能正確執(zhí)行程序。電毘000口打0昶Igaoas汕CI400gOAgg00aa00Ci£g汕a&001400燉giConac>003X00如 Ei00000000gg000000goe膽cogg0000gaoa&00g000000gaog00kOCDOTZ-AO;00CDocacac-*300g0:-aoaoocacac-oo佃ODaoCDocacac-70佃g0000aoacacao7000OtxOQDOCDQ !0aaOG Dg(HOco000aaao GClDCD00co000aa0*0 0ClDg00co<ao0aoao DaogGO«
12、;xOaOOC0E:4iQOaogQBao000000贈(zèng)Q0皿g阻a&COg00贈(zèng)QOsog©Dao00g00QO00曲ODg00WWOOClMi0000ODaoao00gg0000g00gg000000aoQOgg00000ao<20CKOCoooize:aa00兀de陽coCo-05noaaaodedeCO0gaoaoaoacac陽恥CDnoaoaaacac7000GXDOOMIU.!aoaa口口CD(IDgGO00aoaaa>Q口 QCID(|QcoaoaoaaaoODdoCOco00aoaaaoODClDCOao圖1.7排序前t o r* O 0 0 0-
13、0 啦a ® -o D- o o o o-o D- _o Q Q -u o0野 o -u o Q Q o > i -J- o n* o eb 0 > 4-000 - o 00to右。 I o D- o- o o o o 0 o -r - o D- D- o o o 卽 & o Good & o & & o a- -u o o a- Av _D o fl- o o Qoo D o Q Q o GOOD Q _Q o _o o o o o 3 0 9 3 0 0 0-0 00 0 0 o - o _o 00 0 d fic和町 eQHCH mk
14、mm c o- o c D _Q o o 410 Q 鄧 o Q -u n -osooaooaBcsDODODGajGOco04gggQfifl JQQQDZA00ooDG帕0000g0000oo00乜0DO&D常00叩DQDCos00QQ0*203QJ03恥2CDco:o00Dd0-J<1000000000OD00013Dco&000丫oaDODdDCCDADcocoCIOcoaaCD0000CD口 D&D0D0D1aaMDOQOgwoQO00coggaoco00PDao0000'ogosJDOcoomHoaoaOQgdO00000<?goo00忻
15、00創(chuàng)oo00a婭do000000000000DO500000JU UU yu U'J U8! IrJ UU U'U 圖1.8排序后M Moc地址0x0000005C-0x00000078中保存的排序后的結(jié)果正 確,程序?qū)崿F(xiàn)了冒泡法排序功能。五、實(shí)驗(yàn)總結(jié)1此次實(shí)驗(yàn)用匯編和C語言實(shí)現(xiàn)了 1N的累加、字符串的拷 貝、數(shù)字求和以及冒泡法排序這幾項(xiàng)功能,了解了匯編語 言的基礎(chǔ)指令及其意義,學(xué)會(huì)了使用了 Keil編譯器編寫和 調(diào)試程序。2.知道了 C程序與匯編語言相互調(diào)用的規(guī)則:寄存器的使用規(guī)則:“子程序間”通過寄存器R(H R3來傳遞參數(shù)。如果更多參數(shù)需要傳遞,則需要使用堆棧。(這也是
16、第二題字符串復(fù)制中使用 R0和R1的原因)在“子程序中”,使用寄存器 R4R11來保存局部變量。寄存器R12用于子程序間scratch寄存器(用于保存 SP在函數(shù)返回時(shí)使用該寄存器出桟),記作 IP。寄存器R13用于數(shù)據(jù)棧指針,記作SP寄存器SP在進(jìn) 入子程序時(shí)的值和退出子程序時(shí)的值必須相等。寄存器R14稱為寄存器,記作LR。它用于保存子程序的 返回地址。寄存器R15是程序計(jì)數(shù)器,記作PC六、實(shí)驗(yàn)思考題1. Q: ADD替換成ADDS SUB替換成SUBS有什么影響?A:替換后,運(yùn)算結(jié)果會(huì)影響標(biāo)志寄存器。因?yàn)?ADD SUB 不帶進(jìn)位與借位,ADDS SUBS帶有進(jìn)位與借位,運(yùn)算完成 要置符號(hào)位。2. Q: MOV替換成MOVN有什么影響?A:替換后只有在上一步比較結(jié)果為不相等的時(shí)候才會(huì)執(zhí)行 該指令。(“ NE屬于“ cond”,意義為不相等)3. Q: STMIA換成 STMIB STMIA換成 STMDAF什么區(qū)別?A:換成STMIB是將每次傳送后地址+4變成每次傳送前地 址+4,換成STMDAF將每次傳送后地址+4變成每次傳送后 地址-4。4. Q:思考用ARM匚編實(shí)現(xiàn)1+3+5+(2n+1)或者2+4+6+ +2 n。A:實(shí)現(xiàn) 1+3+5+.+(2n+1),將 ADD R1,#1 改為 ADD R1,#2,設(shè)置R
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年高考政治母題題源系列專題27物質(zhì)與意識(shí)含解析
- 2024-2025學(xué)年高中英語書面表達(dá)練習(xí)含解析新人教版必修2
- 小學(xué)四年級(jí)開學(xué)第一課《安全教育》聽評(píng)課記錄
- 青年委員工作計(jì)劃
- 商品房預(yù)售資金監(jiān)管合作協(xié)議書范本
- 電商供應(yīng)商合同范本
- 徐州工程學(xué)院《管理咨詢》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢軟件工程職業(yè)學(xué)院《構(gòu)造地質(zhì)學(xué)B》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江交通職業(yè)技術(shù)學(xué)院《多元統(tǒng)計(jì)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南城建學(xué)院《參展實(shí)務(wù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 毒麻藥品試題答案
- 元明時(shí)期左江上思州黃姓土司問題研究
- 醫(yī)療器械專業(yè)知識(shí)培訓(xùn)課件
- 傳統(tǒng)體育養(yǎng)生學(xué)
- DB4401∕T 33-2019 電梯托管標(biāo)準(zhǔn)化管理規(guī)范
- 松原市人民政府關(guān)于印發(fā)松原市招商引資服務(wù)公司組建工作實(shí)施方案的通知
- 義工財(cái)務(wù)管理制度范文
- 西安旅游景點(diǎn)介紹PPT模板(推薦)
- 公司實(shí)際經(jīng)營地與公司注冊(cè)地不一致的說明
- 貴州省工傷待遇申請(qǐng)表(綜合柜員)
- 籍貫對(duì)照表完整版
評(píng)論
0/150
提交評(píng)論