![匯編語言實驗題目及報告格式_第1頁](http://file4.renrendoc.com/view10/M00/35/2C/wKhkGWWEQD-AfU8iAACqDW8Rxn4441.jpg)
![匯編語言實驗題目及報告格式_第2頁](http://file4.renrendoc.com/view10/M00/35/2C/wKhkGWWEQD-AfU8iAACqDW8Rxn44412.jpg)
![匯編語言實驗題目及報告格式_第3頁](http://file4.renrendoc.com/view10/M00/35/2C/wKhkGWWEQD-AfU8iAACqDW8Rxn44413.jpg)
![匯編語言實驗題目及報告格式_第4頁](http://file4.renrendoc.com/view10/M00/35/2C/wKhkGWWEQD-AfU8iAACqDW8Rxn44414.jpg)
![匯編語言實驗題目及報告格式_第5頁](http://file4.renrendoc.com/view10/M00/35/2C/wKhkGWWEQD-AfU8iAACqDW8Rxn44415.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
四川師范大學(xué)計算機(jī)科學(xué)學(xué)院《匯編程序設(shè)計》實驗報告課程名稱:匯編語言姓名:院系:專業(yè):年級:學(xué)號:指導(dǎo)教師:郭榮佐職稱:副教授2011年月日
實驗項目列表序號實驗項目名稱成績指導(dǎo)教師1匯編程序調(diào)試的基本操作郭榮佐2順序程序設(shè)計郭榮佐3循環(huán)程序設(shè)計郭榮佐4DOS功能調(diào)用郭榮佐5子程序設(shè)計郭榮佐6字符處理程序設(shè)計郭榮佐7891011121314151617181920
四川師范大學(xué)計算機(jī)科學(xué)學(xué)院《匯編程序設(shè)計》實驗報告院系:專業(yè):年級:姓名:學(xué)號:實驗課程:匯編程序設(shè)計實驗室號:______實驗設(shè)備號:實驗時間:指導(dǎo)教師簽字:成績:實驗一匯編程序的匯編及運(yùn)行1.實驗?zāi)康暮鸵螅?)熟悉匯編程序的匯編、連接、執(zhí)行過程;(2)生成.1ST文件,查看.1ST文件;(3)生成.OBJ文件,修改語法錯誤;(4)生成.EXE文件;(5)執(zhí)行程序2.實驗原理匯編程序從編寫到執(zhí)行的過程編程→.ASM→編譯→.OBJ→連接→.EXE→加載→內(nèi)存中的程序→執(zhí)行3.主要儀器設(shè)備(實驗用的軟硬件環(huán)境)WindowsXP操作系統(tǒng),MASM,LINK4.操作方法與實驗步驟1)編寫源程序用記事本輸入程序,并存儲成源程序,保存在MASM目錄下,擴(kuò)展名為ASM。2)對源程序進(jìn)行匯編、連接操作如下:(1)在DOS狀態(tài)下,進(jìn)入MASM目錄;(2)輸入命令:MASM文件名(連同擴(kuò)展名);(3)在系統(tǒng)出現(xiàn)的提示中輸入:objectfilename[.obj]:按回車鍵。Sourcelistling[nul.lst]:輸入:文件主名,生成.lst文件,也可以不生成,直接按回車鍵。.Lst文件用于查看編譯為目標(biāo)文件的過程中產(chǎn)生的中間結(jié)果。Cross-reference[nul.crf]:按回車鍵。(4)如果系統(tǒng)沒有提示出錯,那么編譯過程就完成了。如果提示錯誤則應(yīng)用edit打開源文件進(jìn)行修改,然后再重復(fù)2和3步驟(5)輸入:link文件主名(不要輸擴(kuò)展名,也可以輸入擴(kuò)展名.obj) runfile[.exe]:按回車鍵。Listfile[nul.map]:按回車鍵。Libraries[.lib]:按回車鍵。(6)沒有提示錯誤,匯編過程就結(jié)束了,產(chǎn)生了exe可執(zhí)行文件。如果出現(xiàn)‘nostracksegment’的錯誤警告,不用理會。3)執(zhí)行程序(由DOS中的COMMAND命令將文件加載入內(nèi)存)在DOS提示符下直接輸入文件主名就可以執(zhí)行文件了。程序執(zhí)行后,有的會顯示結(jié)果,有的可能執(zhí)行后什么結(jié)果都沒有,是因為程序中沒有顯示命令。5.實驗內(nèi)容及實驗數(shù)據(jù)記錄5.1(1)輸入數(shù)據(jù)段1:DATASEGMENTORG20HNUM1=8NUM2=NUM1+10HDA1DB'IBMPC'DB0AH,0DHCOUNTEQU$-DA1DATAENDSEND(2)生成1-1.lst,用EDIT1-1.lst文件得知DA1=0020,COUNT=0008(參見實驗截圖)5.2(1)輸入數(shù)據(jù)段2:DATASEGMENTVAR1DB0,25,0DH,30HVAR2DB12H,0A4H,6BHVAR3DB'ABCDEFH'VAR4DW1234H,5678HVAR5DW10HDUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DE:DATABEINGMOVAX,DATAMOVDS,AXLEASI,VAR5MOVBX,OFFSETVAR2MOV[SI],0ABHMOVAX,VAR1+2MOV[BX],[SI]MOVVAR5+4,VAR4MOVAH,4CHINT21HCODEENDSEND(2)進(jìn)行匯編:提示有6個錯誤。經(jīng)分析得:第9行:將DE→DS第10行:將BEING→BEGIN:第14行:將[SI]→SI第15行:將VAR1+2→[VAR1+2]第16行:將[BX]→BX第17行:將VAR5+4→AX,VAR4→[VAR4]修改后進(jìn)行匯編得:5.3(1)輸入數(shù)據(jù)段3:STACKSSEGMENTSTACKDW128DUP(?)STACKSENDSDATASSEGMENTSTRINGDB'WELCONME!',13,10,'$'DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXLEADX,STRINGMOVAH,9INT21HMOVAH,4CHINT21HCODESENDSENDSTART(2)運(yùn)行程序3得到:WELCOME!(3)實驗截圖:6.數(shù)據(jù)處理與分析1)在DOS狀態(tài)下,對.asm文件匯編,可以得到一個1.lst文件,通過EDIT1.lst,可以查看到DA1=0020,COUNT=00082)AX是數(shù)據(jù)寄存器,而VAR是地址,賦值應(yīng)該寫成[VAR1+2];7.質(zhì)疑、建議、問題討論直接用edit.exe編輯匯編程序修改不方便,可以使用記事本編輯,再通過更改后綴名變成.asm文件。四川師范大學(xué)計算機(jī)科學(xué)學(xué)院《匯編程序設(shè)計》實驗報告院系:專業(yè):年級:姓名:學(xué)號:實驗課程:匯編程序設(shè)計實驗室號:______實驗設(shè)備號:實驗時間:指導(dǎo)教師簽字:成績:實驗二:順序程序設(shè)計1.實驗?zāi)康暮鸵螅?)學(xué)習(xí)使用DEBUG的命令;(2)使用DEBUG命令在數(shù)據(jù)段中查看程序運(yùn)行的結(jié)果;(3)利用DEBUG運(yùn)行簡單的程序段。2.實驗原理DEBUG命令的使用過程。3.主要儀器設(shè)備(實驗用的軟硬件環(huán)境)WindowsXP操作系統(tǒng),MASM,LINK4.操作方法與實驗步驟1)將輸入的大寫字母改為小寫字母并輸出,編寫程序。輸入程序觀察寄存器變化2)下列程序單步運(yùn)行,注意AL,BX,CX寄存器的變化,并觀察數(shù)據(jù)段字母的變化。如果是將小寫字母改成大寫字母帶注釋的語句該如何修改?3)程序的跟蹤執(zhí)行操作在DOS下直接輸入文件主名就可以執(zhí)行文件了,有的程序會顯示結(jié)果,可能執(zhí)行后什么結(jié)果都沒有,是因為程序中沒有顯示命令。那么如何查看程序的運(yùn)行結(jié)果呢?程序執(zhí)行過程的跟蹤操作步驟如下:(1)在DOS下輸入:DEBUG文件名.EXE(2)在DEBUG提示符下輸入U命令 如果程序中有數(shù)據(jù)段,可以看到反匯編后第一句可執(zhí)行語句為: A地址:B地址MOVAX,K地址如:1261:0000MOV AX,1260 其中:K地址就是數(shù)據(jù)段的段寄存器內(nèi)容,A地址為代碼段段寄存器地址,B地址為程序第一條指令的偏移地址。(3)可以用T命令單步執(zhí)行指令,執(zhí)行到MOVAH,4CH時結(jié)束,也可以用G命令執(zhí)行整個程序,輸入:G=B地址(如:G=0000)(4)用D命令查看程序執(zhí)行后數(shù)據(jù)段的變化 輸入:DK地址:0(如:D1260:0) 在顯示的數(shù)據(jù)中,對照源程序或LST文件查看結(jié)果所在的偏移地址的內(nèi)容。4)輸入下面的程序,按實驗一和上面的步驟運(yùn)行一遍。這是一個兩個數(shù)相與的程序。結(jié)果存放在MSG2單元中,偏移地址為?值為多少? DSEG SEGMENT MSG1 DW 7856H,2038H MSG2 DW ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AX,MSG1 AND AX,MSG1+2 MOV MSG2,AX MOV AL,0 MOV AH,4CH INT 21H CSEGENDS END START3.編寫調(diào)試下面的程序,用DEBUG查看數(shù)據(jù)段中的結(jié)果1)Z=((W-X)*10+5)/(X+Y),X,Y,W為字節(jié)類型變量,結(jié)果存于Z單元,寫出數(shù)據(jù)段和代碼段。2)X,Y為字節(jié)類型數(shù),求Z=((X+Y)*8-(X-Y)*2)/16,寫出完整的數(shù)據(jù)段和代碼段,不用乘除指令。5.實驗內(nèi)容及實驗數(shù)據(jù)記錄1)在debug中用a命令,輸入以下程序后觀察寄存器變化2)創(chuàng)建文件并逐步執(zhí)行4)實驗截圖為Z=((W-X)*10+5)/(X+Y),X,Y,W為字節(jié)類型變量,結(jié)果存于Z單元,寫出數(shù)據(jù)段和代碼段。6)X,Y為字節(jié)類型數(shù),求Z=((X+Y)*8-(X-Y)*2)/16,程序代碼6.質(zhì)疑、建議、問題討論四川師范大學(xué)計算機(jī)科學(xué)學(xué)院《匯編程序設(shè)計》實驗報告院系:專業(yè):年級:姓名:學(xué)號:實驗課程:匯編程序設(shè)計實驗室號:______實驗設(shè)備號:實驗時間:指導(dǎo)教師簽字:成績:實驗三:分支循環(huán)程序設(shè)計1.實驗?zāi)康暮鸵螅?)學(xué)習(xí)調(diào)試程序,查找邏輯錯誤;(2)學(xué)習(xí)分支語句的編程和調(diào)試;(3)學(xué)習(xí)循環(huán)語句的編程和調(diào)試。2.實驗原理利用DEBUG命令查找發(fā)現(xiàn)邏輯錯誤并修改,調(diào)試。3.主要儀器設(shè)備(實驗用的軟硬件環(huán)境)WindowsXP操作系統(tǒng),MASM,LINK4.實驗內(nèi)容(1)有10個數(shù),統(tǒng)計正數(shù)的個數(shù),存放在變量M中。經(jīng)過匯編后,行程.exe文件。在DEBUG中,先用G=0命令執(zhí)行程序,用D命令查看M單元的內(nèi)容,會發(fā)現(xiàn)結(jié)果不正確。用單步執(zhí)行命令T=0,單步執(zhí)行程序,查找程序中的邏輯錯誤,注意每一次循環(huán)中AL寄存器中值的變化是否正確(AL寄存器中存放正數(shù)的個數(shù))。程序DSEG SEGMENT MSG DB4,-2,-6,0,5,67,8,-3,5,6 M DB? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV CX,10 MOV AL,0 LEA SI,MSG L1: MOV BL,[SI] CMP BL,0 JBE NEXT INC AL NEXT: INC SI LOOP L1 MOV M,AL MOV AL,0 MOV AH,4CH INT 21H CSEG ENDS END START輸入程序并調(diào)試。得到上面程序的分析結(jié)果。(2)數(shù)據(jù)段中是一組無符號數(shù),將最小數(shù)存放在M單元中。對其進(jìn)行調(diào)試發(fā)現(xiàn)錯誤并修改。源程序如下:DSEG SEGMENT MSG DB13,15,7,25,24 MDB? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV CX,4 MOV AL,MSG MOV SI,OFFSETMSG+1 L1: CMP AL,[SI] JB NEXT MOV AL,[SI] NEXT: LOOP L1 MOV M,AL MOV AL,0 MOV AH,4CH INT 21H CSEG ENDS END START經(jīng)調(diào)試發(fā)現(xiàn)循環(huán)結(jié)束AL中的數(shù)值不變,且SI沒有自增故要在next:處加上INCSI(3)編程:在首地址為BUF開始的內(nèi)存單元中存有10個字節(jié)數(shù),求其中0的個數(shù),并將結(jié)果放在RESULT中。(4)編程:,Ai、Bi為字節(jié)型無符號數(shù)據(jù),分別存于NUM1和NUM2開始的連續(xù)存儲單元中,結(jié)果存于REST單元中。四川師范大學(xué)計算機(jī)科學(xué)學(xué)院《匯編程序設(shè)計》實驗報告院系:專業(yè):年級:姓名:學(xué)號:實驗課程:匯編程序設(shè)計實驗室號:______實驗設(shè)備號:實驗時間:指導(dǎo)教師簽字:成績:實驗四:子程序設(shè)計1.實驗?zāi)康暮鸵螅?)學(xué)習(xí)子程序的編寫,主子程序的調(diào)用(2)不同模塊間程序的調(diào)用和調(diào)試2.主要儀器設(shè)備(實驗用的軟硬件環(huán)境)WindowsXP操作系統(tǒng),MASM,LINK3.實驗內(nèi)容(1)數(shù)據(jù)段的三個字符,調(diào)用子程序?qū)⑵渲饌€顯示出來。子程序的功能是顯示一個字符。但不執(zhí)行,對CALL語句和RET語句觀察SP、IP的變化,并用D命令查看棧頂內(nèi)容。程序段如下:DATA SEGMENT MAG DB‘ABC’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 MOV CX,3 LL: MOV DL,MAG[SI] CALL MADD INC SI LOOP LL MOV AH,4CH INT 21H MADD PROC MOV AH,02H INT 21H RET MADD ENDP CODE ENDS END START進(jìn)行匯編單步執(zhí)行。用T命令運(yùn)行五次,D命令查看SS段內(nèi)容。通過在DEBUG中用T單步執(zhí)行與用P子程序執(zhí)行,分別使ABC逐個顯示出來,當(dāng)執(zhí)行到調(diào)用子程序時候SP=007A,對IP進(jìn)行保護(hù),當(dāng)子程序執(zhí)行完畢以后,返回到SP保護(hù)的IP地址0012.。直接把文件名輸進(jìn)去后可以把三個字符一起輸出:(2)閱讀S31.ASM和S32.ASM兩個模塊中的程序,并分別匯編,然后連接成一個可執(zhí)行的文件S31.EXE。具體步驟如下:MASMS31.ASM(分別匯編)MASMS32.ASMLINKS31S32(將兩個文件連接成為一個文件名為S31)S31.EXE(運(yùn)行)源程序如下:NAMES31.ASMEXTRNDISP:FARCODESEGMENTPARA'CODE'ASSUMECS:CODESTART:MOVAH,01HINT21HMOVBL,ALINT21HMOVAH,ALMOVAL,BLCMPAX,3030HJEEXITCALLNEARPTRTRANCALLFARPTRdispJMPSTARTEXIT:MOVAH,4CHINT21HTRANPROCNEARANDAX,0F0FHMOVBL,AHMOVCL,10DMULCLADDAL,BLRETTRANENDPCODEENDSENDSTARTNAMES32.ASMPUBLICDISPCODE1SEGMENTPARA'CODE'ASSUMECS:CODE1DISPPROCFARMOVBL,ALMOVBH,00MOVCH,4ROLL:MOVCL,4ROLBX,CLMOVDL,BLANDDL,0FHCMPDL,9JBENEXT1ADDDL,07HNEXT1:ADDDL,30HMOVAH,02HINT21HDECCHJNZROLLRETDISPENDPCODE1ENDSEND經(jīng)過匯編,鏈接得到S31.EXE4.編程題(1)編程:利用主程序調(diào)用子程序,比較BUF1和BUF2緩沖區(qū)中不相等的字符,并將不相等的字符顯示出來(也可以將找到的不相等字符逐個顯示,用INT21H的02功能調(diào)用)。最后的輸出結(jié)果為:(2)編程:子程序搜索指定字符緩沖區(qū)中是否有N,如果有用Y替代。調(diào)用子程序?qū)UF1、BUF2、BUF3中的N全部用Y替代。源程序如下:運(yùn)行程序:四川師范大學(xué)計算機(jī)科學(xué)學(xué)院《匯編程序設(shè)計》實驗報告院系:專業(yè):年級:姓名:學(xué)號:實驗課程:匯編程序設(shè)計實驗室號:______實驗設(shè)備號:實驗時間:指導(dǎo)教師簽字:成績:實驗五DOS功能調(diào)用1.實驗?zāi)康暮鸵螅?)學(xué)會DOS中關(guān)于顯示功能調(diào)用指令的用法;(2)領(lǐng)會修改顯存方法顯示字符。2.主要儀器設(shè)備(實驗用的軟硬件環(huán)境)WindowsXP操作系統(tǒng),MASM,LINK3.實驗內(nèi)容1)輸入一個字符,顯示出來。2)輸入一個字符串,顯示出來。3)BUF開始的3個16位二進(jìn)制數(shù)用十六進(jìn)制數(shù)的形式顯示出來。(1)理解程序(2)輸入程序,匯編,運(yùn)行(在DOS狀態(tài)下輸入:文件名.EXE),觀察結(jié)果。(3)如果要分行顯示,程序要如何修改?4)直接改變顯存內(nèi)容顯示。(1)顯存空間分配:內(nèi)存地址空間中,B8000H-BFFFFH共32KB的空間,為80×25彩色字符模式顯示緩沖區(qū)。向這個地址空間寫入數(shù)據(jù),寫入的內(nèi)容將立即出現(xiàn)在顯示器上。80×25=2000個字符,每個字符在緩沖區(qū)中占2個字節(jié),一個字節(jié)存放ASCII碼,一個字節(jié)存放字符屬性(字符顏色、字符背景顏色、閃爍、高亮度)(2)偏移地址計算:如第2行,第40列:(2-1)×160+40×2這個偏移地址中存放字符的ASCII碼,(2-1)×160+40×2+1這個偏移地址中存放字符的屬性。第M行,第N列的一般計算公式為:(M-1)×160+N*2存放ASCII碼(M-1)×160+N*2+1存放屬性(3)運(yùn)行下列程序,在屏幕的第1行,會顯示一個字符X。根據(jù)上面(1)、(2)點理解程序段。 STACK SEGMENT DB 128 DUP(0) STACK ENDS CSEG
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨街旺鋪出租合同模板
- 與孩子成長合同之一:教育規(guī)劃
- 個人住宅抵押借款合同模板
- 臨街店面租房合同模板
- 中外農(nóng)產(chǎn)品進(jìn)出口貿(mào)易合同
- 中學(xué)食堂用品采購合同
- 個人與物業(yè)承包合同細(xì)則
- 個人貸款合同升級:抵押房屋保險新變化解析
- 個人就業(yè)合同樣本
- 個人向企業(yè)借款正式合同
- ptmeg生產(chǎn)工藝技術(shù)
- 2024年國新國際投資有限公司招聘筆試參考題庫含答案解析
- 食堂餐廳服務(wù)方案投標(biāo)方案(技術(shù)標(biāo))
- Creo-7.0基礎(chǔ)教程-配套課件
- 六年級人教版上冊數(shù)學(xué)計算題練習(xí)題(及答案)100解析
- 化療藥物分類及不良反應(yīng)的處理課件
- 超聲科質(zhì)量控制制度及超聲科圖像質(zhì)量評價細(xì)則
- 初中物理滬粵版八年級下冊《第六章 力和機(jī)械》章節(jié)練習(xí)(含答案)
- 金礦管理制度
- 橋梁樁基礎(chǔ)施工概述及施工控制要點
- SB/T 10415-2007雞粉調(diào)味料
評論
0/150
提交評論