版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《嵌入式系統(tǒng)原理與應(yīng)用B》課程實(shí)驗(yàn)報(bào)告
ARM匯編語(yǔ)言編程與調(diào)試
規(guī)定完畢的重要實(shí)驗(yàn)
1、給出的數(shù)據(jù)中尋找最大、最小數(shù)問(wèn)題
2、兩種求和運(yùn)算的編程與調(diào)試
3、第四章作業(yè)第9題
4、排序冒泡程序的調(diào)試與總結(jié)
5、第四章作業(yè)第11題
說(shuō)明:標(biāo)注完畢的實(shí)驗(yàn),未完畢的給予說(shuō)明
專業(yè)名稱:通信工程__________________
班級(jí):__________1510班_____________
學(xué)生姓名:_________石龍飛_________________
學(xué)號(hào)(R位)I______________
指導(dǎo)教師:劉釗遠(yuǎn)
給出的數(shù)據(jù)中尋找最大、最小數(shù)問(wèn)題
一、實(shí)驗(yàn)?zāi)康?/p>
1、學(xué)習(xí)匯編軟件的安裝、使用,熟悉匯編環(huán)境。
2、學(xué)會(huì)使用匯編軟件,如何新建一個(gè)工程,如何書寫源代碼,如何進(jìn)行鏈接、編
譯,以及如何調(diào)試。
3、嘗試一些簡(jiǎn)樸的指令,學(xué)會(huì)用匯編指令寫一些簡(jiǎn)樸的程序。
二'實(shí)驗(yàn)內(nèi)容
編寫一個(gè)匯編程序,規(guī)定在給定的一組數(shù)中找到最大數(shù)和最小數(shù)。
三、實(shí)驗(yàn)重要環(huán)節(jié)
1、一方面建立一個(gè)工程
2、再新建.s的源文獻(xiàn),添加到工程中
New
3、編寫源代碼,這里重要是實(shí)現(xiàn)在一組數(shù)中尋找最大數(shù)和最小數(shù),最后將找到的
兩個(gè)數(shù)放到相應(yīng)的寄存器中。
:'^j|MetrowerksCodeWarriorforARMDeveloperSuitev12-(tests]
瞄file£ditYiewSearchProjectQebugWindowHelp
■白沖■cjx。?扈I?曹癌7,
力▼{.}▼M.▼母▼(£*▼Path:F:\ARM\project4\test.s
AREAsymbol,CODE.READONLY
ENTRY
CODE32
START
LDRRO,=nuas
MOVR2,#1
INITNUMS
STRR2,[RO],44
,DD
心
cMPR2,R2,*2
BNER2,#101
INITNUMS
LDRR0-nu
LDRR2[Ro
LDRR3[Ro
MOVR1#l
FINDMAXMIN
LDRR4,[RO],#4
CMPR2,R4
MOVCCR2,R4
CMPR3,R4
MOVCSR3,R4
ADDRI,RI,*1
CMPRI,#101
BNEFINDMAXMIN
STOP
bSTOP
AREAData,DATA,READURITE
BUMSSPACE100
END
4、進(jìn)行鏈接編譯,看看有沒(méi)有語(yǔ)法的錯(cuò)誤,假如有錯(cuò)誤編譯器會(huì)提醒錯(cuò)誤的類型
以及在哪里犯錯(cuò)。
OK|C?nc?lI
5、進(jìn)行debug調(diào)試,查找代碼中的邏輯錯(cuò)誤,若無(wú)邏輯錯(cuò)誤,可在debug界面
查看運(yùn)營(yíng)結(jié)果,其最需要的關(guān)注的幾個(gè)地方是菜單欄的一組運(yùn)營(yíng)按鈕、源碼執(zhí)行
的環(huán)節(jié)以及斷點(diǎn)、左邊的寄存器狀態(tài)、下方的存儲(chǔ)器狀態(tài),將這些綜合起來(lái),就可
以很明確的回到程序如何運(yùn)營(yíng),運(yùn)營(yíng)結(jié)果如何。
四、實(shí)驗(yàn)代碼
?AREAsymbol,CODE,READONLY
ENTRY
CODE32
START
LDRR0,=nums
MOVR2.#1
INITNUMS
?STRoR2,[RO],#4
oADDR2,R2,#2
oCMPoR2,#101
BNE。INITNUMS
?LDRoR0,=nums
LDR,R2,[RO]
?LDR?R3,[R0]
MOVoRI,#1
FINDMAXMIN
。LDR。R4,[R0],#4
?CMPR2,R4
MOVCCR2,R4
oCMPoR3,R4
。MOVCSR3,R4
?ADDoRI,RI,#1
CMP?R1,#101
BNE。FINDMAXMIN
STOP
bSTOP
AREAData,DATA,READWRITE
nums?SPACE100
END
五、實(shí)驗(yàn)總結(jié)與分析
1、實(shí)驗(yàn)結(jié)果分析
B-Current{…}
FrO0x000081E4
i-rl0x000000€5
pr20x000000€4
kr30x00000001
j-r40x000000€4
Hr50x00000000
0x00000000
i-r70x00000000
其中用紅色方框框起來(lái)的是最后程序運(yùn)營(yíng)的結(jié)果,也就是在R3中保存了最
小數(shù)在R2中保存了最大數(shù),完畢了實(shí)驗(yàn)規(guī)定。
2、在用匯編語(yǔ)言編程之前一方面要看看有沒(méi)有匯編軟件ADS、沒(méi)有的話需要
安裝,WindowsXP安裝起來(lái)比較簡(jiǎn)樸,只需要點(diǎn)擊setup,一直點(diǎn)擊寫一部就
可以,但是假如是Windows7或者更高版本的話就需要在setup的屬性里點(diǎn)擊兼
容WindowsXP,運(yùn)營(yíng)時(shí)以管理員身份運(yùn)營(yíng)才干對(duì)的進(jìn)行安裝。
兩種求和運(yùn)算的編程與調(diào)試
一、實(shí)驗(yàn)?zāi)康摹?/p>
1、掌握循環(huán)的使用技巧,重要擬定循環(huán)的上下界,以及循環(huán)體里需要執(zhí)行
的代碼,防止一些越界的操作。
2、嘗試不同的求和運(yùn)算的算法。
二'實(shí)驗(yàn)內(nèi)容
給定一個(gè)正整數(shù),求從零到這個(gè)數(shù)的所有整數(shù)的和。簡(jiǎn)樸得對(duì)問(wèn)題進(jìn)行分析
可知,這個(gè)功能能過(guò)用兩種方式實(shí)現(xiàn),一種是循環(huán),一種是直接用求和公式計(jì)算出
來(lái),假如從算法的時(shí)間復(fù)雜度來(lái)說(shuō),那肯定是后者時(shí)間復(fù)雜度低,只有0(1),但
是從學(xué)習(xí)的角度,還是要練習(xí)一下循環(huán)結(jié)構(gòu),因此,這里重要用循環(huán)語(yǔ)句實(shí)現(xiàn),以
研究其中的問(wèn)題。
三'實(shí)驗(yàn)重要環(huán)節(jié)
1、打開ADS,新建一工程,再新建一個(gè).s的源文獻(xiàn),將其添加到工程中
去,開始編寫源代碼。
2、鏈接、編譯源文獻(xiàn),檢查語(yǔ)法錯(cuò)誤
OHImagecon?>onentsizes
四CodeRODataRHDataZIDataDebug
的5€04019€ObjectTotals
00000LibraryTotals
E================================================================================
兇CodeRODataRWDataZIDataDebug
E5604019€GrandTotals
E================================================================================
胸TotalROSize(Code+ROData)5€(0.05kB)
TotalRWSize(RHData+ZIData)4(O.OOkB)
。3、用debug進(jìn)行調(diào)試,觀測(cè)寄存器的狀態(tài),在st。p前打斷點(diǎn),全速運(yùn)營(yíng)代
碼,這樣就可以在代碼最后天下來(lái),查看運(yùn)營(yíng)結(jié)果。
AXD-IARM7TDMI-iARMVprqect3mq-O
④fileSearchProcesjofVKVWSystemViewshecuteOption;VAndowHelp
閉閶目&l用叫前|華同口回iiiltni前niEalgnlT而同?同目隙閭Iw川相研制到詞回&I了網(wǎng)
An?nK-1AREAsystc1,C0£€.RZAECKLYJ
RtglsterValueEHTRY
B-Current(??-I
rr?0x00006038
i-rl0x00000000
r20x00000044
-Z30X0000138A
t-r40x00000000
E0x00000040
rfOxOOOOOGOO
OxflOOOOOOO
j-r?0x00040000
-r90X00000000
i-rlO0x00000000
:-ril0x00000000
rrl30X00040000
-X130x00000000
:-sl40x00040040
^OxQOMe02S
S-qwrnZOAlIFt_SVC
sparnscvqifc_Res
?57?<r/Syst?a
tBHQ
S-IRO
?SV:
19m
ARMHOMI-MemorySt*rt^
T,b1-He*-NopreAx|T?b2-Hex-Nopcefii|Tab3-He?-Noprefix|T?M-He?-Noprefix|
I
s(,
3??bjcd
一
8汝E7
FFE7Ee810008Fr7rE3Ee
FFE7ESE9FFESEe
E7黑g
Fre7£8008E81000rr7E8MEe
FFE7E8Ea10008FF7E8Ee
FFE7ES8FF黑E9gEe
H乃
E97M
Fre7£8E8rrEe
10007m
FFE7E800Ea1000FF黑E8Ee
808E7g
FFE7ESE9uFFE9Ee
87M
rrE?E81000rr8E8Ee
00
ForkWp,pretiFtUn?18CdOARMUlARM7TDMIprojtm?f
四、實(shí)驗(yàn)代碼
?AREAsymbol,CODE,READONLY
ENTRY
C0DE32
START
sLDRR0,=sum
MOVRI,#100
MOVR2,#0
MOVR3,#0
LOOP
ADDR2,R2,#1
ADD。R3,R3,R2
SUB,RI,RI,#1
CMPRI,#0
BNELOOP
STRCSR3,[R0]
STOP
MOVR0,#0x18
LDRRI,=0x20236
AREAData,DATA,READWRITE
sumDCD0
END
五、實(shí)驗(yàn)總結(jié)與分析
1、實(shí)驗(yàn)結(jié)果分析
S-Current
|-rO0x00008038
krl0x00000000
pr20xQ00000€4
pr30X000013BA
kr40x00000000
用紅色框圈起來(lái)的是最后執(zhí)行的結(jié)果,也就是將最后0~100的和放在了R3
中,是Ox13BA,二這個(gè)程序采用的是循環(huán)的方式求1~100的和,所以最后一
個(gè)數(shù)字是100,正是R2中的0x64o
2、實(shí)驗(yàn)總結(jié):由于這個(gè)程序里用到了循環(huán)語(yǔ)句,所以就有幾個(gè)點(diǎn)需要注意,也
就是循環(huán)的上下界和循環(huán)體力邊的語(yǔ)句。在代碼實(shí)現(xiàn)中,將R1寄存器的值置為
100,然后再循環(huán)體里每次減一,然后和0進(jìn)行比較,大于零的話繼續(xù),小于等于
零的話就跳出循環(huán)。這里容易犯錯(cuò)的地方就是最后到底是和誰(shuí)比較或者R1的初
值給多少合適。再循環(huán)體里重要做了兩件事,R2從零開始每次加一,而R3就是
截止目前所有數(shù)的和。
排序冒泡程序的調(diào)試與總結(jié)
一、實(shí)驗(yàn)?zāi)康?/p>
1、更加進(jìn)一步理循環(huán)程序設(shè)計(jì),注意循環(huán)嵌套中的一些問(wèn)題,比如條件判斷、
步長(zhǎng)、兩層循環(huán)中間的代碼設(shè)計(jì)。
2、進(jìn)一步學(xué)習(xí)掌握debug調(diào)試的使用技巧,以及存儲(chǔ)器窗口數(shù)據(jù)的觀測(cè),
在存儲(chǔ)器中找到代碼需要的地址。
3、學(xué)會(huì)如何遍歷存儲(chǔ)在存儲(chǔ)器中的數(shù)據(jù),將其讀入寄存器進(jìn)行解決。
二'實(shí)驗(yàn)內(nèi)容
運(yùn)用冒泡排序?qū)⒔o定的一組數(shù)進(jìn)行排序,這里采用升序,在排序完和排序后
查看存儲(chǔ)器的狀態(tài),檢查排序是否成功。
三'實(shí)驗(yàn)重要環(huán)節(jié)
1、打開ADS,新建一工程,再新建一個(gè).s的源文獻(xiàn),將其添加到工程中去,
開始編寫源代碼。
2、鏈接、編譯源文獻(xiàn),檢查語(yǔ)法錯(cuò)誤。
EditViewSevchProjectDebugWindowH“p
ftaNCO■'因后勤
國(guó)回百
ErrorsutdwninM£?Uir?5??t5.aop到a_jIJPath.F\ABX\pr?j*ot6\t*itt
AREAivxboLCODE.READONLY
DebugENTRY
CODE32
ObjectTotalsMOVRO.ro
LibraryTotals
Debug
TotalBOSize(Code+RODakID.O7kB)
TotalRHSlze<RHData,ZIData)O.OIkB)
TotalROMSize(Code+BCZj?RMData)0.1IkB)
DATA.READVRITE
45144100.0.12.10.
>r
。3、用debug進(jìn)行調(diào)試,觀測(cè)寄存器的狀態(tài),在stop前打斷點(diǎn),全速運(yùn)營(yíng)代碼,
這樣就可以在代碼最后天下來(lái),查看運(yùn)營(yíng)結(jié)果。
四、實(shí)驗(yàn)代碼
oAREAsymbo1,CODE,READONLY
ENTRY
C0DE32
START
MOVR0,#0
FORI
LDRR2>=nums
?MOVRI,#0
FOR2
?LDR?R3,[R2]
LDRR4,[R2,#4]
CMP,R3,R4
oLDRGPR5,[R2,#4]
。STRGT。R3,[R2,#4]
?STRGTR5,[R2]
ADDR2,R2,#4
0
?ADDoRI,RI,#1
CMP。RI,#9
BCC。F0R2
ADD??R0,R0,#1
。CMPR0,#9
BCCFORI
AREAData,DATA,READWRITE
nums?DCDio2,3,45,1,44,100,0,12,10,3
END
五、實(shí)驗(yàn)總結(jié)與分析
1、實(shí)驗(yàn)分析
第一張圖為排序前寄存器以及存儲(chǔ)器的狀態(tài)及數(shù)據(jù),重要觀測(cè)兩個(gè)部分,一個(gè)
是寄存器的R2,它代表的是存放哪些數(shù)組地址的首地址,所以從這里開始讀取
數(shù)據(jù)。然后找到地址為0x8040的存儲(chǔ)器,可以看到其中存放了數(shù)組中的十個(gè)數(shù),
其順序和定義時(shí)的順序是同樣的,也就是沒(méi)有順序。
再看第二張圖,這是程序執(zhí)行完以后的寄存器和存儲(chǔ)器的狀態(tài)以及數(shù)據(jù),從標(biāo)
紅的數(shù)據(jù)看一看出,這十個(gè)數(shù)據(jù)都發(fā)生了變化,第一個(gè)是最小的Ox00,最后一
個(gè)是最大的0x0100,這樣就將這十個(gè)數(shù)排序好了。
冒泡排序的實(shí)現(xiàn)方法有很多種,比如可以先將最大的數(shù)推到數(shù)組的末尾,也
可以將最小的數(shù)先拿到數(shù)組的前邊,兩者道理其實(shí)都是同樣,時(shí)間復(fù)雜度更是同
樣,都是o(M),對(duì)于大型的數(shù)據(jù)來(lái)說(shuō),最佳還是采用快速排序,它的速度是相稱快
的。
?AXD-[ARM7TDMI-F:\ARM\prqject5\tests]
等FileSearchProcessorViewsSystemViewsExecuteOptionsWindowHelp
南幡國(guó)I倒*1叫??lI矍回71國(guó)因|||閶回國(guó)|回回回回|分尸,|回別例?
NMEWI-Registers______________________
RegisterValueA
S-Current(...)
hrO0x00000000
i-rinxnnnnnnon
|220x00008044]
:-r30x00000000
?-r40x00000000
r-r50x00000000
hr€0x00000000
:■r70x00000000
?r80x00000000
r-r90x00000000
Friooxoooooooo
kill0x00000000
)U120x00000000
r-rl30X00000000
Hr140x00000000
hpc0x0000800€
i-cpsrnzcvqIFt_SVC
:-spsrnzcvqift_Res
E-Tloav/VuqrainfI
ARMHDMI-MemoryStart虱far和x8O4O
Tabi-He*-Noprefi>|Tab2-Hex-Noprefix|Tab3-Hex-Noprefix|Tab4-Hex-Noprefix|
Address_I0I~~I~345|67|8|~9abIcdIe___ASCII_
0x0000804044800000120000000300000045000000D...........E,
0x0000805001000000440000000001000000000000....D........
0x0000806012000000100000000300000000E800E8
0x000080701000FFE700E800R1000FFE700E8OUE8
oxooooeoeo1000E700E800E81000FFE700E800E8
0x000080901000E700E800E81000FFE700E800E8
OxOOOOSOAO1000E700E800E81000FFE700E800E8
0x000080801000E700ES00E81000FFE700E800E8
0x000080001000E700E800E81000FFE700E800E8
QX000080D01000E700E800E81000FFE700E800E8
QX000080EO1000E700E800E81000FFE700E800E8
OXOOOO8OFO1000E700E800E81000FFE700E800E8
oxooooeioo1000E700E800E81000FFE700E800E8
?FileSearchProcessorViewsSystemViewsExecuteOptionsWindovzHelp
嵇閘。I囿宣用\|I量您]國(guó)回里退?網(wǎng)回|副國(guó)|E向囪國(guó)|回I國(guó)川劇研例」
ASM7TlMI-R?gi:t?rz00000000[0x00008078]andeqr8,r0,rS,rorrO
?00000004(0xe800e800]stnxlarO,{rll,rl3-pc}
RegisterValue
00000008[0xe7ff0010]dci0xe7ff0010;?undefined
SCurrent
0000000c[0xe800e800]stmdarO,{rll,rl3-pc)
r-r00x0000000000000010[0xe7ff0010]|dci0xe7ff0010;?undefined
i-rl0x0000000500000014[0xe800e800]3noiar0,{rll,r!3-pc)
r-r20x0000806800000018[0xe7ff0010]del0xe7ff00
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綜采隊(duì)崗位管理制度總結(jié)(3篇)
- 配置網(wǎng)絡(luò)安全管理制度(3篇)
- 項(xiàng)目建設(shè)資料歸檔管理制度(3篇)
- 《GA 557.12-2005互聯(lián)網(wǎng)上網(wǎng)服務(wù)營(yíng)業(yè)場(chǎng)所信息安全管理代碼 第12部分:審計(jì)規(guī)則代碼》專題研究報(bào)告
- 《筑牢安全防線 歡度平安寒假》2026年寒假安全教育主題班會(huì)課件
- 養(yǎng)老院家屬溝通與反饋制度
- 2026河北空天信息投資控股有限公司社會(huì)招聘7人考試備考題庫(kù)附答案
- 2026湖北省定向東南大學(xué)選調(diào)生招錄備考題庫(kù)附答案
- 2026湖南株洲市天元區(qū)馬家河街道社區(qū)衛(wèi)生服務(wù)中心招聘見習(xí)人員備考題庫(kù)附答案
- 2026班瑪縣教育局面向社會(huì)招聘工作人員招聘40人備考題庫(kù)附答案
- 養(yǎng)老院老人生活設(shè)施管理制度
- (2025年)林業(yè)系統(tǒng)事業(yè)單位招聘考試《林業(yè)知識(shí)》真題庫(kù)與答案
- 2026年七臺(tái)河職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫(kù)有答案解析
- 2026年直播服務(wù)合同
- 掛靠取消協(xié)議書
- 哲學(xué)史重要名詞解析大全
- 銀行借款抵押合同范本
- 新生兒休克診療指南
- DB37-T4975-2025分布式光伏直采直控技術(shù)規(guī)范
- 專題學(xué)習(xí)活動(dòng) 期末復(fù)習(xí)課件 新教材統(tǒng)編版八年級(jí)語(yǔ)文上冊(cè)
- 兒童糖尿病的發(fā)病機(jī)制與個(gè)體化治療策略
評(píng)論
0/150
提交評(píng)論