基礎(chǔ)匯編語言程序設(shè)計實驗報告_第1頁
基礎(chǔ)匯編語言程序設(shè)計實驗報告_第2頁
基礎(chǔ)匯編語言程序設(shè)計實驗報告_第3頁
基礎(chǔ)匯編語言程序設(shè)計實驗報告_第4頁
基礎(chǔ)匯編語言程序設(shè)計實驗報告_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上基礎(chǔ)匯編語言程序設(shè)計實驗序號:實驗一實驗項目名稱:基礎(chǔ)匯編語言程序設(shè)計學(xué)號姓名專業(yè)、班實驗地點指導(dǎo)教師時間實驗?zāi)康模? 學(xué)習(xí)和了解TEC-XP教學(xué)實驗系統(tǒng)監(jiān)控命令的用法;2 學(xué)習(xí)和了解TEC-XP教學(xué)實驗系統(tǒng)的指令系統(tǒng);3 學(xué)習(xí)簡單的TEC-XP教學(xué)實驗系統(tǒng)匯編程序設(shè)計;實驗內(nèi)容:1 學(xué)習(xí)聯(lián)機使用TEC-XP教學(xué)實驗系統(tǒng)和仿真終端軟件PCEC.2 使用監(jiān)控程序的R命令顯示/修改寄存器內(nèi)容、D命令顯示存儲器內(nèi)容、E命令修改存儲器內(nèi)容;3 使用A命令寫一小段匯編程序,U命令反匯編剛輸入的程序,用G命令連續(xù)運行該程序,用T、P命令單步運行并觀察程序單步執(zhí)行情況;實驗要求在使

2、用該教學(xué)機之前,應(yīng)先熟悉教學(xué)機的各個組成部分,及其使用方法。實驗步驟 一實驗具體操作步驟:1 準(zhǔn)備一臺串口工作良好的PC機;2 將TEC-XP放在實驗臺上,打開實驗箱的蓋子,確定電源處于斷開狀態(tài);3 將黑色的電源線一端接220V交流電源,另一端插在TEC-XP實驗箱的電源插座里;4 取出通訊線,將通訊線的9芯插頭接在TEC-XP實驗箱上的串口“COM1”或“COM2”上,另一端接到PC機的串口上;5 將TEC-XP實驗系統(tǒng)左下方的五個黑色的控制機器運行狀態(tài)的開關(guān)置于正確的位置,在找個實驗中開關(guān)應(yīng)置為00110(連續(xù)、內(nèi)存讀指令、組合邏輯、聯(lián)機、16位),控制開關(guān)的功能在開關(guān)上、下方有標(biāo)識;開關(guān)

3、撥向上方表示“1”,撥向下方表示“0”,“X”表示任意,其它實驗相同;6 打開電源,船形開關(guān)和5V電源指示燈亮。7 在PC機上運行PCEC16.EXE文件,根據(jù)連接的PC機的串口設(shè)置所用PC機的串口為“1”或“2”, 其它的設(shè)置一般不用改動,直接回車即可。(具體步驟附后)8 按一下“RESET”按鍵,再按一下“START”按鍵,主機上顯示: TEC-2000 CRT MONITOR Version 1.0 April 2001 Computer Architectur Lab., Tsinghua University Programmed by He Jia 二、實驗注意事項:1. 連接電源

4、線和通訊線前TEC-XP實驗系統(tǒng)的電源開關(guān)一定要處于斷開狀態(tài),否則可能會對TEC-XP實驗系統(tǒng)上的芯片和PC機的串口造成損害;2. 五個黑色控制開關(guān)的功能示意圖如下: 單步 手動置指令 組合邏輯 聯(lián)機 8位 上面 下面連續(xù) 從內(nèi)存讀指令 微程序 脫機 16位3.幾種常用的工作方式(開關(guān)撥到上方表示為1,撥到下方為0;)工作方式5個撥動開關(guān)連續(xù)運行程序、組合邏輯控制器、聯(lián)機、16位機00110連續(xù)運行程序、微程序控制器、聯(lián)機、16位機00010單步、手動置指令、組合邏輯控制器、聯(lián)機、16位機11110單步、手動置指令、微程序控制器、聯(lián)機、16位機1101016位機、脫機運算器實驗1XX00三、仿

5、真終端軟件的操作步驟:1. 在PC機上建一個文件夾TEC-XP;2. 取出配套的用戶盤,將應(yīng)用程序PCEC16拷貝到用戶機器硬盤上該文件夾里;3. 雙擊PCEC16圖標(biāo),出現(xiàn)如圖所示的界面: 5. 系統(tǒng)默認(rèn)選擇串口1,用戶可根據(jù)實際情況選擇串口1或是串口2(這里的串口指的是和 TEC-XP教學(xué)實驗系統(tǒng)相連的PC機的串口),按回車后出現(xiàn)如圖界面: 6. 圖中是系統(tǒng)設(shè)定的一些傳輸參數(shù),建議用戶不要改動,直接回車。按一下“RESET”按鈕放開后再按一下“START”按鈕,出現(xiàn)界面如圖所示:7. 此時表明TEC-XP機器聯(lián)機通訊正常。四軟件操作注意事項:1 用戶在選擇串口時,選定的是PC機的串口1或串

6、口2,而不是TEC-XP實驗系統(tǒng)上的串口。即選定的是用戶實驗時通訊線接的PC機的端口;2 如果在運行到第五步時沒有出現(xiàn)應(yīng)該出現(xiàn)的界面,用戶需要檢查是不是打開了兩個軟件界面,若是,關(guān)掉其中一個再試;3 有時若TEC-XP實驗系統(tǒng)不通訊,也可以重新啟動軟件或是重新啟動PC再試;4 在打開該應(yīng)用軟件時,其它的同樣會用到該串口的應(yīng)用軟件要先關(guān)掉。五聯(lián)機通訊失敗自檢:如果上述的硬件和軟件的操作都正確,聯(lián)機卻依舊失敗,用戶可以進行如下測試:1 測試PC機的串口是否能正常工作,或是換一臺PC或換同一臺PC的另一個串口再試,在換串口時要將TEC-XP實驗系統(tǒng)斷電,換完后重新啟動實驗系統(tǒng)和軟件;2 檢查機器上的

7、元器件插接是否正確(建議用戶對照能夠正常通訊的實驗系統(tǒng)進行詳細檢查),有沒有被學(xué)生動過,尤其是擴展內(nèi)存和擴展I/O接口時,芯片方向是否插對,片選信號有沒有連接;3 檢查相應(yīng)的短路子是否連接正確; 4 建議教師預(yù)留一臺運行正常的TEC-XP實驗系統(tǒng)備用,機器出問題后可以對照檢查。六實驗過程:1 用R命令查看寄存器內(nèi)容或修改寄存器的內(nèi)容1) 在命令行提示符狀態(tài)下輸入:R ;顯示寄存器的內(nèi)容注:寄存器的內(nèi)容在運行程序或執(zhí)行命令后會發(fā)生變化。2) 在命令行提示符狀態(tài)下輸入:R R0 ;修改寄存器R0的內(nèi)容,被修改的寄存器與所賦值之間可以無空格,也可有一個或數(shù)個空格主機顯示:寄存器原值:_在該提示符下輸

8、入新的值0036再用R命令顯示寄存器內(nèi)容,則R0的內(nèi)容變?yōu)?036。2 用D命令顯示存儲器內(nèi)容在命令行提示符狀態(tài)下輸入:D 2000 會顯示從2000H地址開始的連續(xù)128個字的內(nèi)容;連續(xù)使用不帶參數(shù)的D命令,起始地址會自動加128(即80H)。 3. 用E命令修改存儲器內(nèi)容在命令行提示符狀態(tài)下輸入:E 2000屏幕顯示:2000 地址單元的原有內(nèi)容:光標(biāo)閃爍等待輸入輸入 0000依次改變地址單元20012005的內(nèi)容為:1111 2222 3333 4444 5555注意:用E命令連續(xù)修改內(nèi)存單元的值時,每修改完一個,按一下空格鍵,系統(tǒng)會自動給出下一個內(nèi)存單元的值,等待修改;按回車鍵則退出E

9、命令。 4 用D命令顯示這幾個單元的內(nèi)容D 2000可以看到這六個地址單元的內(nèi)容變?yōu)?000 1111 2222 3333 4444 5555。 5. 用A命令鍵入一段匯編源程序,主要是向累加器送入數(shù)據(jù)和進行運算,執(zhí)行程序并觀察運行結(jié)果。1) 在命令行提示符狀態(tài)下輸入:A 2000;表示該程序從2000H(內(nèi)存RAM區(qū)的起始地址)地址開始屏幕將顯示:2000:輸入如下形式的程序:2000: MVRD R0,AAAA ;MVRD與R0之間有且只有一個空格,其他指令相同2002: MVRD R1,55552004: ADD R0,R12005: AND R0,R12006: RET;程序的最后一個

10、語句,必須為RET指令2007:(直接敲回車鍵,結(jié)束A命令輸入程序的操作過程)若輸入有誤,系統(tǒng)會給出提示并顯示出錯地址,用戶只需在該地址重新輸入正確的指令即可。2) 用U命令反匯編剛輸入的程序在命令行提示符狀態(tài)下輸入:U 2000在相應(yīng)的地址會得到輸入的指令及其操作碼注:連續(xù)使用不帶參數(shù)的U命令時,將從上一次反匯編的最后一條語句之后接著繼續(xù)反匯編。3) 用G命令運行前面鍵入的源程序G 2000程序運行結(jié)束后,可以看到程序的運行結(jié)果,屏幕顯示各寄存器的值,其中R0和R1的值均為5555H,說明程序運行正確。4) 用P或T命令,單步執(zhí)行這段程序,觀察指令執(zhí)行結(jié)果在命令行提示符狀態(tài)下輸入:T 200

11、0寄存器R0被賦值為AAAAHT寄存器R1被賦值為5555HT做加法運算,和放在R0,R0的值變?yōu)镕FFFHT做與運算,結(jié)果放在R0,R0的值變?yōu)?555H用P命令執(zhí)行過程同上。注:T總是執(zhí)行單條指令,但執(zhí)行P命令時,則把每一個CALL語句連同被調(diào)用的子程序一次執(zhí)行完成。T、P命令每次執(zhí)行后均顯示所有通用寄存器及狀態(tài)寄存器的內(nèi)容,并反匯編出下一條將要執(zhí)行的指令。6 舉例編寫匯編程序, 用“A”命令輸入,運行并觀察結(jié)果1) 例1:設(shè)計一個小程序, 從鍵盤上接收一個字符并在屏幕上輸出顯示該字符。 在命令行提示符狀態(tài)下輸入:A 2000 ; 屏幕將顯示:2000:輸入如下形式的程序: 2000: I

12、N 81 ;判鍵盤上是否按了一個鍵2001:SHR R0 ;即串行口是否有了輸入的字符2002:SHR R02003:JRNC 2000 ;未輸入完則循環(huán)測試2004:IN 80 ;接收該字符2005: OUT 80;在屏幕上輸出顯示字符62006: RET;每個用戶程序都必須用RET指令結(jié)束2007:;(按回車鍵即結(jié)束輸入過程)注:在十六位機中,基本I/O接口的地址是確定的,數(shù)據(jù)口的地址為80,狀態(tài)口的地址為81。 用“G”命令運行程序在命令行提示符狀態(tài)下輸入:G 2000執(zhí)行上面輸入的程序光標(biāo)閃爍等待輸入,用戶從鍵盤鍵入字符后,屏幕會顯示該字符。該例建立了一個從主存2000H地址開始的小程

13、序。在這種方式下, 所有的數(shù)字都約定使用16進制數(shù),故數(shù)字后不用跟字符H。每個用戶程序的最后一個語句一定為RET匯編語句。因為監(jiān)控程序是選用類似子程序調(diào)用方式使實驗者的程序投入運行的,用戶程序只有用RET語句結(jié)束, 才能保證程序運行結(jié)束時能正確返回到監(jiān)控程序的斷點, 保證監(jiān)控程序能繼續(xù)控制教學(xué)機的運行過程。2) 例2:設(shè)計一個小程序, 用次數(shù)控制在終端屏幕上輸出0到9十個數(shù)字符。 在命令行提示符狀態(tài)下輸入:A 2020 屏幕將顯示:2020:從地址2020H開始輸入下列程序:2020:MVRD R2,00OA;送入輸出字符個數(shù)2022:MVRD R0,0030;“0”字符的ASCII碼送寄存器

14、R02024:OUT 80;輸出保存在R0低位字節(jié)的字符2025:DEC R2;輸出字符個數(shù)減12026:JRZ 202E;判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;得到下一個要輸出的字符202D:JR 2024;轉(zhuǎn)去輸出字符202E:RET202F:該程序的執(zhí)行碼放在2020H起始的連續(xù)內(nèi)存區(qū)中。若送入源碼的過程中

15、有錯, 系統(tǒng)會進行提示, 等待重新輸入正確匯編語句。在輸入過程中, 在應(yīng)輸入語句的位置直接打回車則結(jié)束輸入過程。 用“G”命令運行程序在命令行提示符狀態(tài)下輸入:G 2020執(zhí)行結(jié)果為:思考題: 若把IN 81, SHR R0, JRNC 2028三個語句換成4個MVRR R0,R0語句, 該程序執(zhí)行過程會出現(xiàn)什么現(xiàn)象? 試分析并實際執(zhí)行一次。提示:該程序改變這三條語句后,若用T命令單條執(zhí)行,會依次顯示09十個數(shù)字。若用G命令運行程序,程序執(zhí)行速度快,端口輸出速度慢,這樣就會跳躍輸出。在命令行提示符狀態(tài)下輸G 2020,屏幕顯示09。類似的, 若要求在終端屏幕上輸出A到Z共26個英文字母,應(yīng)如何

16、修改例1中給出的程序? 請驗證之。參考答案:在命令行提示符狀態(tài)下輸入:A 2100屏幕將顯示:2100:從地址2100H開始輸入下列程序:(2100) MVRD R2,001A ;循環(huán)次數(shù)為26MVRD R0,0041 ;字符“A”的值(2104) OUT 80 ;輸出保存在R0低位字節(jié)的字符DEC R2 ;輸出字符個數(shù)減1JRZ 210E ;判26個字符輸出完否,已完,則轉(zhuǎn)移到程序結(jié)束處PUSH R0 ;未完,保存R0的值到堆棧中(2108)IN 81 ;查詢接口狀態(tài),判字符串行輸出完成否SHR R0JRNC 2108;未完成, 則循環(huán)等待 POP R0;已完成, 準(zhǔn)備輸出下一字符,從堆?;?/p>

17、復(fù)R0的值 INC R0;得到下一個要輸出的字符JR 2104;轉(zhuǎn)去輸出字符(210E)RET 用G命令執(zhí)行該程序,屏幕上顯示“A”“Z”26個英文字母. 例3: 從鍵盤上連續(xù)打入多個屬于0到9的數(shù)字符并在屏幕上顯示, 遇到非數(shù)字字 符結(jié)束輸入過程。 在命令行提示符狀態(tài)下輸入:A 2040屏幕將顯示:2040:從地址2040H開始輸入下列程序:(2040) MVRD R2,0030 ; 用于判數(shù)字符的下界值MVRD R3,0039 ; 用于判數(shù)字符的上界值(2044) IN 81 ; 判鍵盤上是否按了一個鍵, SHR R0 ; 即串行口是否有了輸入的字符SHR R0 JRNC 2044 ; 沒

18、有輸入則循環(huán)測試IN 80 ; 輸入字符到R0MVRD 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 ; 輸出剛輸入的數(shù)字符JMPA 2044 ;轉(zhuǎn)去程序前邊2044處等待輸入下一個字符 (2053) RET 在命令行提示符狀態(tài)下輸入:G 2040 光標(biāo)閃爍等待鍵盤輸入,若輸入0-9十個數(shù)字符,則在屏幕上回顯;若輸入非數(shù)字符,則屏幕不再顯示該字符,出現(xiàn)命令提示符,等待新命令。 思考題, 本程

19、序中為什么不必判別串行口輸出完成否? 設(shè)計打入AZ和09的程序, 遇到其它字符結(jié)束輸入過程。例子4: 計算1到10的累加和。 在命令行提示符狀態(tài)下輸入:A 2060屏幕將顯示:2060:從地址2060H開始輸入下列程序:(2060)MVRD R1,0000; 置累加和的初值為0MVRD R2,00OA; 最大的加數(shù)MVRD R3,0000 (2066) INC R3; 得到下一個參加累加的數(shù)ADD R1,R3; 累加計算CMP R3,R2; 判是否累加完JRNZ 2066; 未完, 開始下一輪累加RET 在命令行提示符狀態(tài)下輸入:G 2060運行過后, 可以用R命令觀察累加器的內(nèi)容。R1的內(nèi)容

20、為累加和。結(jié)果為:R1=0037 R2=00OA R3=00OA例子5:設(shè)計一個有讀寫內(nèi)存和子程序調(diào)用指令的程序,功能是讀出內(nèi)存中的 字符,將其顯示到顯示器的屏幕上,轉(zhuǎn)換為小寫字母后再寫回存儲器原存儲區(qū)域。 將被顯示的6個字符AF送入到內(nèi)存20F0H開始的存儲區(qū)域中。在命令行提示符狀態(tài)下輸入:E 20F0屏幕將顯示:20F0 內(nèi)存單元原值:按下列格式輸入:20F0 內(nèi)存原值:0041 內(nèi)存原值:0042 內(nèi)存原值:0043 內(nèi)存原值:0044 內(nèi)存原值:0045 內(nèi)存原值:0046 在命令行提示符狀態(tài)下輸入:從地址2080H開始輸入下列程序:(2080)MVRD R3,0006 ;指定被讀數(shù)據(jù)

21、的個數(shù)MVRD R2,20F0 ;指定被讀、寫數(shù)據(jù)內(nèi)存區(qū)首地址(2084)LDRR R0,R2 ;讀內(nèi)存中的一個字符到R0寄存器CALA 2100 ;指定子程序地址為2100,調(diào)用子程序,完成顯示、轉(zhuǎn)換并寫回的功能DEC R3 ;檢查輸出的字符個數(shù) JRZ 208B ;完成輸出則結(jié)束程序的執(zhí)行過程INC R2 ;未完成,修改內(nèi)存地址JR 2084 ;轉(zhuǎn)移到程序的2086處,循環(huán)執(zhí)行規(guī)定的處理(208B)RET從地址2100H開始輸入下列程序: (2100)OUT 80;輸出保存在R0寄存器中的字符MVRD R1,0020ADD R0,R1 ;將保存在R0中的大寫字母轉(zhuǎn)換為小寫字母STRR R2

22、,R0;寫R0中的字符到內(nèi)存,地址同LOD所用的地址 (2105)IN 81;測試串行接口是否完成輸出過程SHR R0JRNC 2105;未完成輸出過程則循環(huán)測試RET;結(jié)束子程序執(zhí)行過程,返回主程序 在命令行提示符狀態(tài)下輸入:G 2080 屏幕顯示運行結(jié)果為:ABCDEF 在命令行提示符狀態(tài)下輸入:D 20F0 20F0H20F5H內(nèi)存單元的內(nèi)容為:0061 0062 0063 0064 0065 0066 例子6:設(shè)計一個程序在顯示器屏幕上循環(huán)顯示95個(包括空格字符)可打印字符。在命令行提示符狀態(tài)下輸入:A 20A0屏幕將顯示:20A0:從地址20A0H開始輸入下列程序:A 20A0 ;從內(nèi)存的20A0單元開始建立用戶的第一個程序20A0: MVRD R1,7E ;向寄存器傳送立即數(shù)20A2: MVRD R0,20 ;20A4: OUT 80 ;通過串行接口輸出R0低位字節(jié)內(nèi)容到顯示器屏幕20A5: PUSH R0 ;保存R0寄存器的內(nèi)容到堆棧中20A6: I

溫馨提示

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

評論

0/150

提交評論