實驗 基礎匯編語言程序設計_第1頁
實驗 基礎匯編語言程序設計_第2頁
實驗 基礎匯編語言程序設計_第3頁
實驗 基礎匯編語言程序設計_第4頁
實驗 基礎匯編語言程序設計_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、實驗二 基礎匯編語言程序設計實驗目的:1學習和了解TEC-2000 十六位機監控命令的用法;2學習和了解TEC-2000 十六位機的指令系統;3學習簡單的TEC-2000 十六位機匯編程序設計;實驗內容:1使用監控程序的R 命令顯示/修改寄存器內容、D 命令顯示存儲器內容、E 命令修改存儲器內容;2使用A 命令寫一小段匯編程序,U 命令反匯編剛輸入的程序,用G 命令連續運行該程序,用T 命令單步運行并觀察程序單步執行情況;實驗要求在使用該教學機之前,應先熟悉其的各個組成部分,及使用方法。實驗步驟1關閉電源,將大板上的COM1 口與PC 機的串口相連;2接通電源,在PC 機上運行PCEC.EXE

2、 文件,設置所用PC 機的串口為“1”, 其它的設置一般不用改動,直接回車即可;3置控制開關為00101(連續、內存讀指令、組合邏輯、16 位、聯機),開關撥向上方表示“1”,撥向下方表示“0”;4按一下“RESET ”按鍵,再按一下“START ”按鍵,主機上顯示: TEC-2000 CRT MONITOR Version 2.0 April 2001 Computer Architectur Lab., Tsinghua University Programmed by He Jia > 5用R 命令查看寄存器內容或修改寄存器的內容1)在命令行提示符狀態下輸入:R ;顯示寄存器的內容

3、注:寄存器的內容在運行程序或執行命令后會發生變化。2)在命令行提示符狀態下輸入:R R0 ;修改寄存器R0 的內容,被修改的寄存器與所賦值之間可以無空格,也可有一個或數個空格主機顯示: 寄存器原值:_ 在該提示符下輸入新的值0036 再用R 命令顯示寄存器內容,則R0 的內容變為0036 。6用D 命令顯示存儲器內容在命令行提示符狀態下輸入:D 2000 會顯示從2000H 地址開始的連續128 個字的內容;連續使用不帶參數的D 命令,起始地址會自動加128 (即80H )。 7用E 命令修改存儲器內容在命令行提示符狀態下輸入:E 2000 屏幕顯示: 2000 地址單元的原有內容:光標閃爍等

4、待輸入輸入 0000 依次改變地址單元20012005 的內容為:1111 2222 3333 4444 5555 注意:用E 命令連續修改內存單元的值時,每修改完一個,按一下空格鍵,系統會自動給出下一個內存單元的值,等待修改;按回車鍵則退出E 命令。用D 命令顯示這幾個單元的內容D 2000 可以看到這六個地址單元的內容變為0000 1111 2222 3333 4444 5555 。8.用A 命令鍵入一段匯編源程序,主要是向累加器送入數據和進行運算,執行程序并觀察運行結果。1)在命令行提示符狀態下輸入:A 2000 ;表示該程序從2000H (內存RAM 區的起始地址)地址開始屏幕將顯示:

5、2000:輸入如下形式的程序:2000: MVRD R0,AAAA ;MVRD 與R0 之間有且只有一個空格,其他指令相同2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一個語句,必須為RET 指令2007: (直接敲回車鍵,結束A 命令輸入程序的操作過程)若輸入有誤,系統會給出提示并顯示出錯地址,用戶只需在該地址重新輸入正確的指令即可。2)用U 命令反匯編剛輸入的程序在命令行提示符狀態下輸入:U 2000 在相應的地址會得到輸入的指令及其操作碼注:連續使用不帶參數的U 命令時,將接著從上一次反匯編的最后一條

6、語句之后繼續反匯編。3)用G 命令運行前面剛鍵入源程序G 2000程序運行結束后,可以看到程序的運行結果,屏幕顯示各寄存器的值,其中R0 和R1 的值均為5555H ,說明程序運行正確。4)用P 或T 命令,單步執行這段程序,觀察指令執行結果在命令行提示符狀態下輸入:T 2000 寄存器R0 被賦值為AAAAH T 寄存器R1 被賦值為5555H T 做加法運算,和放在R0,R0 的值變為FFFFH T 做與運算,結果放在R0,R0 的值變為5555H 用P 命令執行過程同上。注:T 總是執行單條指令,但執行P 命令時,則把每一個CALL 語句連同被調用的子程序一次執行完成。T、P 命令每次執

7、行后均顯示所有通用寄存器及狀態寄存器的內容,并反匯編出下一條將要執行的指令。7舉例編寫匯編程序, 用“A”命令輸入,運行并觀察結果1)例子1:設計一個小程序, 從鍵盤上接收一個字符并在屏幕上輸出顯示該字符。<1> 在命令行提示符狀態下輸入:A 2000 ; 屏幕將顯示:2000: 輸入如下形式的程序:2000: IN 81 ;判鍵盤上是否按了一個鍵2001:SHR R0 ;即串行口是否有了輸入的字符2002:SHR R0 2003:JRNC 2000 ;未輸入完則循環測試2004:IN 80 ;接收該字符2005: OUT 80 ;在屏幕上輸出顯示字符6 2006: RET ;每個

8、用戶程序都必須用RET 指令結束2007: ;(按回車鍵即結束輸入過程)注:在十六位機中,基本I/O 接口的地址是確定的,數據口的的值為80,狀態口的地址為81。<2> 用“G”命令運行程序在命令行提示符狀態下輸入:G 2000執行上面輸入的程序光標閃爍等待輸入,用戶從鍵盤鍵入字符后,屏幕會顯示該字符。該例建立了一個從主存2000H 地址開始的小程序。在這種方式下, 所有的數字都約定使用16 進制數,故數字后不用跟字符H。每個用戶程序的最后一個語句一定為RET 匯編語句。因為監控程序是選用類似子程序調用方式使實驗者的程序投入運行的, 用戶程序只有用RET 語句結束, 才能保證程序運

9、行結束時能正確返回到監控程序的斷點, 保證監控程序能繼續控制教學機的運行過程。2)例2:設計一個小程序, 用次數控制在終端屏幕上輸出'0' 到'9' 十個數字符。<1> 在命令行提示符狀態下輸入:A 2020 屏幕將顯示:2020: 從地址2020H 開始輸入下列程序: 2020:MVRD R2,00OA ;送入輸出字符個數2022:MVRD R0,0030 ;“0”字符的ASCII 碼送寄存器R0 2024:OUT 80 ;輸出保存在R0 低位字節的字符2025:DEC R2 ;輸出字符個數減1 2026:JRZ 202E ;判10 個字符輸出完否

10、,已完,則轉到程序結束處2027:PUSH R0 ;未完,保存R0 的值到堆棧中2028:IN 81 ;查詢接口狀態,判字符串行輸出完成否, 2029:SHR R0 ; 202A:JRNC 2028 ;未完成, 則循環等待202B:POP R0 ;已完成, 準備輸出下一字符并從堆棧恢復R0 的值202C:INC R0 ;得到下一個要輸出的字符202D:JR 2024 ;轉去輸出字符202E:RET 202F: 該程序的執行碼放在2020H 起始的連續內存區中。若送入源碼的過程中有錯, 系統會進行提示, 等待重新輸入正確匯編語句。在輸入過程中, 在應輸入語句的位置直接打回車則結束輸入過程。<

11、;2> 用“G”命令運行程序在命令行提示符狀態下輸入:G 2020 執行結果為:0123456789 思考題: 類似的, 若要求在終端屏幕上輸出'A' 到'Z' 共26 個英文字母,應如何修改例1 中給出的程序? 請驗證之。A 20202020:MVRD R2,001A ;送入輸出字符個數262022:MVRD R0,0041 ;“A”字符的ASCII 碼送寄存器R0 2024:OUT 80 ;輸出保存在R0 低位字節的字符2025:DEC R2 ;輸出字符個數減1 2026:JRZ 202E ;判26 個字符輸出完否,已完,則轉到程序結束處2027:PU

12、SH R0 ;未完,保存R0 的值到堆棧中2028:IN 81 ;查詢接口狀態,判字符串行輸出完成否, 2029:SHR R0 ; 202A:JRNC 2028 ;未完成, 則循環等待202B:POP R0 ;已完成, 準備輸出下一字符并從堆棧恢復R0 的值202C:INC R0 ;得到下一個要輸出的字符202D:JR 2024 ;轉去輸出字符202E:RET 202F: 例子3: 從鍵盤上連續打入多個屬于0到9的數字符并在屏幕上顯示, 遇非數字符結束輸入過程。<1> 在命令行提示符狀態下輸入:A 2040屏幕將顯示:2040:從地址2040H 開始輸入下列程序: (2040)MV

13、RD R2, 0030 ; 用于判數字符的下界值MVRD R3, 0039 ;用于判數字符的上界值(2044) IN 81 ; 判鍵盤上是否按了一個鍵, SHR R0 ; 即串行口是否有了輸入的字符SHR R0JRNC 2044 ; 沒有輸入則循環測試IN 80 ; 輸入字符到R0 MVRD R1,00FFAND R0,R1 ;清零R0 的高位字節內容CMP R0, R2 ; 判輸入字符字符'0' 否JRNC 2053 ; 為否, 則轉到程序結束處CMP R3, R0 ; 判輸入字符字符'9' 否JRNC 2053 ; 為否, 則轉到程序結束處OUT 80 ;

14、輸出剛輸入的數字符JMPA 2044 ; 轉去程序前邊2044 處等待輸入下一個字符 (2053) RET<2> 在命令行提示符狀態下輸入:G 2040 光標閃爍等待鍵盤輸入,若輸入0-9 十個數字符,則在屏幕上回顯;若輸入非數字符,則屏幕不再顯示該字符,出現命令提示符,等待新命令。思考題, 本程序中為什么不必判別串行口輸出完成否? 設計打入'A''Z'和'0''9' 的程序, 遇其它字符結束輸入過程。A 2040(2040)MVRD R2, 0041 ; 用于判字母符的下界值MVRD R3, 005A ;用于判字母符

15、的上界值MVRD R4,0030;用于判數字符的下界值MVRD R5,0039;用于判數字符的下界值MVRD R6, 0061 ; 用于判字母符的下界值MVRD R7, 007A ;用于判字母符的上界值(204C) IN 81 ; 判鍵盤上是否按了一個鍵, SHR R0 ; 即串行口是否有了輸入的字符SHR R0JRNC 204C ; 沒有輸入則循環測試IN 80 ; 輸入字符到R0 MVRD R1,00FFAND R0,R1 ;清零R0 的高位字節內容(2054)CMP R0, R2 ; 判輸入字符字符'A' 否JRNC 205A ; 為否, 則轉到程序結束處CMP R3, R0 ; 判輸入字符'Z'字符 否JRNC 205A ; 為否, 則轉到程序結束處JMPA 2064(205A)CMP R0, R6 ; 判輸入字符字符'A' 否JRNC 2060 ; 為否, 則轉到程序結束處CMP R7, R0 ; 判輸入字符'Z'字符 否JRNC 2060 ; 為否, 則轉到程序結束處JMPA 2064(2060)CMP R0, R4 ; 判輸入字符字符'0' 否JRNC 2067 ; 為否, 則轉到程序結束處CMP R5, R0 ; 判輸入字符字符'9' 否JRNC 2

溫馨提示

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

最新文檔

評論

0/150

提交評論