版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
《匯編語言程序設計》實驗報告實驗室:S318最后一次實驗時間:2010年5月18日第12周星期二1-2節(jié)學院:計算機科學與技術學院專業(yè):計算機科學與技術實驗一實驗題目:認識Tddebug集成環(huán)境實驗目的:熟悉匯編程序的開發(fā)過程。認識Tddebug集成操作軟件。掌握在Tddebug集成環(huán)境中編輯、編譯、連接匯編語言程序方法。掌握INT21H軟件中斷來調用DOS內(nèi)部子程序的方法實驗主要步驟:1.運行Tddebug軟件,選擇Edit菜單編寫實驗程序2.使用Compile菜單中的Compile和Link對實驗程序進行匯編、連接,生成執(zhí)行文件。3.使用Rmrun菜單中的Run運行程序,觀察運行結果。4.使用Rmrun菜單中的Debug調試程序,查看程序段、數(shù)據(jù)段、附加段裝入內(nèi)存后的分配情況。單步執(zhí)行數(shù)據(jù)傳送指令后,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。過程如下:按F7單步執(zhí)行,在代碼區(qū)中有一個三角,表示正在執(zhí)行的指令。每一條指令的執(zhí)行一定會使目標寄存器和狀態(tài)寄存器發(fā)生變化,從相關窗口看結果。檢查內(nèi)存數(shù)據(jù)區(qū)的內(nèi)容,關鍵是找出用戶程序的數(shù)據(jù)段和附加段:方法1:在CPU窗口按Tab鍵使內(nèi)存數(shù)據(jù)顯示區(qū)成為活動區(qū),按Ctrl+G鍵,輸入:“DS或ES寄存器的值:偏移地址”,即可顯示用戶指定的數(shù)據(jù)區(qū)方法2:選擇菜單View|Dump,彈出內(nèi)存數(shù)據(jù)顯示窗口。3)查看執(zhí)行結果:按Alt+F5,切換到用戶窗口。5.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察、調試程序的正確性。6.程序代碼:;數(shù)據(jù)傳送實驗,采用相對尋址方式DDATA SEGMENT ;定義源數(shù)據(jù)段MSR DB"HELLO,WORLD!$"LEN EQU$-MSRDDATA ENDSEXDA SEGMENT ;定義附加數(shù)據(jù)段MSD DBLENDUP(?)EXDA ENDSMYSTACKSEGMENTSTACK ;定義堆棧段DW20DUP(?)MYSTACK ENDSCODE SEGMENT ;定義代碼段ASSUMECS:CODE,DS:DDATA,ES:EXDASTART: MOVAX,DDATA MOV DS,AX ;裝載數(shù)據(jù)段寄存器 MOV AX,EXDA MOV ES,AX ;裝載附加數(shù)據(jù)段寄存器 MOV SI,OFFSETMSR MOV DI,OFFSETMSD MOV CX,LEN MOV BX,0NEXT:MOV AL,MSR[BX] ;開始傳輸數(shù)據(jù) MOV ES:MSD[BX],AL INC BX LOOP NEXT PUSH ESPOP DS ;將附加段寄存器指向的段值賦給數(shù)據(jù)段寄存器 MOV DX,OFFSETMSD MOV AH,9 INT 21H ;顯示字符串 MOV AH,4CH INT 21H ;返回DOS狀態(tài)CODE ENDS ENDSTART實驗結果:通過Tddebug軟件寫好實驗程序后,對程序進行編譯連接,最終生成執(zhí)行文件,在dos環(huán)境下啟動后,進入Tddebug,對程序進行單步執(zhí)行,可看到在每一步執(zhí)行過程中,程序所分得的地址單元。連接試驗箱后,通過對試驗箱的操作,能夠看到在dos環(huán)境下程序的執(zhí)行步驟。代碼運行結果:顯示:“HELLO,WORLD!”心得體會:通過本次試驗,是我回顧了在學習單片機的時候使用的Tddebug集成開發(fā)軟件使用方法,了解了匯編程序的開發(fā)過程。能夠在Tddebug環(huán)境下進行編輯、編譯、連接程序,掌握了INT21H軟件中斷的調用DOS內(nèi)部子程序的方法。但對于DOS環(huán)境下的匯編程序的編輯、編譯、連接使用還不是很熟悉,只能是Tddebug集成軟件開發(fā)環(huán)境下熟悉的編譯連接運行。實驗二實驗名稱:I/O程序設計實驗目的:1.理解軟中斷的調用方法及中斷過程。2.掌握INT21H軟件中斷來調用DOS系統(tǒng)I/O子程序的方法。3.掌握將存儲在內(nèi)存單元中的數(shù)據(jù)在屏幕上顯示的方法。4.掌握從鍵盤輸入信息到內(nèi)存的方法。實驗內(nèi)容:1.將指定數(shù)據(jù)區(qū)中一個字節(jié)的數(shù)據(jù)以十六進制數(shù)形式顯示在屏幕上。2.編程由鍵盤輸入任意一個字符,將該字符的ASCII碼值顯示在屏幕上。3.從鍵盤輸入兩個1位十進制數(shù),計算二者之和,并將結果顯示在屏幕上。4.編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進制數(shù)形式顯示在屏幕上實驗步驟:1.畫出實驗流程圖。2.運行Tddebug軟件,選擇Edit菜單編寫實驗程序3.使用Compile菜單中的Compile和Link對實驗程序進行匯編、連接,生成執(zhí)行文件。4.使用Rmrun菜單中的Run運行程序,觀察運行結果。5.使用Rmrun菜單中的Debug調試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性實驗代碼:圖2-1一個字節(jié)數(shù)以十六進制數(shù)形式顯示處理流程DATA SEGMENT 圖2-1一個字節(jié)數(shù)以十六進制數(shù)形式顯示處理流程MES DB 'Showaashex:',0AH,0DH,'$'SD DB 'a'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOVAX,DATA MOV DS,AX MOV DX,OFFSETMES;顯示提示信息 MOV AH,09H INT 21H MOV SI,OFFSETSD MOV AL,DS:[SI] AND AL,0F0H ;取高4位MOVCL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的數(shù) JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;顯示字符 MOV AH,02H INT 21H MOV AL,DS:[SI] AND AL,0FH ;取低4位 CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;顯示字符 MOV AH,02H INT 21H MOV AH,4CH ;返回DOS INT 21HCODE ENDS END START實驗結果:代碼運行結果:顯示“61H”心得體會:本次實驗要求我們將指定數(shù)據(jù)區(qū)的一個數(shù)據(jù)轉換為其十六進制數(shù),通過這次實驗,我充分理解了什么是軟中斷,以及軟中斷的調用方法和中斷過程,并了解了INT21H軟中斷來調用DOS系統(tǒng)I/O子程序的方法,并知道如何將存儲在內(nèi)存單元中的素具顯示在屏幕上。在老師的講解過程中,我對試驗提供的參考代碼有了更深的了解,明白了如何進行調用軟中斷。實驗三實驗名稱:代碼轉換程序設計實驗目的:1.了解微機中所使用的各類數(shù)制及編碼方法。2.掌握不同進制數(shù)及編碼相互轉換的程序設計方法,加深對數(shù)碼轉換的理解。3.掌握將存儲在內(nèi)存單元中的數(shù)據(jù)以十六進制數(shù)形式、十進制數(shù)形式和二進制數(shù)形式顯示在屏幕上的方法。實驗內(nèi)容:1.將5位十進制數(shù)的數(shù)字串轉換為一個字的二進制數(shù)2.編寫程序將內(nèi)存中一個字的數(shù)轉換為十進制數(shù)的數(shù)字串顯示。((壓?;蛘咦址?.編程將十進制的數(shù)字串轉換為BCD碼4.編程將BCD碼轉換為二進制數(shù)5.編程將二進制數(shù)轉換為十進制數(shù)顯示實驗步驟:1.畫出實驗流程圖。2.運行Tddebug軟件,選擇Edit菜單編寫實驗程序3.使用Compile菜單中的Compile和Link對實驗程序進行匯編、連接,生成執(zhí)行文件。4.使用Rmrun菜單中的Run運行程序,觀察運行結果。5.使用Rmrun菜單中的Debug調試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。6.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。實驗流程圖:圖6-2將5位十進制數(shù)的數(shù)字串轉換為二進制數(shù)參考流程圖6-3將十進制數(shù)的數(shù)字串轉換為BCD碼參考流程圖6-2將5位十進制數(shù)的數(shù)字串轉換為二進制數(shù)參考流程圖6-3將十進制數(shù)的數(shù)字串轉換為BCD碼參考流程代碼:DDATA SEGMENTMES DB 'Theasciicodeofdecimalcodeare:$'BUF DB 30H,30H,30H,31H,32H;十進制00012的ASCII碼 DB 10HDUP(0)DDATA ENDSCODESEGMENT ASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATA MOV DS,AX MOVSI,OFFSETBUF MOV BL,0AH;送乘數(shù) MOV CX,0004H;送轉換位數(shù)MOVAH,00H MOV AL,[SI];取第一位ASCII碼 SUB AL,30HA1:INCSIIMULBL;乘10(AL*BL)放在AX中 ADD AL,[SI] SUB AL,30HLOOP A1MOVBX,AX MOV DX,OFFSETMES;顯示提示信息 MOV AH,09H INT 21HMOVAX,BX;顯示結果MOVCX,4A3:PUSHCXMOVCL,4ROLAX,CL;向左移位POPCXMOVBX,AXANDAL,0FH;高4位清零,保留低4位的值CMPAL,0AH JBA2 ADDAL,07H A2:ADDAL,30H MOVDL,AL MOVAH,02HINT21HMOVAX,BXLOOPA3MOVAH,4CH INT21HCODE ENDS END START
實驗結果:代碼運行結果:顯示“00001010”心得體會:本次實驗要求我們將5位十進制數(shù)的數(shù)字串轉換為一個字的二進制數(shù),通過這次實驗,我了解了微機中所使用的各類數(shù)制及編碼方法,并知道了不同進制數(shù)及編碼相互轉換的程序設計方法,加深了對數(shù)碼轉換的理解,并掌握了將存儲在內(nèi)存單元中的數(shù)據(jù)以十六進制數(shù)形式顯示在屏幕上的方法。在剛開始實驗的時候對于將十進制數(shù)轉換為二進制有點不知道怎么辦,雖然知道應該怎么算,但是卻不知道怎么樣寫代碼,通過對參考代碼的理解,對于將十進制轉換為二進制有了一定的概念,知道了要寫一個轉換進制的實驗的基本步驟了。對上述實驗我進行了一定的修改,代碼如下:datasegmentbufdb6,6dup(0)msg1db'PleaseinputX:',0ah,0dh,'$'msg2db0ah,0dh,'PleaseinputP:',0ah,0dh,'$'msg3db0ah,0dh,'Result:',0ah,0dh,'$'dataendscodesegmentassumecs:code,ds:data;將字符串轉換為十進制數(shù)的子程序;輸入?yún)?shù):字符處首地址;輸出參數(shù):ax(保存十進制數(shù))StrToNumprocpushbxmovbx,10StrToNum_s1:mulbxandbuf[si],0fhaddal,buf[si]incsiloopStrToNum_s1popbxretStrToNumendp;功能:輸出P進制數(shù)子程序;輸入?yún)?shù):ax;輸出參數(shù):無Printprocpushaxpushbxpushcxpushdx;保護xorcx,cxs1:movdx,0divbxpushdxinccxcmpax,0jnes1movah,02hs2:popdxadddl,30hcmpdl,39hjas1int21hloops2jmpokadddl,7hint21hloops2ok:popdxpopcxpopbxpopaxretPrintendpstart:movax,datamovds,axmovdx,offsetmsg1;輸出msg1movah,09hint21hmovdx,offsetbuf;輸入十進制數(shù)Xmovah,0ahint21hmovcl,buf[1]movsi,2movax,0callStrToNum;調用將字符串轉換為十進制pushax;暫存axmovdx,offsetmsg2;輸出msg2movah,09hint21hmovdx,offsetbuf;輸入pmovah,0ahint21hmovcl,buf[1]movsi,2movax,0callStrToNum;調用將字符串轉換為十進制movbx,axmovdx,offsetmsg3;輸出msg3movah,09hint21hpopaxcallPrintmovax,4c00hint21hcodeendsendstart運行結果如下:PleaseinputX://輸入一個數(shù)9PleaseinputP://選擇顯示輸出結果的進制數(shù)2Result:1001實驗四實驗名稱:綜合程序設計實驗目的:掌握子程序的寫法、循環(huán)的調用,利用匯編語言編寫簡單的程序。實驗內(nèi)容:編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進制數(shù)形式顯示在屏幕上要求:含有子程序,循環(huán)實驗步驟:1.畫出實驗流程圖。2.運行Tddebug軟件,選擇Edit菜單編寫實驗程序3.使用Compile菜單中的Compile和Link對實驗程序進行匯編、連接,生成執(zhí)行文件。4.使用Rmrun菜單中的Run運行程序,觀察運行結果。5.使用Rmrun菜單中的Debug調試程序。實驗流程圖:確定轉化的位數(shù)n確定轉化的位數(shù)nCX=8CF=0循環(huán)取數(shù)保存到相應單元轉換完否送屏幕顯示n實驗代碼:;輸入一個數(shù),選擇顯示進制,并在屏幕上顯示出來datasegmentbufdb?msg1db'PleaseinputX:',0ah,0dh,'$'msg2db0ah,0dh,'Result:',0ah,0dh,'$'dataendscodesegmentassumecs:code,ds:datad_to_bprocnearmovbuf,2movcx,8moval,bufed:clcrclbyteptrbuf,1jnconemovah,02hmovdl,'1'int21hjmpll
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電力系統(tǒng)暫態(tài)分析第三章電力系統(tǒng)三相短路的實 用計算
- 幼兒園單元整體課程設計
- 小游戲課課程設計
- 專業(yè)教學改革創(chuàng)新的關鍵策略與實施路徑
- 以舊換新助力消費升級的戰(zhàn)略與執(zhí)行路徑
- 測試團隊管理規(guī)劃
- 有趣化妝品課程設計
- 電氣工程師考試試題
- 青少年心理健康教育:策略與實施路徑探討
- 【9道期末】安徽省六安市金寨縣2023-2024學年九年級上學期期末道德與法治試題(含解析)
- 光伏發(fā)電工程施工技術方案
- 藥品經(jīng)營使用和質量監(jiān)督管理辦法2024年宣貫培訓課件
- 一年級看圖寫話集錦省公開課獲獎課件說課比賽一等獎課件
- 化療后胃腸道反應護理
- 煤礦沖擊危險區(qū)域進入人員準入、限員管理制度
- 專項03 質量守恒定律的應用
- 兵團精神課件教學課件
- 如何高效學習學習通超星期末考試答案章節(jié)答案2024年
- 河南省鄭州市2023-2024學年高二上學期期末考試 數(shù)學 含答案
- 2024年北師大版八年級上冊全冊數(shù)學單元測試題含答案
- 2024年資格考試-WSET二級認證考試近5年真題集錦(頻考類試題)帶答案
評論
0/150
提交評論