



版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.實驗三、向量文件的編寫及多個文件的鏈接一、實驗目的1. 編寫復位向量文件 vectors.asm。2. 多個文件的鏈接。3. 編寫復位和中斷向量文件。4. 仿真外部中斷。二、實驗條件lab3.asm 和 lab3.cmd 文件三、實驗步驟1. 雙擊桌面上 CCS 2圖標,啟動 CCS集成開發環境。2. 建立新工程,并將 lab3.asm 和 lab3.cmd 添加入工程。3. 按照 3.6.4 節中的例子,編寫復位向量文件vectors.asm 并將該文件添加入工程。4. 為了將 lab3 和 vectors 兩個文件相鏈接,對 lab3.asm和 lab3.cmd文件進行必要的修改。5.
2、用菜單命令對工程的所有文件進行匯編、編譯、鏈接生成輸出文件。6. 加載程序并單步執行 lab3.out 文件,仔細觀察復位向量的作用。7. 參看教材 4.4 節中的內容,仿真外部中斷 INT2:在 lab3.asm 中,增加一段中斷服務子程序 INT_2.dat,其內容.將累加器 A 變負。修改 lab3.asm,開放 INT2 中斷。修改 vectors.asm,增加 INT2 中斷向量。編寫仿真外部中斷用的數據文件,文件名為INT_2.dat,每隔100 個時鐘周期向CPU發出一次中斷請求,直到仿真結束。對工程中所有文件重新匯編、 編譯、鏈接生成新的輸出文件。執行前,從 Tool 菜單中選
3、擇,用鼠標選中要連接 Pin Name 再按 connect 按鈕,選擇輸入文件 INT_2與 INT2 引腳相連,單擊打開按鈕。加載程序,并利用單步方式執行程序,注意觀察中斷向量在程序執行過程中的作用。四、實驗程序* lab3.asmy= a1*x1+a2*x2+a3*x3+a4*x4*.title"lab3.asm".mmregs;定義存儲器映像寄存器STACK .usect"STACK",10h;給堆棧分配 16 個存儲單元.bssx,4;給 x 分配 4 個存儲單元.bssa,4.bssy,1.defstart;定義標號 start.defINT
4、_2.data;定義數據段.mmregstable:.word1,2,3,4;為標號 table 開始的.word8,6,4,2;8 個存儲單元賦初值.text;定義文本段start:STM#STACK+10h,SP;設置堆棧指針STM#table,AR1;AR1 指向 table 的首地址STM#x,AR2;AR2 指向 x 的首地址STM#7,AR0;將 AR0 賦 7LD#40h,A;將立即數 40h 加載到 A 累加器STM#0,SWWSR;SWWSR置 0,不插等待周期RSBX INTM;開放全部可屏蔽中斷STM#04h,IMR;開放 INT2 中斷loop:LD*AR1+,A;將
5、AR1中數據加載到 A 累加器STLA,*AR2+;將 A 低 16 位送往 AR2寄存器所指地址BANZloop,*AR0-;重復執行 7 次CALLSUM;調用 SUM 子程序end:Bend;循環等待SUM:STM#a,AR3; AR3 指向 a 的首地址STM#x,AR4; AR4 指向 x 的首地址RPTZA,#3; 將 A 清零,重復執行下條指令3 次.MAC*AR3+,*AR4+,A;相乘累加存入 A 累加器STLA,*AR2;將 A 的低 16 位送往 AR2所指向的地址RET;子程序返回INT_2: NEG A;將 A 累加器變負RETE;開中斷,從中斷返回.end;程序結束
6、五、實驗現象每隔 100 個時鐘周期來一次中斷,累加器A 中的數值變負六、實驗體會學習了如何設置中斷,及源程序和向量文件的鏈接,編寫仿真外部中斷的數據文件,更直觀的認識到程序是如何執行中斷的。.實驗四匯編語言程序設計一、實驗目的通過實驗熟悉指令系統, 初步掌握匯編語言程序設計的基本方法和技巧。二、實驗條件在第五章基礎上進行。三、實驗內容1.編寫實驗小數乘法累加的匯編語言程序lab4a.asm。其中 a=0.1,0.2,0.3,0.4,0.5。2.將第五章例 9 和例 10 組合成一個程序lab4b.asm,實現對一個數組 x5=1000h,2000h,3000h,5000h進行初始化,并利用塊
7、重復操作指令將該數組每個元素加一。3.將第五章中的例20 或例 21,分別編寫成完整的除法運算程序lab4c1.asm和 lab4c2.asm。4.編寫實現兩個 64 位數相加的匯編語言程序lab4d.asm。5.在設計好上述每一個匯編語言程序的同時,均應設計相應的鏈接命令文件 lab4x.cmd,并利用 CCS進行調試。四、實驗程序lab4a.* lab4a.asmy= a1*x1+a2*x2+a3*x3+a4*x4+a5*x5*.title"lab4a.asm".mmregsSTACK .usect"STACK",10h;給堆棧分配 16 個存儲單元
8、.bssx,5;給 x 分配 4 個存儲單元.bssa,5.bssy,1.defstart.datatable:.word1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10; 為標號 table 開始的 10 個存儲單元賦初值。.word1*32768/10,2*32768/10,3*32768/10,4*32768/10,5*32768/10; 分別是 0.1,0.2,0.3,0.4,0.5, 0.1,0.2,0.3,0.4,0.5。.text;定義文本段start:SSBXFRCT;將小數方式位狀態寄存器置一STM#STACK+10
9、h,SP; 設置堆棧指針STM#table,AR1; AR1指向 table 的首地址STM#x,AR2; AR2 指向 x 的首地址STM#9,AR0.LD#0,Aloop:LD*AR1+,A; 將 AR1中數據加載到 A 累加器STLA,*AR2+; 將 A 低 16 位送往 AR2寄存器所指地址BANZloop,*AR0-; 重復執行 9 次CALLSUM;調用 SUM 子程序end:Bend;循環等待SUM:STM#a,AR3; AR3 指向 a 的首地址STM#x,AR4; AR4指向 x 的首地址RPTZA,#4; 將 A 清零,重復執行下條指令4 次MAC*AR3+,*AR4+,
10、A;相乘累加存入A 累加器STHA,y;將 A 的高 16 位送往 yRET;子程序返回.end;程序結束lab4b.title"lab4b.asm".mmregs;定義存儲器映像寄存器.bssx,5;給 x 分配 5 個存儲單元.defstart;定義標號 start.data;定義數據段table.word1000h,2000h,3000h,4000h,5000h; 為標號 table 開始的 5 個存儲單元賦初值。.text;定義文本段.start:STM#x,AR2; AR2指向 x 的首地址RPT#4;重復下條指令 4 次MVPD table,*AR2+;重復傳遞
11、共 5 個數據next:LD#1,16,B;將 1 左移 16 位加載到 B 累加器STM#4,BRC;將塊重復計數器賦值為 4STM#x,AR4; AR4指向 x 的首地址RPTB end-1;循環執行下面語句, end-1 為結束地址ADD*AR4,16,B,A;將 AR4中數據左移 16 位加 B 賦給 ASTHA,*AR4+; 將 A 高 16 位送往 AR4寄存器所指地址end:Bend;循環等待.end;程序結束lab4c1;*;* lab4c1.ASM*;*.title"lab4c1.asm".defstartSTACK .usect "STACK&
12、quot;,100;給堆棧分配 100 個存儲單元.bssnum,1.bssden,1.bssquot,1.data.table:.word-128;4*32768/10; 為標號 table 開始的 4 個存儲單元賦初值.word1024;-8*32768/10;分別是 -128,0.4,1024, -0.8.textstart:STM#num,AR1RPT#1;重復執行下條語句1 次MVPDtable,*AR1+;傳送 2 個數據至分子、分母單元LDden,16,A;將分母移到 A 累加器( 31-16)MPYAnum;(num)* (A(32-16)移到 B,獲取商的符號ABSA;分母取
13、絕對值STHA,den;分母絕對值存回原處LDnum,16,A;分子移到 A(32-16)ABSA; 分子取絕對值RPT#14;15 次減法循環,完成除法SUBCden,A;有條件減法XC1,BLT;如果 B<0(商是負數),則需要變號NEGA;將 A 累加器變負STLA,quot;將 A 的低 16 位送往 quotdone: Bdone.end.lab4c2;*;* lab4c2.ASM*;*.title "lab4c2.asm".def startSTACK.usect "STACK",100;給堆棧分配 100 個存儲單元.bssnum,1
14、.bssden,1.bssquot,1.datatable:.word16384;66*32768/100; 為標號 table 開始的 4 個存儲單元賦初值.word512;-33*32768/100;分別是 16384,0.66,512,-0.33.textstart:STM#num,AR1RPT#1;重復執行下條語句1 次MVPDtable,*AR1+;傳送 2 個數據至分子、分母單元LDden,16,A;將分母移到 A 累加器( 31-16)MPYAnum;(num)* (A(32-16)移到 B,獲取商的符號.ABSA;分母取絕對值STHA,den;分母絕對值存回原處LDnum,A;
15、分子移到 AABSA; 分子取絕對值SUBden,A;從累加器 A 中減去 den 中數據BCnext,ALT;條件分支轉移, A<0,則執行 next 子程序ADDden,A; 在累加器 A 中加上 den 中數據RPT#15;重復下條語句 15 次SUBCden,A;有條件減法Bnext1;執行 next1 子程序next:LDnum,16,A;分子移到 A(32-16)ABSA; 分子取絕對值RPT#14;重復下條語句 14 次SUBCden,A;有條件減法next1:XC1,BLT;如果 B<0(商是負數),則需要變號NEGA;將 A 累加器變負STLA,quot;將 A
16、的低 16 位送往 quotdone:Bdone.endlab4d;lab4d.asm.title"lab4d.asm".defstarttable:.word4000h;x3.word0f000h;x2.word0f000h;x1.word0f000h;x0.word4000h;y3.word3000h;y2.word2000h;y1.word1000h;y0.bssx,4.bssy,4.bssz,4.textstart:STM#x,AR1; AR1指向 x 的首地址RPT#7;重復執行下條語句 7 次MVPD table,*AR1+;將 table 中的 8 個數據送往 x, yLD#x,DP;將 x 的立即數加載到頁指針DLDx+2,A;將 x 的后兩個數據合并加載到 ADADD y+2,A;C16=1,將 y 高低位和 A 高低位分別相加DLDx,B;將 x 的前兩個數據合并加載到 BADDC y+1,B;將 y 的中間兩個數據合并與 B 帶進位相加.A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中語文批判性寫作教學中的寫作情感教育研究論文
- 藝術培訓學管理制度
- 花紙出入庫管理制度
- 茶葉原材料管理制度
- 院團后勤科管理制度
- 蓮都區高標準農田建設評估采購項目招標文件
- 課題實施方案 (二)
- 財務與會計沖刺卷及答案
- 管理學華源集團案例分析
- 自動監控儀器施工技術方案
- 2025年江蘇高考歷史真題(解析版)
- 廣西來賓市2023-2024學年高二下學期7月期末考試物理試題(含答案)
- 2026屆高考議論文寫作專題:議論文基礎寫作結構
- 醫院培訓課件:《高血壓病防治策略》
- (2025)發展對象考試試題附及答案
- 設備備品備件管理制度
- 電氣裝置安裝工程接地裝置施工及驗收規范
- 攀枝花市仁和區社會招考社區工作者考試真題2024
- 浙江省鎮海中學2024-2025學年高二數學第二學期期末復習檢測模擬試題含解析
- 2025年上海楊浦區七下英語期末達標檢測試題含答案
- 2025-2030全球及中國商用P2PCDN行業市場現狀供需分析及投資評估規劃分析研究報告
評論
0/150
提交評論