9A文計算機組成原理試驗_第1頁
9A文計算機組成原理試驗_第2頁
9A文計算機組成原理試驗_第3頁
9A文計算機組成原理試驗_第4頁
9A文計算機組成原理試驗_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、MeiWei 81 重點借鑒文檔】 實驗一基礎匯編語言程序設計 一、實驗目的: 1、學習和了解 TEC-RP16 教學實驗系統(tǒng)監(jiān)控命令的用法。 2、學習和了解 TEC-RP16 教學實驗系統(tǒng)的指令系統(tǒng)。 3、學習簡單的 TEC-RP16 教學實驗系統(tǒng)匯編程序設計。 二、預習要求: 1、學習 TEC-RP16 機監(jiān)控命令的用法。 2、學習 TEC-RP16 機的指令系統(tǒng)、匯編程序設計及監(jiān)控程序中子程序調(diào)用。 3、學習 TEC-RP16 機的使用,包括開關、指示燈、按鍵等。 4、了解實驗內(nèi)容、實驗步驟和要求。 三、實驗步驟: 在教學計算機硬件系統(tǒng)上建立與調(diào)試匯編程序有幾種操作辦法。 第一種辦法,是

2、使用監(jiān)控程序的 A命令,逐行輸入并直接匯編單條的匯編語句,之后使 用G命令運行這個程序。缺點是不支持匯編偽指令,修改已有程序源代碼相對麻煩一些,適 用于建立與運行短小的匯編程序。 第二種辦法, 是使用增強型的監(jiān)控程序中的 W命令建立完整的匯編程序, 然后用 M 命令 對建立起來的匯編程序執(zhí)行匯編操作,接下來用G 命令運行這個程序。適用于比較短小的程 序。此時可以支持匯編偽指令,修改已經(jīng)在內(nèi)存中的匯編程序源代碼的操作更方便一些。 第三種辦法, 是使用交叉匯編程序 ASEC,首先在 PC機上, 用PC機的編輯程序建立完整 的匯編程序,然后用 ASEC 對建立起來的匯編程序執(zhí)行匯編操作,接下來把匯編

3、操作產(chǎn)生的 二進制的機器指令代碼文件內(nèi)容傳送到教學機的內(nèi)存中, 就可以運行這個程序了。 適用于規(guī) 模任意大小的程序。 在這里我們只采用第一種方法。 在TEC-RP16機終端上調(diào)試匯編程序要經(jīng)過以下幾步: 1、使教學計算機處于正常運行狀態(tài)(具體步驟見附錄聯(lián)機通訊指南)。 2、使用監(jiān)控命令輸入程序并調(diào)試。 用監(jiān)控命令 A 輸入?yún)R編程序 A或A 主存地址 如:在命令行提示符狀態(tài)下輸入: A20RR ;表示該程序從 20RRH (內(nèi)存 RAM 區(qū)的起始地址)地址開始 屏幕將顯示: 20RR: MeiWei_81 重點借鑒文檔】 MeiWei 81 重點借鑒文檔】 輸入如下形式的程序: 20RR:MVR

4、DR0 , AAAA ;MVRD 與 R0之間有且只有一個空格,其他指令相同 20RR:MVRDR1 , 5555 20RR:ADDR0 , R1 20RR:ANDR0 , R1 20RR:RET ;程序的最后一個語句,必須為 RET指令 20RR:(直接敲回車鍵,結束 A 命令輸入程序的操作過程) 若輸入有誤, 系統(tǒng)會給出提示并顯示出錯地址, 用戶只需在該地址重新輸入正確的指令 即可。 用監(jiān)控命令 U調(diào)出輸入過的程序并顯示在屏幕上 U或U 主存地址 如:在命令行提示符狀態(tài)下輸入: U20RR 在相應的地址會得到輸入的指令及其操作碼 注意: 連續(xù)使用不帶參數(shù)的 U 命令時,將從上一次反匯編的最

5、后一條語句之后接著繼續(xù) 反匯編。 通過這一步進一步檢查程序是否有除了語法外的其它錯誤。 通過監(jiān)控命令 G(連續(xù)執(zhí)行)或 T/P(單步執(zhí)行)執(zhí)行程序 G/T/P或G/T/P 主存地址 如:在命令行提示符狀態(tài)下輸入: G20RR 程序運行結束后,可以看到程序的運行結果,屏幕顯示各寄存器的值,其中R0 和R1的 值均為 5555H ,說明程序運行正確。 修改或顯示寄存器或內(nèi)存值的命令。R、 D、 E命令的使用 1)用 R命令查看寄存器內(nèi)容或修改寄存器的內(nèi)容 a.在命令行提示符狀態(tài)下輸入: R;顯示寄存器的內(nèi)容 注意: 寄存器的內(nèi)容在運行程序或執(zhí)行命令后會發(fā)生變化。 b.在命令行提示符狀態(tài)下輸入: R

6、R0;修改寄存器 R0的內(nèi)容,被修改的寄存器與所賦值之間可以無空格,也可有一個 或數(shù)個空格 主機顯示 : 寄存器原值 :_ 在該提示符下輸入新的值 0036 MeiWei_81 重點借鑒文檔】 【MeiWei 81 重點借鑒文檔】 再用 R命令顯示寄存器內(nèi)容,則 R0的內(nèi)容變?yōu)?0036。 2)用 D 命令顯示存儲器內(nèi)容 在命令行提示符狀態(tài)下輸入: D20RR 會顯示從 20RRH 地址開始的連續(xù) 128個字的內(nèi)容; 連續(xù)使用不帶參數(shù)的 D命令,起始地址會自動加 128(即 80H)。 3)用 E命令修改存儲器內(nèi)容 在命令行提示符狀態(tài)下輸入: E20RR 屏幕顯示 : 20RR地址單元的原有內(nèi)

7、容 :光標閃爍等待輸入 輸入 0000 依次改變地址單元 20RR-20RR 的內(nèi)容為 :11112222333344445555 注意: 用E命令連續(xù)修改內(nèi)存單元的值時,每修改完一個,按一下空格鍵,系統(tǒng)會自動 給出下一個內(nèi)存單元的值,等待修改;按回車鍵則退出 E 命令。 四、實驗內(nèi)容: 1、輸入下列各匯編程序段,將結果調(diào)試出來,并回答問題。 程序 1: A20RR 20RR:IN81 SHRR0 SHRR0 JRNC20RR IN80 OUT80 RET 注意: 在十六位機中,基本 I/O 接口的地址是確定的,數(shù)據(jù)口的地址為80,狀態(tài)口的地址為 81。 問題: 該程序段的功能是什么? 從鍵盤

8、上接收一個字符并在屏幕上輸出顯示該字符 程序 2: A2060 2060: MVRDR1,0000 MVRDR2,00OA 【MeiWei_81 重點借鑒文檔】 MeiWei 81 重點借鑒文檔】 MVRDR3,0000 2066: INCR3 ADDR1,R3 CMPR3,R2 JRNZ2066 RET 問題: 該程序段的功能是什么? 計算1到10的累加和 如何察看結果?結果是什么? 輸入G2060結果為: R1=0037R2=00OAR3=00OA 請用一字長的指令替換程序中的MOVR3 , 0寫出該語句。 Movr3 , r1 程序 3: 用次數(shù)控制在終端屏幕上輸出 0到 9十個數(shù)字符。

9、 A2020 2020: MVRDR2,00OA ;送入輸出字符個數(shù) MVRDR0,0030 ; “ 0字”符的 ASCII碼送寄存器 R0 OUT80 ;輸出保存在 R0低位字節(jié)的字符 DECR2 ;輸出字符個數(shù)減 1 JRZ202E;判 10個字符輸出完否 ,已完,則轉(zhuǎn)到程序結束處 PUSHR0 ;未完,保存 R0的值到堆棧中 2028:IN81 ;查詢接口狀態(tài),判字符串行輸出完成否 , SHRR0; JRNC2028 ;未完成 ,則循環(huán)等待 POPR0;已完成 ,準備輸出下一字符并從堆?;謴?R0的值 INCR0 ;得到下一個要輸出的字符 JR2024;轉(zhuǎn)去輸出字符 202E:RET 五

10、、思考題: 若把 IN81,SHRR0,JRNC2028 三個語句換成 4個MVRRR0 ,R0語句 ,該程序執(zhí)行過程會出現(xiàn) 什么現(xiàn)象 ?試分析并實際執(zhí)行一次。 程序改變這三條語句后,若用 T命令單條執(zhí)行,會依次顯示 0,9十個數(shù)字。若用 G命令運行 程序,由于程序運行速度快, 端口串行輸出的速度很慢, 這樣新會丟失某些輸出的字行; 如, MeiWei_81 重點借鑒文檔】 【MeiWei 81 重點借鑒文檔】 在命令行提示符狀態(tài)下輸入 G2020命令后,屏幕可能的顯示為 059或 069,而不是 023456789 全部的 10個字符。 若要求在終端屏幕上輸出 A到Z共 26個英文字母,應如

11、何修改程序 ?請驗證之。 A2100 MVRDR2,001A MVRDR0,0041 OUT80 DECR2 JRZ210E PUSHR0 IN81 SHRR0 JRNC2108 POPR0 INCR0 JR2104 RET 2、試編寫程序完成兩個雙字長的數(shù)相加并驗證之。 3、設計一個有讀寫內(nèi)存和子程序調(diào)用指令的程序,功能是讀出內(nèi)存中的字符,將其顯示到 顯示器的屏幕上,轉(zhuǎn)換為小寫字母后再寫回存儲器原存儲區(qū)域。 E20FO 屏幕將顯示: 20F0: 按下列格式輸入: 20Fo: 41 20F1: 42 20F2: 43 20F3: 44 20F4: 45 20F5: 45 2) 在命令行提示符狀

12、態(tài)下輸入 A2080 屏幕將顯示: 2080: 從地址 2080 開始輸入下列程序: (2080)MVDR3,06:指定技讀數(shù)據(jù)的個數(shù) MVDR,9 20:指定被讀、寫數(shù)據(jù)內(nèi)存區(qū)首地址 MVDR,8 F0 (2086)LODR0:使內(nèi)存中的一個字符到 R0 寄存器 MVDR,B 21;指定于程序地址為 2100 MVDR,A 00 CALL;調(diào)用于程序,完成顯示、轉(zhuǎn)換并寫回的功能 DECR;3 檢查輸出的字符個數(shù) MeiWei_81 重點借鑒文檔】 【MeiWei 81 重點借鑒文檔】 JZ2092;完成輸出則結束程序的執(zhí)行過程 INCR8;未完成,修改內(nèi)存地址 JR2086:轉(zhuǎn)移到程序的 2

13、086 處,循環(huán)執(zhí)行規(guī)定的處理 (2092)RET A2100 輸入用到的子程序到內(nèi)存 2100 開始的存儲區(qū) OUT00:輸出保存在 R0 寄存器中的字符 MVDR,1 20:轉(zhuǎn)換保存在 R0 中的大寫字母為小寫字母 ADDR,0 B1 STOR0;寫 R0 中的字符到內(nèi)存,地址同 LOD所用的地址 (2105)IN01 ;測試串行接口是否完成輸出過程 SHRR0 JNC2105;末完成輸出過程則循環(huán)試 RET:結束子程序執(zhí)行過程,返回主程序 3) 在命令行提示符狀態(tài)下輸入: G2080 屏幕顯示運行結果為: ABCDEF 11 個寄存器內(nèi)容及狀態(tài)標志 2080: MVDR,3 06 4)

14、在命令行提示符狀態(tài)下輸入: D20F0 20F0 20F5 內(nèi)存單元的內(nèi)容為: 6l6263646566 4、設計一個程序在顯示器屏幕上循環(huán)顯示95個(包括空格字符)可打印字符。 A20A0 ;從內(nèi)存的 20A0 單元開始建立用戶的第一個程序 20A0:MVRDR1,7E ;向寄存器傳送立即數(shù) 20A2:MVRDR0,20 ; 20A4:OUT80 ;通過串行接口輸出 R0低位字節(jié)內(nèi)容到顯示器屏幕 20A5:PUSHR0 ;保存 R0寄存器的內(nèi)容到堆棧中 20A6:IN81 ;讀串行接口的狀態(tài)寄存器的內(nèi)容 20A7:SHRR0 ; R0寄存器的內(nèi)容右移一位,最低位的值移入標志位C 20A8:JRNC20A6 ;條件轉(zhuǎn)移指令,當標志位 C 不是 1時就轉(zhuǎn)到 20A6地

溫馨提示

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

評論

0/150

提交評論