匯編實驗報告-1_第1頁
匯編實驗報告-1_第2頁
匯編實驗報告-1_第3頁
匯編實驗報告-1_第4頁
匯編實驗報告-1_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

匯編實驗報告一、實驗目的:1、熟悉匯編語言運行環(huán)境和方法2、了解如何使用匯編語言的編制程序。3、熟悉DEBUG有關命令的使用方法。4、利用DEBUG掌握有關指令的功能。5、利用DEBUG運行簡單的程序段。二、實驗內容:編寫一程序:比擬兩個字符串string1和string2所含的字符是否相同。假設相同那么顯示‘match’,否那么‘Nomatch’。三、實驗步驟:1、建立程序所需要的ASM文件,并將實驗指導書中的范例程序編寫好。2、用匯編程序MASM對源文件匯編產生目標文件OBJ。3、用鏈接程序LINK產生執(zhí)行文件EXE。4、執(zhí)行程序。5、使用DEBUG調試程序。分別體會g命令、r命令、t命令、u命令、d命令以及q命令的用法。用-g命令來用運行程序,用-u命令來顯示程序,用-d命令來查看數(shù)據段的情況,用-e或-f命令來修改需要改正的局部,用-t指令來逐步執(zhí)行程序,用-r指令來查看存放器和修改存放器的值,-q命令用來退出debug程序。在這些命令的后面加上地址,可以將命令執(zhí)行到相應的地方。在Debug中用-g運行:四、程序代碼:;PROGRAMTITLEGOESHERE--Comparestring;******************************************************datareasegment;definedatasegmentstring1db'Movethecursorbackward.'string2db'Movethecursorbackward.';mess1db'Match.',13,10,'$'mess2db'Nomatch!',13,10,'$'datareaends;******************************************************prognamsegment;definecodesegment;------------------------------------------------------mainprocfarassumecs:prognam,ds:datarea,es:datareastart:;startingexecutionaddress;setupstackforreturnpushds;saveolddatasegmentsubax,ax;putzeroinAXpushax;saveitonstack;setDSregistertocurrentdatasegmentmovax,datarea;datareasegmentaddrmovds,ax;intoDSregistermoves,ax;intoESregister;MAINPARTOFPROGARMGOESHEREleasi,string1leadi,string2cldmovcx,25repzcmpsbjzmatchleadx,mess2jmpshortdispmatch:leadx,mess1disp:movah,09int21hret;returntoDOSmainendp;endofmainpartofprogram;-------------------------------------------------------prognamends;endodcodesegment;********************************************************endstart;endassembly實驗二用DEBUG編程:使用堆棧段將AX和BX的內容進行交換等一、實驗目的:1、熟練掌握DEBUG的常用命令,學會用DEBUG調試程序。2、掌握數(shù)據在內存中的存放方式和內存操作數(shù)的幾種尋址方式。3、掌握簡單指令的執(zhí)行過程。二、實驗內容:1、設堆棧指針SP=2000H,AX=3000H,BX=5000H;請編一程序段將AX和BX的內容進行交換。請用堆棧作為兩存放器交換內容的中間存儲單元,用DEBUG調試程序進行匯編與調試。2、設DS=當前段地址,BX=0300H,SI=0002H;請用DEBUG的命令將存儲器偏移地址300H~304H連續(xù)單元順序裝入0AH,0BH,0CH,0DH,0EH。在DEBUG狀態(tài)下送入下面程序,并用單步執(zhí)行的方法,分析每條指令源地址的形成過程,當數(shù)據傳送完畢時,AX中的內容是什么。程序代碼如下:MOVAX,BXMOVAX,0304HMOVAX,[0304H]MOVAX,[BX]MOVAX,0001[BX]MOVAX,[BX][SI]MOVAX,0001[BX][SI]HLT三、實驗步驟:實驗1:1、從DOS進入DEBUG界面。2、使用R命令修改存放器堆棧指針地址。3、使用A命令,并開始輸入代碼。4、使用T命令分步查看結果。編程后用t單步執(zhí)行:顯示交換后結果:實驗2:1、從DOS進入DEBUG界面。2、使用R命令修改存放器堆棧指針地址。3、使用D命令查看0300H處的存放情況。4、使用E命令將存儲器偏移地址300H~304H連續(xù)單元順序裝入0AH,0BH,0CH,0DH,0EH。5、使用A命令,并開始輸入代碼。6、使用T命令分步查看結果。四.源代碼實驗一:movsp,2000Movax,3000Movbx,5000PushaxPushbxPopaxPopbx實驗二:MOVAX,BXMOVAX,0304HMOVAX,[0304H]MOVAX,[BX]MOVAX,0001[BX]MOVAX,[BX][SI]MOVAX,0001[BX][SI]HLT2〕實驗三儲存器塊清零和內存塊移動一、實驗目的:1、了解存儲器的讀寫方法。2、了解存儲器的塊操作方法。二、實驗內容:1、完成程序用來存儲塊清零,首先設置塊起始地址,然后設置塊長度,再將當前地址內容清零,地址加一,然后判斷是否清完,假設清完那么結束,否那么返回到上一步。2、完成程序用來移動內存塊,首先設置塊的源地址,再設置塊的目標地址,然后設置移動長度,安長度重復傳送數(shù)據直到結束。三、實驗步驟:實驗1:1、對程序進行分析,畫出流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、利用DEBUG調試執(zhí)行文件。實驗2:1、對程序進行分析,畫出流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、利用DEBUG調試執(zhí)行文件。四、程序代碼:實驗1:DATASEGMENTBLOCKDB256DUP(55H)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCNEARMOVAX,DATAMOVDS,AXMOVBX,OFFSETBLOCKMOVCX,256AGAIN:MOV[BX],BYTEPTR0INCBXLOOPAGAINJMP$CODEENDSENDSTART實驗2DATASEGMENTSOURCEDB256DUP(055H)TARGETDB256DUP(0AAH)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTARTPROCNEARMOVAX,DATAMOVDS,AXMOVES,AXMOVSI,OFFSETSOURCEMOVDI,OFFSETTARGETMOVCX,256REPMOVSBJMP$CODEENDSENDSTART實驗四將鍵盤輸入的小寫字母用大寫字母顯示出來一、實驗目的:1、掌握接受鍵盤數(shù)據的方法,并了解將鍵盤數(shù)據顯示時,須轉為ASCII碼的原理。2、掌握DOS功能調用的編程方法。二、實驗內容:試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。利用DOS功能調用INT21H的1號功能從鍵盤輸入字符和2號功能在顯示器上顯示一個字符。三、實驗步驟:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:CODESEGMENTASSUMECS:CODESTART:MOVAL,01HINT21HMOVBL,ALMOVDL,'-'MOVAH,02HINT21HMOVAL,BLCMPAL,'a'JBEXITCMPAL,'z'JAEXITSUBAL,20HMOVDL,ALMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HEXIT:MOVAH,4CHINT21HCODEENDSENDSTART實驗五循環(huán)程序實驗一、實驗目的:1、掌握循環(huán)程序的設計方法。2、進一步熟悉利用DEBUG程序修改參數(shù)的方法,并檢查和驗證結果的正確性。3、學會針對不同的問題,選用不同的組織循環(huán)的方法。二、實驗內容:1、編寫一個程序,顯示AL存放器中的兩位十六進制數(shù)。2、編寫一個程序,判別鍵盤上輸入的字符;假設是1-9字符,那么顯示之;假設為A-Z或a-z字符,均顯示“c”;假設是回車字符〔其ASCII碼為0DH〕,那么結束程序;假設為其他字符那么不顯示。三、實驗步驟:實驗1:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。實驗2:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:實驗1:CODESEGMENTASSUMECS:CODESTART:MOVAL,3EHPUSHAXMOVDL,ALMOVCL,4SHRDL,CLCMPDL,9JBENEXT1ADDDL,7NEXT1:ADDDL,30HMOVAH,2INT21HPOPAXMOVDL,ALANDDL,0FHCMPDL,9JBENEXT2ADDDL,7NEXT2:ADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART實驗2:CODESEGMENTASSUMECS:CODESTART:MOVAH,1INT21HCMPAL,0DHJZDONECMPAL,'0'JBNEXTCMPAL,'9'JACHARUPMOVDL,ALMOVAH,2INT21HJMPSTARTCHARUP:CMPAL,41HJBNEXTCMPAL,5AHJACHRDNDISPC:MOVDL,'c'MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HJBNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21HCODEENDSENDSTART實驗六分支程序實驗一、實驗目的:1、掌握分支程序的設計方法。2、利用DEBUG程序修改參數(shù)、檢查結果。3、掌握匯編語言源程序的編輯、匯編、鏈接及調試過程。二、實驗內容:1、編寫一個程序,顯示AL存放器中的兩位十六進制數(shù)。2、編寫一個程序,判別鍵盤上輸入的字符;假設是1-9字符,那么顯示之;假設為A-Z或a-z字符,均顯示“c”;假設是回車字符〔其ASCII碼為0DH〕,那么結束程序;假設為其他字符那么不顯示。三、實驗步驟:實驗1:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。實驗2:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:實驗1:CODESEGMENTASSUMECS:CODESTART:MOVAL,3EHPUSHAXMOVDL,ALMOVCL,4SHRDL,CLCMPDL,9JBENEXT1ADDDL,7NEXT1:ADDDL,30HMOVAH,2INT21HPOPAXMOVDL,ALANDDL,0FHCMPDL,9JBENEXT2ADDDL,7NEXT2:ADDDL,30HMOVAH,2INT21HPOPAXMOVDL,ALANDDL,0FHCMPDL,9JBENEXT2ADDDL,7NEXT2:ADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART實驗2:CODESEGMENTASSUMECS:CODESTART:MOVAH,1INT21HCMPAL,0DHJZDONECMPAL,'0'JBNEXTCMPAL,'9'JACHARUPMOVDL,ALMOVAH,2INT21HJMPSTARTCHARUP:CMPAL,41HJBNEXTCMPAL,5AHJACHRDNDISPC:MOVDL,'c'MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HJBNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21HCODEENDSENDSTART實驗七統(tǒng)計不同成績段學生的人數(shù)一、實驗目的:1、掌握分支、循環(huán)、子程序調用、DOS功能調用等根本的程序結構。2、掌握綜合程序的編制及調試方法。二、實驗內容:設有十個學生成績分別是76,69,84,90,73,88,99,63,100和80分。試編制一個子程序,統(tǒng)計低于60分,60~69分,70~79分,80~89分,90~99分和100分的人數(shù),并輸出顯示統(tǒng)計結果。三、實驗步驟:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:SSEGSEGMENTPARASTACK'stack'DW100HDUP(0)SSEGENDSDSEGSEGMENTBUFDW76,69,84,90,73,88,99,63,100,80COUNTEQU$-BUFSTR1DB'0-59:','$'STR2DB'60-69:','$'STR3DB'70-79:','$'STR4DB'80-89:','$'STR5DB'90-99:','$'STR6DB'100:','$'RESDW20DUP(?)DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGMAINPROCFARMOVAX,DSEGMOVDS,AXSTART:MOVCX,COUNT/2+1MOVDI,OFFSETRESMOVSI,OFFSETBUF-2BEGIN:INCSIINCSIDECCXJZOUTPUTMOVAX,[SI]CMPAX,60JBLOP1CMPAX,70JBLOP2CMPAX,80JBLOP3CMPAX,90JBLOP4CMPAX,100JBLOP5JZLOP6LOP1:MOVBX,[DI]INCBXMOV[DI],BXJMPLOP2:MOVBX,[DI+2]INCBXMOV[DI+2],BXJMPBEGINLOP3:MOVBX,[DI+4]INCBXMOV[DI+4],BX

溫馨提示

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

評論

0/150

提交評論