利用跳轉(zhuǎn)表實現(xiàn)程序分支_第1頁
利用跳轉(zhuǎn)表實現(xiàn)程序分支_第2頁
利用跳轉(zhuǎn)表實現(xiàn)程序分支_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、 實驗一 利用跳轉(zhuǎn)表實現(xiàn)程序分支一、實驗?zāi)康模?、 熟悉 ADS1.2 開發(fā)環(huán)境,掌握基本的調(diào)試方法;2、 熟悉 ARM9 匯編語言的程序設(shè)計方法;3、 熟悉 ARM9 的基本語法。二、實驗內(nèi)容利用跳轉(zhuǎn)表實現(xiàn)具有下述功能的匯編程序:(1)當(dāng) r0 為 1 時,調(diào)用子程序 CASE1,完成 r1 加 r2 把結(jié)果放入 r3 的計算;(2)當(dāng) r0 為 2 時,調(diào)用子程序 CASE2,完成 r1 減 r2 把結(jié)果放入 r3 的計算;(3)當(dāng) r0 為 3 時,調(diào)用子程序 CASE3,完成 r1 與 r2 把結(jié)果放入 r3 的計算;(4)否則,完成 r1 或 r2 把結(jié)果放入 r3 的計算。三、實驗

2、步驟:安裝完 ADS1.2 后在其安裝目錄下存在如下兩個文件,即 Codewarrior for ARM Developer Suit和 AXD Debugger,這兩個文件分別是代碼編輯文件和調(diào)試文件,在實驗中我們主要使用這兩個文件。運行 ARM Developer Suite v1.2 中的 Codewarrior for ARM Developer Suit 文件2、選擇 File-New 將打開新建文件窗口,如圖 2 所示。選擇 Project 標(biāo)簽新建一個 ARM 可執(zhí)行的映像文件(ARM Executable Image),并填入適當(dāng)?shù)捻椖棵≒roject name)及選擇合適的

3、存放項目的目錄(Location),最后點擊確定。3、新建一個*.s 文件用于存放我們的實驗程序,其建立步驟如下。點 File-New 將打開新建文件窗口,在新打開的窗口中選擇 Flie 標(biāo)簽,輸入文件名。也可以通過工具欄中的按鈕實現(xiàn)上述功能。值得注意的是由于在這里我們使用匯編語言編制程序因此文件擴展名一定要存為*.s。4、輸入所設(shè)的匯編語言并保存,注意擴展名必須為*.s。在輸入設(shè)計文件時需要注意以下幾點:(1)標(biāo)號必須頂格書寫,而指令、偽指令和指示符前必須至少空一格空格,為了使程序格式清晰,通常使用標(biāo)號必須頂格書寫,而指令、偽指令和指示符前必須至少空一格空格,為了使程序格式清晰,通常使用 T

4、ab 鍵;(2)指令、偽指令和指示符大小寫均可;(3)注釋為英文狀態(tài)下的“;”。5、接下來開始調(diào)試所設(shè)計的文件,調(diào)試文件主要在項目窗口中進行。(1)添加文件到項目。將鼠標(biāo)指在項目窗口的空白處,點擊右鍵,選擇 Add Flie將設(shè)計文件添加到項目中。(2)指定調(diào)試環(huán)境。選擇 DebugRel Settings 打開調(diào)試環(huán)境設(shè)置窗口,在這里可以進行相應(yīng)的設(shè)置,我們只需將 Language Settings 中的 ARM Assembler 中的 Target 選為 ARM920T 即可(系統(tǒng)默認為 ARM7TDMI,若只為了實現(xiàn)軟件仿真,也可以不改變微處理器,因為 ARM920T 與ARM7TDM

5、I 均使用同一套 ARM 指令集)。(3)匯編文件。點擊 Make 按鈕匯編我們設(shè)計的文件,并修正錯誤。當(dāng)沒有錯誤時就可以進行調(diào)試了。(4)調(diào)試文件。在這里我們使用 ADS1.2 中的 AXD Debugger 進行程序調(diào)試,可以通過選擇Debug 按鈕調(diào)用 AXD Debugger,其界面如圖 4 所示(若 AXD 未能打開所調(diào)試的程序,可以選擇 AXD Debugger 中的 Options|Target 配置處理器)。4、 實驗的源程序;利用跳轉(zhuǎn)表實現(xiàn)具有下述功能的程序;if r0=1 then CALL CASE1 (r3=r1+r2);else if r0=2 then CALL C

6、ASE2 (r3=r1-r2);else if r0=3 then CALL CASE3 (r3=r1&r2);else DEFAULT (r3=r1|r2);AREA JumpTest,CODE,READONLY ; 定義代碼段CODE32 ; 設(shè)置為 arm 指令集ENTRY ; 程序入口startMOV r0, #1 ; 初始化程序中使用的寄存器MOV r1, #3MOV r2, #2ADR r4, JumpTable ; 將跳轉(zhuǎn)表地址送給 r4CMP r0, #1 ; if r0=1 then CALL CASE1MOVEQ r3, #0LDREQ pc, r4,r3,LSL

7、#2CMP r0, #2 ; if r0=2 then CALL CASE2- 5 -MOVEQ r3, #1LDREQ pc, r4,r3,LSL #2CMP r0, #3 ; if r0=3 then CALL CASE3MOVEQ r3, #2LDREQ pc, r4,r3,LSL #2DEFAULT ; otherwise CALL DEFSULTORR r0, r1, r2SWITCHENDMOV r0, #0x18 ; 調(diào)用軟中斷 返回操作系統(tǒng)LDR r1, =0x20026SWI 0x123456JumpTable ; 定義跳轉(zhuǎn)表DCD CASE1DCD CASE2DCD CASE3CASE1 ; 子程序 1ADD r3, r1, r2B SWITCHENDCASE2 ; 子程序 2SUB r3, r1, r2B SWITCHENDCASE3 ; 子程序 3AND r3, r1, r2B SWITCHENDEND五、實驗體會 通過這次實驗,讓我初步了解了嵌入式開發(fā)的環(huán)境建立,熟悉ARM9的基本語法和嵌入式系統(tǒng)的操作,對課上所學(xué)的東西有了進一步的認。通過和同學(xué)的討論

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論