2023年ARM匯編實(shí)驗(yàn)報(bào)告_第1頁(yè)
2023年ARM匯編實(shí)驗(yàn)報(bào)告_第2頁(yè)
2023年ARM匯編實(shí)驗(yàn)報(bào)告_第3頁(yè)
2023年ARM匯編實(shí)驗(yàn)報(bào)告_第4頁(yè)
2023年ARM匯編實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論