實(shí)驗(yàn) 基礎(chǔ)匯編語言程序設(shè)計(jì)_第1頁
實(shí)驗(yàn) 基礎(chǔ)匯編語言程序設(shè)計(jì)_第2頁
實(shí)驗(yàn) 基礎(chǔ)匯編語言程序設(shè)計(jì)_第3頁
實(shí)驗(yàn) 基礎(chǔ)匯編語言程序設(shè)計(jì)_第4頁
實(shí)驗(yàn) 基礎(chǔ)匯編語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、實(shí)驗(yàn)二 基礎(chǔ)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康模?學(xué)習(xí)和了解TEC-2000 十六位機(jī)監(jiān)控命令的用法;2學(xué)習(xí)和了解TEC-2000 十六位機(jī)的指令系統(tǒng);3學(xué)習(xí)簡單的TEC-2000 十六位機(jī)匯編程序設(shè)計(jì);實(shí)驗(yàn)內(nèi)容:1使用監(jiān)控程序的R 命令顯示/修改寄存器內(nèi)容、D 命令顯示存儲(chǔ)器內(nèi)容、E 命令修改存儲(chǔ)器內(nèi)容;2使用A 命令寫一小段匯編程序,U 命令反匯編剛輸入的程序,用G 命令連續(xù)運(yùn)行該程序,用T 命令單步運(yùn)行并觀察程序單步執(zhí)行情況;實(shí)驗(yàn)要求在使用該教學(xué)機(jī)之前,應(yīng)先熟悉其的各個(gè)組成部分,及使用方法。實(shí)驗(yàn)步驟1關(guān)閉電源,將大板上的COM1 口與PC 機(jī)的串口相連;2接通電源,在PC 機(jī)上運(yùn)行PCEC.EXE

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

3、注:寄存器的內(nèi)容在運(yùn)行程序或執(zhí)行命令后會(huì)發(fā)生變化。2)在命令行提示符狀態(tài)下輸入:R R0 ;修改寄存器R0 的內(nèi)容,被修改的寄存器與所賦值之間可以無空格,也可有一個(gè)或數(shù)個(gè)空格主機(jī)顯示: 寄存器原值:_ 在該提示符下輸入新的值0036 再用R 命令顯示寄存器內(nèi)容,則R0 的內(nèi)容變?yōu)?036 。6用D 命令顯示存儲(chǔ)器內(nèi)容在命令行提示符狀態(tài)下輸入:D 2000 會(huì)顯示從2000H 地址開始的連續(xù)128 個(gè)字的內(nèi)容;連續(xù)使用不帶參數(shù)的D 命令,起始地址會(huì)自動(dòng)加128 (即80H )。 7用E 命令修改存儲(chǔ)器內(nèi)容在命令行提示符狀態(tài)下輸入:E 2000 屏幕顯示: 2000 地址單元的原有內(nèi)容:光標(biāo)閃爍等

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

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

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

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

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

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

10、,已完,則轉(zhuǎn)到程序結(jié)束處2027:PUSH R0 ;未完,保存R0 的值到堆棧中2028:IN 81 ;查詢接口狀態(tài),判字符串行輸出完成否, 2029:SHR R0 ; 202A:JRNC 2028 ;未完成, 則循環(huán)等待202B:POP R0 ;已完成, 準(zhǔn)備輸出下一字符并從堆?;謴?fù)R0 的值202C:INC R0 ;得到下一個(gè)要輸出的字符202D:JR 2024 ;轉(zhuǎn)去輸出字符202E:RET 202F: 該程序的執(zhí)行碼放在2020H 起始的連續(xù)內(nèi)存區(qū)中。若送入源碼的過程中有錯(cuò), 系統(tǒng)會(huì)進(jìn)行提示, 等待重新輸入正確匯編語句。在輸入過程中, 在應(yīng)輸入語句的位置直接打回車則結(jié)束輸入過程。<

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

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

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論