實驗一CCS的用法_第1頁
實驗一CCS的用法_第2頁
實驗一CCS的用法_第3頁
實驗一CCS的用法_第4頁
實驗一CCS的用法_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 電子信息學院DSP結構原理及應用實驗組員:實驗報告書寫: 日期:地點:基礎教學樓B座520實驗室 實驗一 CCS的用法1、 實驗目的:1)了解TMS320C54X匯編語言程序對的基本格式以及匯編、鏈接的基本過程。2)初步熟悉CCS的用法。實驗條件:1)硬件DSK板及軟件開發平臺工具CCS。2)源程序清單lab1.asm,鏈接命令文件lab1,cmd.二、實驗步驟:1、打開桌面CCS2(5000)圖標,啟動CCS集成開發環境。2 、創建一個新工程;從project中選擇new項,輸入工程名如lab1,單擊完成。3、 將文件添加到工程中: a、從project中選擇Add Files to pr

2、oject,在彈出的對話框選擇 lab1.asm文件并單擊打開;或在工程lab.pjt處單擊右鍵,選擇菜單命令Add Files to project。b、同理將lab1.cmd文件添加入工程。4、 對工程進行匯編、編譯、鏈接:執行菜單命令project-Rebuild All,或在工具欄上單擊Rebuild All圖標。5、 加載程序:執行菜單命令File-Load Program,在彈出的對話框中選擇lab1.out并單擊打開按鈕。6、 運行程序:選擇Debug中的Run運行程序或單擊工具欄的Run圖標、Single Step圖標運行程序。三實驗要求:1、 了解CCS菜單命令及產生各個顯示

3、窗口的操作。2、 操作各種仿真命令 進入、退出CCS; 選擇當前窗口,改變窗口的大小。 加載程序。 運行程序(包括單步運行)。 檢查修改CUP寄存器。 檢查修改存儲器單元內容。 用觀察窗口檢查變量、CPU寄存器或存儲單元內容。 四、實驗源程序:* lab1.asm y= a1*x1+a2*x2+a3*x3+a4*x4 * .title lab1.asm ;匯編語言源文件取名 .mmregs ;定義存儲器印象寄存器STACK .usect STACK,10h ;為堆棧分配10個空間 .bss x,4 ;為變量x分配4個存儲單元 .bss a,4 ;為系數a分配4個存儲單元 .bss y,1 ;為

4、變量y分配1個存儲單元 .def start .data ;定義數據代碼段 table: .word 1,2,3,4 ;為table開始的8個存儲單元賦值 .word 8,6,4,2 .text ;定義文本代碼段start: STM #0,SWWSR STM #STACK+10h,SP ;設置堆棧指針 STM #table,AR1 ;AR1指向table首地址 STM #x,AR2 ;AR2指向x首地址 STM #7,AR0 ;寄存器AR0賦值7 LD #0,A ;累加器清零loop: LD *AR1+,A ;將AR1的值賦給累加器A中 STL A,*AR2+ ;將A的低16位存儲到AR2中

5、BANZ loop,*AR0- ;輔助寄存器 CALL SUM ;調用乘法累加子程序SUMend: B end ;循環等等SUM: STM #a,AR3 ;將系數的首地址賦給AR3 STM #x,AR4 ;將變量x的首地址賦給AR4 RPTZ A,#3 ;將累加器清零,重復執行下條指令4次 MAC *AR3+,*AR4+,A;執行乘法累加運算,結果存儲在累加器A中 STL A,y ;將結果(A的低16位)送往變量y存儲單元 RET .end5、 實驗體會:1)、出現一個warning: entry point other than _c_int00 specified,將start 用_c_i

6、nt00代替后warning消失,說明標號_c_int00更精確。2)、堆棧賦值改為20時,SP值變為100,但對整體無影響,僅只是為堆棧分配的存儲單元增加了。3)、4次loop循環中,PC指針由F00B到F00D依次變化,說明 LD *AR1+,A ;STL A,*AR2+;BANZ loop,*AR0-;三條語句的執行周期均為1.實驗二 數據尋址方式1、 實驗目的1、 熟悉TMS320C54X的各種尋址方式。2、 繼續練習CCS軟件用法。二、實驗條件本實驗已準備的程序于表2.1中表2.1 數據尋址方式實驗程序序號實驗內容源程序名鏈接文件名1立即尋址Lab2a.asmLab2a.cmd2絕對

7、尋址Lab2b.asmLab2b.cmd3累加器尋址Lab2c.asmLab2c.cmd4直接尋址Lab2d.asmLab2d.cmd5間接尋址Lab2e.asmLab2e.cmd6存儲器映象尋址Lab2f.asmLab2f.cmd7堆棧尋址Lab2g.asmLab2g.cmd 2、 實驗步驟1、 雙擊桌面上的“CCS”圖標,啟動”CCS”開發環境。2、 在file菜單中選擇open項,打開并閱讀每一種尋址方式的源程序和鏈接命令文件。3、 創建新工程并添加文件,包括(.asm 源文件和.cmd鏈接命令文件)。4、 匯編、編譯、鏈接生成輸出文件并加載程序。5、 用單步方式執行程序,觀察程序中各條

8、指令執行結果。6、 在程序中添加若干條類似這樣的尋址方式的指令,并匯編、編譯、鏈接、執行。3、 實驗源程序1立即尋址Lab2a.asmLab2a.cmd;*; Immediate Addressing;*.title lab2a.asm.defstart.textstart:LD#100,A ;長立即數100加到累加器A,變為A=0x0064 LD#10h,4,A ;十六進制數10h左移4位后加載到累加器A ,A = 0x0100RSBX SXM ;狀態寄存器復位 LD#32769,B ; 立即數32769轉為16進制加載到B,B = 0x8001 LD#4000h,16,B ;十六進制數40

9、00h左移16位后加載到B,B = 0x40000000hereBhere .end _2絕對尋址Lab2b.asmLab2b.cmd;*; Absolute Addressing;*.title lab2b.asm.defstartSAMPLE.set0060h .bssx,10 .datatable:.word1 .word2 .word3 .word4 .word5 .textstart:LD#4AB8h,A ;4AB8h加載到累加器A,A = 4AB8; STLA,SAMPLE STM#0060h,AR2 ;寄存器AR2指向首地址0x0060 RPT#4 ;重復運行4次 MVPDtab

10、le,*AR2+ ;將程序存儲器標號為table地址單元中數據傳送到寄存器AR2中,AR2變為0x0065 RPT#4 MVKD#0061h,*AR2+ ;將地址為0061h的數據存儲器中的數據傳到AR2,AR2變為0x006A LDx,B ;B = 0x0001 LD0061h,A ; A = 0x0002hereBhere .end _3累加器尋址Lab2c.asmLab2c.cmd;*; Accumulator Addressing;*.title lab2c.asmSTACK .usect STACK,10h.defstart.bssx,10.datatable:.word1234h,

11、5678h,9abch,0def0h.textstart:STM#STACK+10h,SP ; SP = 90LD#table,A ;A = 0xE010hSTM#0060h,AR2 ;AR2指向首地址0x0060hRPT#3 ; 重復運行三次READA*AR2+ ;立即數尋址:AR2指向的地址空間存入“word”LD#ADD_1,A ;A = 0xE00DhCALAA ;調用子程序ADD_1hereBhereADD_1:ADD#1,A ;A = 0xE00EhRET .end4直接尋址Lab2d.asmLab2d.cmd;*; Direct Addressing;*.title lab2d.

12、asm.defstart.bssx,1.bssy,1.textstart: ST#0001, *(0180h) ;將數據0x0001存到地址為0x0180h的空間 ST#1000, *(01ffh) ;將數據1000b存到地址為0x01ffh的空間 ST#500, *(0200h) ;將數據500b存到地址為0x0200h的空間 LD#3,DP LDx,A ;A = 0x03E8 ;LD#4,DP ADDy,A ;A = 0x03E9hereBhere .end 結果可發現,程序執行沒有達到預期的結果(A = x + y = 1500h)其原因是x和y存放在不同頁面,執行“ADD y,A”指令

13、時,DP = 3,結果變成0180h單元中的數(0x0001)加至累加器A,故而結果為:A = 0x03E9. 5間接尋址Lab2e.asmLab2e.cmd;*; Indirect Addressing;*.title lab2d.asm.defstart.bssx,10hstart:ST#1000h,*(0060h) ;將數據0x1000存到地址為0x0060h的空間ST#2000h,*(0061h) ;將數據0x2000存到地址為0x0061h的空間ST#3000h,*(0062h) ;將數據0x3000存到地址為0x0062h的空間ST#4000h,*(0063h) ;將數據0x400

14、0存到地址為0x0063h的空間LD#1000h,A ;A = 0x1000hSTM#0060h,AR1 ;AR1首地址為0x0060hMAR*AR1+ ;修改AR1地址,使AR1指向0x0061h,間接尋址STM#2,AR0 ;AR0所在首地址存放2個地址跳變LD*AR1+0,A ;A = 0x2000hLD*AR1,B ;B = 0x4000hhereB here .end6 存儲器映象尋址 Lab2f.asm Lab2f.cmd ;*; Memory-Mapped Register Addressing;*.title lab2f.asm.defstart.mmregs.textstar

15、t:STM#1234h,AR1 STM#5678h,AR2STM#2,SWWSRLDMAR1,A ; A = 0x1234hMVMMAR1,AR3 ;AR3指向0x1234h,存儲器印象尋址STLMA,AR2 ;AR2 指向0x1234hhereBhere .end7堆棧尋址Lab2g.asmLab2g.cmd;*; Stack Addressing;*.title lab2g.asm.defstartSTACK:.usectSTACK,10h.bssx,10h.textstart:STM #STACK+10h,SP x的首地址為0x0060hST#1234h,*(x) 0x0060h 存入

16、1234hST#5678h,*(x+1) 0x0061h 存入 5678hST#9abch,*(x+2) 0x0061h 存入 9abchSTM#x,AR1RPT#2PSHD*AR1+ ;壓棧,AR1指向0x0063h,SP = 8D;* ;堆棧尋址RPT#2 ;重復運行2次 0x0063h 存入 1234hPOPM*AR1+ 0x0064h 存入 5678h hereBhere 0x0065h 存入 9abch .end四、幾種尋址方式代碼舉例: 1,立即數尋址:LD #80h,A 2,絕對尋址:MVDK 1000h, *AR5 MVPD TABLE, *AR5 PORTR FIFO, *AR5 LD *(BUFFER), A

溫馨提示

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

評論

0/150

提交評論