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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

電子科技大學(xué)

實(shí)驗(yàn)報告

課程名稱微解決器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì)

實(shí)驗(yàn)名稱。ARM匯編基礎(chǔ)實(shí)驗(yàn)

任課教師實(shí)驗(yàn)教師姓名學(xué)號

實(shí)驗(yàn)地點(diǎn)分組號時間年—月—日

一、實(shí)驗(yàn)?zāi)康?/p>

I.熟悉并掌握常用ARM匯編指令

2.熟悉并掌握“C+匯編”混合編程技術(shù)

3.純熟使用ARM軟件開發(fā)調(diào)試工具Keil

二、實(shí)驗(yàn)內(nèi)容

1.學(xué)習(xí)使用Keil開發(fā)工具

2.實(shí)現(xiàn)累加運(yùn)算功能(匯編編程,必做)

3.實(shí)現(xiàn)字符串拷貝功能(C+匯編,必做)

4.實(shí)現(xiàn)求和運(yùn)算功能(C+匯編,必做)

5.實(shí)現(xiàn)冒泡排序算法(匯編編程,選做)

微解決器系統(tǒng)結(jié)構(gòu)與嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報告

三、實(shí)驗(yàn)環(huán)節(jié)

L學(xué)習(xí)使用keil開發(fā)工具

1.點(diǎn)擊“KeiluVision5”打開軟件主窗口。

2.點(diǎn)擊ProjeCt->NewuVis1onProject建立新工程。

3.為新工程命名。

4.為工程選擇目的器件:三星S3c2440A。

5.選擇是否添加S3c244O.s啟動文獻(xiàn):C源程序工程選“是”,匯編源程序工程選

普。

6.在工程SoUrceGroup上點(diǎn)右鍵選擇添加新工程文獻(xiàn)。

7.選擇源文獻(xiàn)類型。

8.錄入源代碼并保存。

9.對工程進(jìn)行build或rebui1do

10.點(diǎn)擊debug按鈕進(jìn)入/退出調(diào)試,忽略代碼大小限制。使用單步調(diào)試,仔細(xì)觀測過

程中關(guān)鍵寄存器值的變化。

2.各個實(shí)驗(yàn)環(huán)節(jié)

實(shí)驗(yàn)L1:用匯編語言實(shí)現(xiàn)1+2+...+N的累加(必做)

1.建立新工程,加入實(shí)驗(yàn)1.2文獻(xiàn)夾中的sum.s

2.用匯編補(bǔ)充算法核心部分,代碼參考流程圖如下圖所示。

「RO=RO+R1

'YES

結(jié)果溢出??SUM_END

NO

'YES

R1>=N

NO

R1=R1+1

3.使用單步調(diào)試,仔細(xì)觀測過程中關(guān)鍵寄存器值的變化。

實(shí)驗(yàn)1.2:C調(diào)用匯編實(shí)現(xiàn)字符串拷貝功能(必做)

1.建立新工程,加入實(shí)驗(yàn)L3文獻(xiàn)夾中的main.c和testf1le.s(同一個工程下添加兩個

文獻(xiàn)一起編譯)。

2.補(bǔ)充完畢源代碼中缺失的部分,實(shí)現(xiàn)字符串拷貝功能

3.運(yùn)營Debug進(jìn)行調(diào)試

實(shí)驗(yàn)1.3:匯編調(diào)用C實(shí)現(xiàn)實(shí)現(xiàn)求和1+2+...+N(必做)

1.建立新工程,加入實(shí)驗(yàn)1.4文獻(xiàn)夾中的Sum.c和testfile.s(同一個工程下添加兩個文

獻(xiàn)一起編譯)。

2.補(bǔ)充完畢源代碼中缺失的部分,通過調(diào)用c函數(shù)g()實(shí)現(xiàn)l+2+3+glovbl,結(jié)果存

在R8中。

3.運(yùn)營Debug進(jìn)行調(diào)試

實(shí)驗(yàn)1.4:ARM匯編實(shí)現(xiàn)冒泡算法(選做)

1.建立新工程,加入實(shí)驗(yàn)1.5文獻(xiàn)夾中的maopao.S。

2.補(bǔ)充完畢源代碼中缺失的部分,實(shí)現(xiàn)冒泡排序功能。

3.運(yùn)營Debug進(jìn)行調(diào)試

四、實(shí)驗(yàn)結(jié)果

實(shí)驗(yàn)1.1用ARM匯編實(shí)現(xiàn)l+2+...+n的運(yùn)算。

在sum.s文獻(xiàn)中,添加如下核心代碼:

SUN_L1

ADDRO,RI;R0,RI求和

BVSSUM_END;判斷是否溢出,溢出則執(zhí)行SUM_END程序,求和結(jié)束

CMPRI,R2;R1、R2作差與。進(jìn)行比較

BHSSUM_END;R1〉=R2,則執(zhí)行SUM_END程序,否則向下繼續(xù)執(zhí)行

ADDRI,#1;R1增1

BSUNLI;循環(huán)運(yùn)營SUN_L1

調(diào)試過程:

1.設(shè)立N的值并賦值給R0

Register|ValueOxOOOOOOOE3000ADDR0,*0x00

19:LDRR0,7;設(shè)置子程序SUM_N的入口參數(shù)

2Current

|0x00000010

0x000000642064IMOVRO,*0x64

0x0000000020:BLSUMN;謁用子程序SUMN

0x000000000x00000012F0000x00000018-Parctl

0x000000000x00000014F8010x00000018-Part12

0x00000000

0x00000000

0x00000000

0x00000000Jsum.s

0x00000000;功能:計(jì)算1+2+3—...+N

0x00000000

:說明;N>=。,當(dāng)N=0時結(jié)果為0,當(dāng)N=I時結(jié)果為1

RIO0x00000000

Rll0x00000000

R120x00000000EQU100;定義N的值100

RI3csp)0x3O003FO0AREAExaiqples,CODE,READONLY:聲明代碼斷Examples3

R14HR)0x00000000ENTRY;標(biāo)識程序入口

IRI5(PC)0x000000127

I-CPSROxOOOOOOF3CODE32

0

9ARMCODE

0

010

V011LDRSPr-0X30003F00;設(shè)置堆枝指針

I12ADRRO,THUMB_CODE+1;

137跳轉(zhuǎn)并切換處理器狀態(tài)

T14;聲明文字池

M0x1315

SPSR0x00000000

+16CODE16

User/Systea

+17THUMBCODE

*FastInt...

Interrupt18

+

Superv...19LDRR0,-N;設(shè)置子程序SUM_N的入口參數(shù)

+

Abort20BLSUM_NSUMN

+;調(diào)用子程序

UndefinedBTHUMBCODE

-21

Internal22

PC$0x00000012

23;SUMN

ItodaSupervisor.Th^:.44-er-.

2.將R0=N的值復(fù)制給R2

,一y,+J-??????-LXJ▼115ii

7

豺畫「助o-3n|?回回武叵)國熄?巨方―/?國?國?立?

Registers?畫Disassembly

;若則返回

Register34:BEQSUM_ENDNR,

-Current)x00000010D0093EQ0x00000032

35:CMP

RO0x00000064R2,tl

RI0x00000000X0000001E2AOICMPR2,#0x01

0x00000064t36:BEQSUM_END;若21,則返回

E?0x00000000||0x00000020D007BEQ0x00000032

L40x00000000知44》工*

F50x00000000

I.-:

0x00000000

hJr

0x000000001sums

0x00000000

;功能:計(jì)算1+2+3+................+N

0x00000000

;入口參數(shù):RON的值

0x00000000

0x00000000;出口參數(shù):R0運(yùn)行結(jié)果

0x00000000;占用資源:R0

Ox3O0O3EE0;說明:當(dāng)N=0時結(jié)果為0,當(dāng)N=1時結(jié)果為1

0x00000017;若運(yùn)算溢出.結(jié)果為。

|R15(FC)OxOOOOOOlC

I-CPSROxOOOOOOF3SUMN

N0

'PUSH{R1-R7,LR);寄存器入棧保護(hù)

Z0

HOVSR2R0;將口的值復(fù)制到R2,并影響相應(yīng)條件標(biāo)志

C0r

V0BEQSUM_END:若N?0,則返回

,--,三

I1

F1BEQSUM_END;若所1,則返回

T1MOVRI,#!;初始化計(jì)數(shù)器RW1

M0x13

MOVR0*0;初始化計(jì)數(shù)器R07

ffiSPSR0x00000000

*User/System

FastIni..

?Interrupt;用匯鐮實(shí)現(xiàn)算法核心部分

&Supers...ADDRO,RO,R1;

3.判斷N是否為0或者,改變標(biāo)志位C

|Value|0x0000001CD009BEQ0x00000032

Register

35:CMPR2,1l

-Current

|0x0000001E2AOI

0x00000064CMPR2,#0x01

0x0000000036:BEQSUM_END;若所工,則返回

0x00000064^0x00000020D007BEQ0x00000032

0x0000000037:;初始化計(jì)數(shù)器R?1

0x00000000|0x00000022

Rlr#0x01

0x00000000

38:MOVR0,*。;初融化計(jì)數(shù)器R0?l

0x00000000

39:SUN_

0x00000000

0x0000000040:

0x0000000041:;用匯編實(shí)現(xiàn)算法核心部分

R100x0000000010*000000242000MOVRO.tOxOO

Rll0x00000000

R120x00000000

R13GF)Ox3OO03EEOsums

:愛明:當(dāng)NT時經(jīng)果為。.當(dāng)NY時結(jié)果為1

|R15(PC)0x00000020

;若運(yùn)算溢出-結(jié)果為0

|CPSRQx200000F3

PUSH{R1-R7,LR);寄存器入棧保護(hù)

MOVSR2rR0;將11的值復(fù)制到R2,并影響相應(yīng)條件標(biāo)三

BEQSUM_END;若加0,則返回

CMPR2,#l

BEQSUM_END;若加工,則返回

0x13

3SPSR0x00000000Ri,n;初始化計(jì)數(shù)器R?1

封User/SystenR0,10;初始化計(jì)數(shù)器R0-1

31FastIni..

51Interrupt

研Sxiperv...;用匯編實(shí)現(xiàn)算法核心部分

51'Abort

ADDRORORl;

3"Undefinedft

SUMEND;

dInternal

PC$0x00000020

ModeSupervisor

Stat?z24

S?c0.00000200ADD

3CPI5

?+)-「PIS-r

4.將R0,R1分別初始化為0與1

Registers埠|tJjuiiassemoi)

RegisterIValue,用匯纏妥現(xiàn)算法核心部分

RD0x000000002000MOVR0,#0x00

0x00000001ADDRO,R0,RI;

0x000000641840ADDR0zRO,RI

0x0000000043:BVSSUM_END;

0x0000000044:

0x00000000

)x00000028D603BVS0x00000032

0x00000000

45:

0x00000000CMPR1,R2;

0x000000004291CMPRl/R2

0x00000000BHSSUM_END;

0x00000000D201BCS0x00000032

0x00000000

0x00000000

0x30003EEQsums

BEQSUM_END;若-一。,則返回

|R15(K)0x00000026

|CPSROx60000QF3CMPR2,tl

0BEQSUMEND;若21,則返回

MCV:,r

MOVR0,#0;初始化計(jì)數(shù)器ROT

0SUN_L1

I

F;用匯編實(shí)現(xiàn)算法核心部分

T|ADDR0R0R:;

M0x13rr

ESPSR0x00000000BVSSUM_END;

?JUser/System

.t!FastInt…CMPR1,R2;

+'

*jInterr3tBHSSUM_END;

+JSuperv...ADD

+!,Abort

3SUN_L1;

hdefined

5.將R0+R1賦值給RO

r\cyiaici3

RegisterValue

41:;用匯縫實(shí)現(xiàn)算法核心部分

-Current

|R00x00000001|0x000000242000MOVRO,#0x00

0x0000000142:ADDRO,RO,RI;

0x00000064|0x000000261840ADDRO,RO,RI

R10x0000000043:BVSSUMEND;

R20x0000000044:

R30x00000000

D603BVS0x00000032

R40x00000000

RM545:CMPR1,R2;

0x00000000

10x0000002A

0x000000004291CMPR1,R2

R7即

0x0000000046:BHSSUM_END;

R90x00000000■0X0000002CD201BCS0x00000032

R10x00000000?□

R1

R10x00000000

R1(SP0x30003EE0Jsums

R1(LR0x00000017

BEQSUM_END;若加0,則逐茴

R15(PC)0x00000028

CMPR2,#l

CPSROxOOOOOOF3

BEQSUM_END;若?口,則返回

MOVRI,Il;初始化計(jì)數(shù)器Rl=l

MOV;初始化計(jì)數(shù)器R0?l

V0SUNLI

I1

;用匯編實(shí)現(xiàn)算法核心部分

T1

ADD,,?

M0x13J

ESPSR0x00000000BVSSUMEND;

User/System

FastInt.CMPRlrR2;

InterruptBHSSUM_END;

Sapcrv...ADD,一,J:

Abort

Undefined

6.判斷是否溢出與R1是否大于等于R2=N,改變標(biāo)志位N

”:;用匯編實(shí)現(xiàn)算法核心部分

Value

BXt.0x000000242000MOVRO,*0x00

.cur

.R00x0000000142:ADDR0,R0,RI;

■0x00000026

K10x000000011840ADDRO,RO,RI

R20x0000006443:BVSSUMEND;

K3

R40x0000000044:

BS0x0000000010x00000028D603BVS0x00000032

R60x00000000

45:CMPR1,R2;

K70x00000000

R8■OX0000002A4291CMPR1,R2

0x00000000

R9:;

R10x0000000046BHSSUMEND

R10x00000000=J>0x0000002CD201BCS0x00000032

R10x00000000

K1

R10x00000000

G0x00000000

p)Ox30OO3EEOJ

JR)0x00000017

ILISUM_END;^N=O,則返回

R15CPC)OxOOOOOOZC

R2,#l

HCPSROx800000F3

;若只=則返回

1SUM_END1,

RI,Il

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論