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

下載本文檔

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

文檔簡介

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

2、、執行程序。5、使用DEBUG調試程序。分別體會g命令、r命令、t命令、u命令、d命令以及q命令的用法。用-g命令來用運行程序,用-u命令來顯示程序,用-d 命令來查看數據段的情況,用-e或-f命令來修改需要改正的部分,用-t指令來逐步執行程序,用-r指令來查看寄存器和修改寄存器的值,-q命令用來退出debug程序。在這些命令的后面加上地址,可以將命令執行到相應的地方。在Debug中用-g運行:用-u命令顯示程序:-g0b 將斷點設置在指令LEA SI;之前根據其中指示的ds寄存器內容查看數據段情況:用e命令修改數據段字符串:再次運行結果:用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的內容進行交換等一、實驗目的:1、熟練掌握DEBUG的常

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

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命令分步查看結果。編程后用t單步執行:顯示交換后結果:實驗2:1、從DOS進入DEBUG界面。2、使用R命令修改寄存器堆棧指針地址。3、使用D命令查看0300H處的存放情況。4、使用E命令將存儲器偏移地址300H304H連續單元順序裝入0AH,0BH,0CH,0DH,0EH

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

9、置塊的目標地址,然后設置移動長度,安長度重復傳送數據直到結束。三、實驗步驟:實驗1:1、 對程序進行分析,畫出流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、利用DEBUG調試執行文件。實驗2:1、 對程序進行分析,畫出流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、利用DEBUG調試執行文件。單步執行:執行到rep movsb之前查看ds段和es段內容:移動后查看ds段和es段內容:四、程序代碼:實驗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、掌握接受鍵盤數據的方法,并了解將鍵盤數據顯示時,須轉為ASCII碼的原理。2、掌握DOS功能調用的編程方法。二、實驗內容:試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。利用DOS功能調用INT21H的1號功能從鍵盤輸入字符和2號功能在顯示器上顯示一個字符。三、實驗步驟:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、執行文件。四、程序代碼:CODE SEGMENTASSUMECS:CODESTART:MOVAL,01HINT21HMOVBL,AL

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

13、方法。二、實驗內容:1、編寫一個程序,顯示AL寄存器中的兩位十六進制數。2、編寫一個程序,判別鍵盤上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結束程序;若為其他字符則不顯示。三、實驗步驟:實驗1:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、執行文件。實驗2:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、執行文件。四、程序代碼:實驗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實驗六 分支程序實驗一、實驗目的:1、掌握分支程序的設計方法。2、利用DEBUG程序修改參數、檢查結果。3、掌握匯編語言源程序的編輯、匯編、鏈接及調試過程。二、實驗內容:1、編寫一個程序,顯示AL寄存器中的兩位十六進制數。2、編寫一個程序,判別鍵盤上輸入的字

16、符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結束程序;若為其他字符則不顯示。三、實驗步驟:實驗1:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、執行文件。實驗2:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、執行文件。四、程序代碼:實驗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實驗七 統計不同成績段學生的人數一、實驗目的:1、掌握分支、循環、子程序調用、DOS功能調用等基本的程序結構。2、掌握綜合程序的編制及調試方法。二、實驗內容:設有十個學生成績分別是76,69,84,90,73,88,99,63,100和80分。試編制一個子程序,統計低于60分,6069分,7079分,8089分,9099分和100分的人數,并輸出顯示統計結果。三、

19、實驗步驟:1、設計程序流程圖。2、進行MASM匯編和LINK連接生成執行文件。3、執行文件。四、程序代碼: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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論