安工大匯編語言實驗報告(紀平)_第1頁
安工大匯編語言實驗報告(紀平)_第2頁
安工大匯編語言實驗報告(紀平)_第3頁
安工大匯編語言實驗報告(紀平)_第4頁
安工大匯編語言實驗報告(紀平)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、匯編語言試驗報告班 級 學 號 姓 名 指導教師 實驗一 匯編語言運行環(huán)境及方法、簡單程序設(shè)計一、實驗目的:1、熟悉匯編語言運行環(huán)境和方法2、了解如何使用匯編語言的編制程序。3、熟悉DEBUG有關(guān)命令的使用方法。4、利用DEBUG掌握有關(guān)指令的功能。5、利用DEBUG運行簡單的程序段。二、實驗內(nèi)容:編寫一程序:比較兩個字符串string1和string2所含的字符是否相同。若相同則顯示match,否則No match。三、實驗步驟:1、建立程序所需要的ASM文件,并將實驗指導書中的范例程序編寫好。2、用匯編程序MASM對源文件匯編產(chǎn)生目標文件OBJ。3、用鏈接程序LINK產(chǎn)生執(zhí)行文件EXE。4

2、、執(zhí)行程序。5、使用DEBUG調(diào)試程序。分別體會g命令、r命令、t命令、u命令、d命令以及q命令的用法。用-g命令來用運行程序,用-u命令來顯示程序,用-d 命令來查看數(shù)據(jù)段的情況,用-e或-f命令來修改需要改正的部分,用-t指令來逐步執(zhí)行程序,用-r指令來查看寄存器和修改寄存器的值,-q命令用來退出debug程序。在這些命令的后面加上地址,可以將命令執(zhí)行到相應的地方。在Debug中用-g運行:用-u命令顯示程序:-g0b 將斷點設(shè)置在指令LEA SI;之前根據(jù)其中指示的ds寄存器內(nèi)容查看數(shù)據(jù)段情況:用e命令修改數(shù)據(jù)段字符串:再次運行結(jié)果:用q命令退出debug:四、程序代碼:;PROGRAM

3、 TITLE GOES HERE-Compare string;*datareasegment;define data segmentstring1db'Move the cursor backward.'string2db'Move the cursor backward.'mess1db'Match.',13,10,'$'mess2db'No match!',13,10,'$'datarea ends;*prognam segment;define code segment;-mainprocf

4、arassume cs:prognam,ds:datarea,es:datareastart:;starting execution address;set upstack for returnpushds;save old data segmentsubax,ax;put zero in AXpushax;save it on stack;set DSregister to current data segmentmovax,datarea;datarea segment addrmovds,ax;into DS registermoves,ax;into ES register;MAIN

5、PART OF PROGARM GOES HEREleasi,string1leadi,string2cldmovcx,25repzcmpsbjzmatchleadx,mess2jmpshort dispmatch:leadx,mess1disp:movah,09int21hret;return to DOSmainendp;end of main part of program;-prognam ends;end od code segment;*endstart;end assembly實驗二 用DEBUG編程:使用堆棧段將AX和BX的內(nèi)容進行交換等一、實驗目的:1、熟練掌握DEBUG的常

6、用命令,學會用DEBUG調(diào)試程序。2、掌握數(shù)據(jù)在內(nèi)存中的存放方式和內(nèi)存操作數(shù)的幾種尋址方式。3、掌握簡單指令的執(zhí)行過程。二、實驗內(nèi)容:1、設(shè)堆棧指針SP=2000H,AX=3000H,BX=5000H;請編一程序段將AX和BX的內(nèi)容進行交換。請用堆棧作為兩寄存器交換內(nèi)容的中間存儲單元,用DEBUG調(diào)試程序進行匯編與調(diào)試。2、設(shè)DS=當前段地址,BX=0300H,SI=0002H;請用DEBUG的命令將存儲器偏移地址300H304H連續(xù)單元順序裝入0AH,0BH,0CH,0DH,0EH。在DEBUG狀態(tài)下送入下面程序,并用單步執(zhí)行的方法,分析每條指令源地址的形成過程,當數(shù)據(jù)傳送完畢時,AX中的內(nèi)

7、容是什么。程序代碼如下:MOV AX,BXMOV AX,0304HMOV AX,0304HMOV AX,BXMOV AX,0001BXMOV AX,BXSIMOV AX,0001BXSIHLT三、實驗步驟:實驗1:1、從DOS進入DEBUG界面。2、使用R命令修改寄存器堆棧指針地址。3、使用A命令,并開始輸入代碼。4、使用T命令分步查看結(jié)果。編程后用t單步執(zhí)行:顯示交換后結(jié)果:實驗2:1、從DOS進入DEBUG界面。2、使用R命令修改寄存器堆棧指針地址。3、使用D命令查看0300H處的存放情況。4、使用E命令將存儲器偏移地址300H304H連續(xù)單元順序裝入0AH,0BH,0CH,0DH,0EH

8、。5、使用A命令,并開始輸入代碼。6、使用T命令分步查看結(jié)果。當數(shù)據(jù)傳送完畢時,AX=0E0D單步執(zhí)行查看結(jié)果:四、程序代碼:MOV AX,BXMOV AX,0304HMOV AX,0304HMOV AX,BXMOV AX,0001BXMOV AX,BXSIMOV AX,0001BXSI實驗三 儲存器塊清零和內(nèi)存塊移動一、實驗目的:1、了解存儲器的讀寫方法。2、了解存儲器的塊操作方法。二、實驗內(nèi)容:1、完成程序用來存儲塊清零,首先設(shè)置塊起始地址,然后設(shè)置塊長度,再將當前地址內(nèi)容清零,地址加一,然后判斷是否清完,若清完則結(jié)束,否則返回到上一步。2、完成程序用來移動內(nèi)存塊,首先設(shè)置塊的源地址,再設(shè)

9、置塊的目標地址,然后設(shè)置移動長度,安長度重復傳送數(shù)據(jù)直到結(jié)束。三、實驗步驟:實驗1:1、 對程序進行分析,畫出流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、利用DEBUG調(diào)試執(zhí)行文件。實驗2:1、 對程序進行分析,畫出流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、利用DEBUG調(diào)試執(zhí)行文件。單步執(zhí)行:執(zhí)行到rep movsb之前查看ds段和es段內(nèi)容:移動后查看ds段和es段內(nèi)容:四、程序代碼:實驗1:DATASEGMENTBLOCKDB256DUP(55H)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTARTPROCNEARM

10、OVAX,DATAMOVDS,AXMOVBX,OFFSET BLOCKMOVCX,256AGAIN:MOVBX,BYTE PTR0INCBXLOOPAGAINJMP$CODE ENDSENDSTART實驗2DATASEGMENTSOURCEDB 256 DUP(055H)TARGETDB 256 DUP(0AAH)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTARTPROCNEARMOVAX,DATAMOVDS,AXMOVES,AXMOVSI,OFFSET SOURCEMOVDI,OFFSET TARGETMOVCX,256REPMOVSB

11、JMP$CODEENDSENDSTART實驗四 將鍵盤輸入的小寫字母用大寫字母顯示出來一、實驗目的:1、掌握接受鍵盤數(shù)據(jù)的方法,并了解將鍵盤數(shù)據(jù)顯示時,須轉(zhuǎn)為ASCII碼的原理。2、掌握DOS功能調(diào)用的編程方法。二、實驗內(nèi)容:試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。利用DOS功能調(diào)用INT21H的1號功能從鍵盤輸入字符和2號功能在顯示器上顯示一個字符。三、實驗步驟:1、設(shè)計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:CODE SEGMENTASSUMECS:CODESTART:MOVAL,01HINT21HMOVBL,AL

12、MOVDL,'-'MOVAH,02HINT21HMOVAL,BLCMPAL,'a'JBEXITCMPAL,'z'JAEXITSUBAL,20HMOVDL,ALMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HJMPSTARTEXIT:MOVAH,4CHINT21HCODEENDSENDSTART實驗五 循環(huán)程序?qū)嶒炓?、實驗目的?、掌握循環(huán)程序的設(shè)計方法。2、進一步熟悉利用DEBUG程序修改參數(shù)的方法,并檢查和驗證結(jié)果的正確性。3、學會針對不同的問題,選用不同的組織循環(huán)的

13、方法。二、實驗內(nèi)容:1、編寫一個程序,顯示AL寄存器中的兩位十六進制數(shù)。2、編寫一個程序,判別鍵盤上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結(jié)束程序;若為其他字符則不顯示。三、實驗步驟:實驗1:1、設(shè)計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。實驗2:1、設(shè)計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:實驗1:CODESEGMENTASSUMECS:CODESTART:MOVAL,3EHPUSHAXMOVDL,ALMOVC

14、L,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,2INT21HJMPST

15、ARTCHARUP:CMPAL,41HJBNEXTCMPAL,5AHJACHRDNDISPC:MOVDL,'c'MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HJBNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21HCODE ENDSENDSTART實驗六 分支程序?qū)嶒炓?、實驗目的?、掌握分支程序的設(shè)計方法。2、利用DEBUG程序修改參數(shù)、檢查結(jié)果。3、掌握匯編語言源程序的編輯、匯編、鏈接及調(diào)試過程。二、實驗內(nèi)容:1、編寫一個程序,顯示AL寄存器中的兩位十六進制數(shù)。2、編寫一個程序,判別鍵盤上輸入的字

16、符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結(jié)束程序;若為其他字符則不顯示。三、實驗步驟:實驗1:1、設(shè)計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。實驗2:1、設(shè)計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:實驗1:CODESEGMENTASSUMECS:CODESTART:MOVAL,3EHPUSHAXMOVDL,ALMOVCL,4SHRDL,CLCMPDL,9JBENEXT1ADDDL,7NEXT1:ADDDL,30HMOVAH,

17、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,&

18、#39;c'MOVAH,2INT21HNEXT:JMPSTARTCHRDN:CMPAL,61HJBNEXTCMPAL,7AHJANEXTJMPDISPCDONE:MOVAH,4CHINT21HCODE ENDSENDSTART實驗七 統(tǒng)計不同成績段學生的人數(shù)一、實驗目的:1、掌握分支、循環(huán)、子程序調(diào)用、DOS功能調(diào)用等基本的程序結(jié)構(gòu)。2、掌握綜合程序的編制及調(diào)試方法。二、實驗內(nèi)容:設(shè)有十個學生成績分別是76,69,84,90,73,88,99,63,100和80分。試編制一個子程序,統(tǒng)計低于60分,6069分,7079分,8089分,9099分和100分的人數(shù),并輸出顯示統(tǒng)計結(jié)果。三、

19、實驗步驟:1、設(shè)計程序流程圖。2、進行MASM匯編和LINK連接生成執(zhí)行文件。3、執(zhí)行文件。四、程序代碼:SSEG SEGMENT PARA STACK 'stack'DW 100H DUP(0)SSEG ENDSDSEG SEGMENT BUFDW 76,69,84,90,73,88,99,63,100,80 COUNT EQU $-BUF STR1DB '0-59:','$' STR2 DB '60-69:','$' STR3 DB '70-79:','$' STR4 DB &#

20、39;80-89:','$' STR5 DB '90-99:','$' STR6 DB '100:','$' RES DW 20 DUP(?)DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG, DS:DSEGMAIN PROC FAR MOV AX,DSEG MOV DS,AXSTART: MOV CX,COUNT/2+1 MOV DI,OFFSETRES MOV SI,OFFSET BUF-2BEGIN: INC SI INC SI DEC CX JZ OUTPUT MOV AX,SI CMP AX,60 JB LOP1 CMP AX,70 JB LOP2 CMP AX,80 JB LOP3 CMP AX,90 JB LOP4 CMP AX,100 JB LOP5 JZ LOP6 LOP1: MOV BX,DI INC BX MOV DI,BX JMP LOP2: MOV BX,DI+2 INC BX MOV DI+2,BX JMP BEGIN LOP3: MOV BX,DI+4 INC BX MOV DI+4,BX JMP BEGIN LOP4: MOV BX,DI+6 INC BX MOV DI+6,BX JMP BEGIN LOP5: MOV

溫馨提示

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

評論

0/150

提交評論