一、實驗目的 通過看懂教學計算機中已經設計好并正常運行的幾條典型指令(例如,ADD、SHR、OUT、MVRD、JRC、RET、CALA等指令)的功能、格式和執行流程,然后自己設計幾條(至少5條)指令的功能、格式和執行流程,并在教學計算機上實現、調試正確。 二、實驗設備 1.串口工作良好的PC機一臺 2.TEC-XP+教學實驗系統一臺 三、實驗內容 1.完成控制器部件的綜合設計實驗,自己設計幾條指令的的功能、格式和執行流程,并在教學計算機上實現、調試正確。 2.首先是看懂TEC-XP+教學計算機的功能部件組成和線路邏輯關系,然后分析教學計算機中已經設計好并正常運行的幾條典型指令(例如,ADD、SHR、OUT、MVRD、JRC、CALA、RET等指令)的功能、格式和執行流程。 3.設計幾條指令的功能、格式和執行流程,并在教學計算機上實現、調試正確。例如ADC、JRS、JRNS、LDRA、STOR、JMPR等指令,可以從《TEC-XP+教學計算機系統技術說明與實驗指導》第二章給出的19條擴展指令中任意選擇,當然也可以設計與實現其它的指令,包括原來已經實現的基本指令(要變換為另外一個指令操作碼)或自己確定的指令。在原來提供的MACH程序的基礎上按照ABEL語言的要求添加新指令的控制信號,編譯產生.JED文件并下載到MACH芯片里。軟件的使用和下載參加附錄。 4.單條運行指令,查看指令的功能、格式和執行流程。先將教學機左下方的6個撥動開關置為111100,再按一下“RESET”按鍵,然后通過16位的數據開關(SWH、SWL)置入指令,按“START”按鍵單步送脈沖,通過指示燈觀察控制信號的變化。 5.用監控程序的A、E(擴展指令必須用E命令置入)命令編寫一段小程序,觀察運行結果。 6.實驗時將教學機左下方的6個撥動開關置為001100,運行編寫的小程序。觀察終端顯示的結果,檢驗設計的指令是否正確。若與預定結果不符,可查看指令的功能、格式、執行、流程設計的是否正確。 四、實驗步驟 1.設計幾條擴展指令的控制信號如下表: (1)選擇擴展指令ADC、STC、JRS、LDRX、STRX和JMPR,其節拍和設計的控制信號為: (2)根據設計的控制信號的表格用ABEL語言編寫MACH的邏輯表達式。 (3)將編譯好的程序MACHC.JED下載到MACH芯片內。 2.單步方式下,通過指示燈觀察上面擴展的幾條擴展指令的控制信號是否與設計的一致。 (1)觀察A組指令中的ADC指令 ①置撥動開關SW=00100000 00010000; ②先按“RESET”按鍵;再連續按“START”按鍵,觀察每一步的節拍及控制信號如下表: (2)觀察A組指令中的JRS指令: ①動開關SW=01100100 00000000; ②先按“RESET”按鍵;再連續按“START”按鍵,觀察每一步的節拍及控制信號如下表: (3)觀察A組指令中的STC指令: ①置撥動開關SW=01101101 00000000; ②先按“RESET”按鍵;再連續按“START”按鍵,觀察每一步的節拍及控制信號如下表。 (4)觀察A組指令中的JMPR指令: ② 置撥動開關SW=01100000 00000001; ②先按“RESET”按鍵;再連續按“START”按鍵,觀察每一步的節拍及控制信號如下表。 (5)觀察C組指令中的LDRX指令: ①置撥動開關SW=11100101 00000000; ②先按“RESET”按鍵;再連續按“START”按鍵,觀察每一步的節拍及控制信號。 (6)觀察C組指令中的STRX指令: ①置撥動開關SW=11100110 00000000; ②先按“RESET”按鍵;再連續按“START”按鍵,觀察每一步的節拍及控制信號。 3.用教學機已實現的基本指令和擴展的幾條指令編寫程序并運行,測試擴展的幾條指令是否正確。 (1)測試ADC指令。 在命令行提示符狀態下輸入: A 2000↙ 屏幕將顯示: 2000: 從地址2000H開始輸入下列程序: 2000: MVRD R0,0101 ;給R0賦值 0101 2002: MVRD R1,1010 ;給R1賦值 1010 2004: ↙ 在命令行提示符狀態下輸入: A 2006↙ 2006: RET 2007: ↙ 用E命令輸入STC、ADC R0,R1的代碼,在命令行提示符狀態下輸入: E 2004↙ 2004: 6D00 2005:2001 2006: ↙ 用G命令運行前面剛鍵入源程序,在命令行提示符狀態下輸入: G 2000↙ 用R命令察看寄存器的內容,在命令行提示符狀態下輸入 R↙ 運行結果應為R0=1112 R1=1010。 (2)測試JMPR指令: 在命令行提示符狀態下輸入: A 2020↙ 屏幕將顯示: 2020: 從地址2020開始輸入下列程序: 2020: MVRD R2,000D ;給R2賦值000D,000D為回車鍵的ASCII碼值 2022: IN 81 ;判鍵盤上是否按了一個鍵, 2023: SHR R0 ;即串行口是否有了輸入的字符 2024: SHR R0 2025: JRNC 2022 ;沒有輸入則循環測試 2026: IN 80 ;輸入字符到R0低位字節 2027:MVRD R1,00FF 2029:AND R0,R1 ;清零R0的高位字節內容 202A: CMP R0,R2 ;判斷輸入字符是否為回車 202B: JRZ 2030 ;若是轉向程序結束地址 202C: OUT 80 ;若否輸出鍵入字符 202D: MVRD R3,2022 202F:↙ 在命令行提示符狀態下輸入: A 2030↙ 2030: RET 2031: ↙ 用E命令輸入JMPR R3的代碼,在命令行提示符狀態下輸入: E 202F↙ 202F:6003 2030: ↙ 用G命令運行前面剛鍵入源程序,在命令行提示符狀態下輸入: G 2020↙ 光標閃爍等待鍵盤輸入,若輸入非回車字符,則在屏幕上回顯;若輸入回車字符,則程序執行結束。 (3)測試JRS指令:在命令行提示符狀態下輸入: A 2100↙ 屏幕將顯示: 2100:從地址2100H開始輸入下列程序: 2100:MVRD R1,0000 ;給R1賦值0000 2102:MVRD R2,4040 ;給R2賦值4040 2104:MVRD R3,01FF ;給R3賦值01FF 2106:ADD R2,R3 ;R2和R3相加 *2107:JRS 210E ;判第一位,若為1,向后跳6個單元 2108:MVRD R0,0030 ;給R0賦字符“0” 210A:OUT 80 ;輸出該字符 210B:INC R3 ;R3加1 210C:INC R1 ;R1加1 210D:JR 2106 ;跳到2106循環執行 210E:MVRD R0,0031 ;給R0賦字符“1” 2110:OUT 80 ;輸出該字符 2111:RET E 2107↙ 2107:6406 ;06為偏移量,該值是要轉向的地址值減去JRS下一條指令的地址得出的。 用G命令運行前面剛鍵入源程序,在命令行提示符狀態下輸入: G 2100↙ 屏幕顯示字符0001。 用R命令看寄存器的內容,在命令行提示符狀態下輸入: R↙ 屏幕回顯15個寄存器的值,其中R1的值表示R3加1的次數。 (4)測LDRX ①在命令行提示符狀態下輸入: A 2080 屏幕將顯示: 2080: 從地址2080H開始輸入下列程序: 2080:MVRD R2,2000 ;給寄存器R2賦值2000 *2082:LDRX R1,0020[R2] ;將寄存器R2的內容與偏移量相加,相加的和為 ;內存單元2020,將該單元的內容賦給R1 *2084:JMPR R1 ;跳轉到寄存器R1所示的內存單元 2085:MVRD R0,0030 ;將字符‘0’的ASCII碼值賦給R0 2087:OUT 80 ;輸出該字符 2088:RET 2089:↙ 注:擴展指令LDRX、JMPR必須用E命令鍵入,形式為:E 2082 2082 原值:E512 (空格) 原值:0020(空格)原值:6001↙ ②在命令行提示符狀態下輸入: E 2020 屏幕將顯示: 內存單元原值:- 在光標處輸入2100 ③在命令行提示符狀態下輸入: A 2100 屏幕將顯示: 2100: 從地址2100H開始輸入下列程序: 2100:MVRD R0,0036 ;將字符‘6’的ASCII碼值賦給R0 2102:OUT 80 ;輸出該字符 2103:RET 2104:↙ ④在命令行提示符狀態下輸入: G 2080↙ 屏幕回顯數字6。 (5)測STRX指令. ①在命令行提示符狀態下輸入: A 2000 屏幕將顯示: 2000: 從地址2000H開始輸入下列程序: 2000:MVRD R1,6666 2002:MVRD R2,2000 *2004:STRX R1,0080[R2] 2006:RET 2007: ↙ 擴展指令STRX是按如下格式輸入的: 在命令行提示符狀態下輸入: E 2004↙ 內存單元原值:E612(空格) 內存單元原值:0060↙ ②在命令行提示符狀態下輸入: G 2000↙ 執行輸入的程序。 ③在命令行提示符狀態下輸入: D 2060↙ 可以觀察到2060內存單元的值為6666,表明寄存器R1中的內容已放入該內存單元,內存單元的值是由寄存器R2中的內容和偏移量0060相加得到的。 五、實驗總結 通過本次試驗,我通過看懂教學計算機中已經設計好并正常運行的幾條典型指令(例如,ADD、SHR、OUT、MVRD、JRC、RET、CALA等指令)的功能、格式和執行流程,然后自己設計幾條(至少5條)指令的功能、格式和執行流程,并在教學計算機上實現、調試正確。也看懂并了解了TEC-XP+教學計算機的功能部件組成和線路邏輯關系,然后分析了教學計算機中已經設計好并正常運行的幾條典型指令(例如,ADD、SHR、OUT、MVRD、JRC、CALA、RET等指令)的功能、格式和執行流程。首先我感謝老師的輔導,沒有老師的指導,我的試驗也不會完成。實驗的過程中我遇到了許多的困難,丹我都一一的進行了克服。從中我對于計算機的組成及原理更加的深入貫徹,享受從理論上升到了實踐的過程。 教師簽名: 年 月 日 |