IBM-PC匯編語言程序設計實驗報告_第1頁
IBM-PC匯編語言程序設計實驗報告_第2頁
IBM-PC匯編語言程序設計實驗報告_第3頁
IBM-PC匯編語言程序設計實驗報告_第4頁
IBM-PC匯編語言程序設計實驗報告_第5頁
已閱讀5頁,還剩31頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、目錄實驗1 利用DEBUG調試匯編語言程序段1實驗2 初級程序的編寫與調試實驗(一)5實驗3 初級程序的編寫與調試實驗(二)14實驗4 匯編語言程序上機過程19實驗5 分支程序實驗22實驗6 循環程序實驗26實驗7 子程序實驗30 35 實驗1 利用DEBUG調試匯編語言程序段一實驗目的1熟悉DEBUG有關命令的使用方法;2利用DEBUG掌握有關指令的功能;3利用DEBUG運行簡單的程序段。二實驗環境PC微機DOS操作系統、Windows操作系統三實驗內容1進入和退出DEBUG程序;1)開始運行,輸入cmd,點確定進入命令窗口2)在命令窗口中輸入dubug進入debug程序3)進入debug窗

2、口后,輸入q命令退出debug2學會DEBUG中的1)D命令(顯示內存數據D 段地址:偏移地址)-D100 ;顯示DS段, 0100開始的128個字節內容D  默認段寄存器為DS,當前偏移地址(剛進入debug程序偏移地址為0100H)D DS:100;顯示DS段, 0100H開始的128個字節內容D CS:200 ;顯示CS段, 0200H開始的128個字節內容    D 200:100 ;顯示DS段, 0200:0100H開始的128個字節內容D 200 ;顯示DS段, 0200H開始的128個字節內容  &#

3、160; D 100 L 10 ;顯示DS段, 100H開始的100H個字節內容2)E命令(修改指定內存)E DS:100 F3 AB 8D ; 把DS段中0100H開始的四個字節修改為F3 AB(A和B的ASCII碼) 8D也可以按下面的方式實現3)R命令(顯示當前寄存器的內容)4)T命令(設置陷井,單步執行)5)A命令(將指令直接匯編成機器碼輸入到內存中。)使用A命令在0100H開始輸入指令mov ax, 10 inc cx mov bl, al單步執行上述指令6)G命令等的使用(執行A命中輸入的匯編指令)使用A命令在0100H開始輸入指令mov ax, 10 inc cx mo

4、v bl, al int 3然后使用g命令執行上面的例子設斷點在100H處然后用T命令單步執行實驗2 初級程序的編寫與調試實驗(一)一實驗目的1進一步熟悉DEBUG命令;2掌握數據在內存中的存放方式和內存操作數的幾種尋址方式,段寄存器和物理地址計算; 3熟悉數據傳送指令、算術運算指令、邏輯指令、數據串傳送程序和數據串傳送指令MOVS、STOS及重復前輟REP;4掌握簡單的匯編語言程序編寫與調試。二實驗環境PC微機DOS操作系統、Windows操作系統;三實驗步驟1內存操作數及各種尋址方式使用MOVAX,1234 MOV1000,AXMOVBX,1002MOVBYTE PTRBX,20MOVDL

5、,39INCBXMOVBX,DLDECDLMOVSI,3MOVBX+SI,DLMOVBX+SI+1,DLMOVWORD PTRBX+SI+2,2846步驟: (1) 用A命令鍵入上述程序,并用T命令逐條運行。(2) 每運行一條有關內存操作數的指令,要用D命令檢查并記錄有關內存單元的內容并注明是什么尋址方式。注意D命令顯示結果中右邊的ASCII字符及雙字節數存放法。2求累加和程序:程序:MOVBX,1000MOVCX,10SUBAX,AXLOP: ADDAL,BXADC AH,0INCBXJ:LOOPLOPINT3步驟:(1)用A命令將程序鍵入到100H開始的內存中,在鍵入時記下標號LOP和J的

6、實際地址,在鍵入LOOP指令時LOP用實際地址值代替;(2)用命令N AA 將此程序命名為文件AA(文件名可任取);(3)用R命令將BX:CX改為程序長度值(即最后一條指令后面的地址減去開始地址;(4)用命令W 100將此程序存到AA命名的磁盤文件中;(5)用命令Q退出DEBUG;(6)用命令DEBUG AA再次調入DEBUG和文件AA,可用U命令檢查調入程序;若調入DEBUG時忘了加AA文件名,可用N命令和L命令將文件調入;(7)用E命令在內存地址1000H處鍵入16個數字;(8)用命令G=100 J(J用實際地址代替),使程序運行并停在斷點J上,檢查AX,BX的值是否符合你的預計值;(9)

7、用T命令運行一步,觀察程序方向(IP值)和CX值是否與你的估計一樣,若不一樣,檢查程序是否有錯;(10)重復G、J與T,再檢查AX是否正確;(11)用G命令使程序運行到結束,檢查AX值是否正確。3多字節加法程序程序:MOVDI,1000MOVCX,8MOVSI,2000CLCLOP: MOVAL,SIADCDI,ALINCSIINCDILOOPLOPINT20步驟:(1) 用命令鍵入此程序(2) 用E命令在1000H開始處鍵入一個8字節被加數,在2000H開始處鍵入一個8字節加數,均為低字節在前面。4數據串搬家程序(1)用A命令鍵入下列程序:MOVSI,1000MOVDI,1500MOVCX,

8、0FHLOP:MOVAL,SIMOVDI,ALINCSIINCDILOOPLOPINT20(2)用A命令DB偽指令在1000H鍵入下列字符串:IBM_PC COMPUTER'(3)用G命令運行此程序,并用D命令檢查目的地址處的字符與源串是否一致。5段寄存器概念及字符串傳送指令練習(1) 用A命令鍵入下列程序:MOVSI,0MOVDI,0MOVAX,1000MOVDS,AXMOVAX,1500MOVES,AXMOVCX,0FCLDREPMOVSBINT20(3) 用A命令DB偽指令在1000:0000處鍵入字符串'IBM_PC COMPUTER',并用D命檢查之(4) 用

9、D命令檢查0F00:1000處內容,看是否一樣。為什么?(5) 用G命令運行此程序,檢查目的地址1500:0000處內容。并記下DS與ES值。(6) 修改此程序,使ES與DS為同一值,以減少一條指令,而源物理地址和目的物理地址(是多少?)仍和原來一樣。實驗3 初級程序的編寫與調試實驗(二)一實驗目的1掌握無條件轉移指令、條件轉移指令;2掌握利用DOS功能調用INT21H的2號和9號功能進行屏幕顯示的方法;3掌握直接向視頻RAM送ASCII碼進行屏幕顯示的方法;4掌握屏幕字符顯示程序編寫與調試。二實驗環境PC微機DOS操作系統、Windows操作系統;三實驗步驟1利用INT 21 0AH號功能調

10、用顯示字符串。(1)用A命令在100H處鍵入下列程序:MOVAH, 9MOVDX,110INT21INT20(2)用A命令在110H處鍵入下列字符串的ASCII碼:DB'This is a sample!$'(3)用N命令和W命令將此程序(包括數據區)存入文件名為AAOM的磁盤文件中。(存入前BX:CX必須置為文件長度值)。(4)用Q命令退出DEBUG。(5)在DOS命令下打AA,運行此程序,即在屏幕上顯示'This is a sample!'字符串,若不出現,用DEBUG檢查程序有無錯誤。2利用INT 21H 2號功能顯示字符(1)用A命令在100H處鍵入下列

11、程序:XORDL,DLMOVCX,100LOP: MOVAH,2INT21INCDLPUSHCXMOVCX,8DELY: PUSHCXMOVCX,0J: LOOPJPOPCXLOOPDELYPOPCXLOOPLOPINT20(2)用G命令運行程序,即在屏幕上依次緩慢的顯示256個ASCII字符。仔細觀察每個字符,和IBM-PC ASCII碼表對照,看07H-0DH處控制字符顯示結果與表上有何不同?(3)按CTRL+BREAK退出此程序,若一次不行可多做幾次。3直接向VRAM送ASCII碼顯示字符(1)用A命令在100H處鍵入下列程序MOVAX,B000MOVDS,AXXORAL,ALXORBX

12、,BXMOVCX,100LOP:MOVBX,ALINCBXINCALPUSHCXMOVCX,8DELY:PUSHCXMOVCX,0J: LOOPJPOPCXLOOPDELYPOPCXLOOPLOPINT20(2)用N命令和W命令將此程序存入BB.COM文件中。(一定要先存入!)(3)用G命令運行此程序,仔細觀察每一個ASCII碼顯示結果,并和字符表及上一道程序運行情況進行對照,其控制字符區(07-0DH)顯示結果和INT 21H 2號功能調用有何不同?4用字符搜索法確定字符串長度(1)用A命令在100H開始的內存處鍵入下列程序JMPSTARTDB'This is the program

13、 to measure'DB'the length of a string!$'START:MOVBX,102MOVAL,24XORCL,CLLOP: CMPAL,BXJZEXITINCBXINCCLJMPLOPEXIT:INT3(2)用G命令運行此程序,并檢查CL的統計長度是否與你自己統計的實際長度是否一樣?5用字符搜索法確定字符串長度 (1)用A命令在100H處鍵入下列程序:MOVSI,0MOVBL,10LOP: MOVDL,SIMOVCL,4SHRDL,CLCMPDL,0AJCJ1ADDDL,7J1: ADDDL,30MOVAH,2INT21MOVDL,SIAND

14、DL,0FCMPDL,0AJCJ2ADDDL,7J2: ADDDL,30MOVAH,2INT21MOVDL,20MOVAH,2INT21INCSIDECBLJNZLOPINT20(2)用N,W命令將此程序用CCCOM文件名存入磁盤。(3)用Q命令退出DEBUG。(4)在DOS命令狀態下直接運行CCCOM命令文件,應在屏幕上顯示出內存從0000H開始的16個字節的內容,若有錯誤,用DEBUG檢查之。實驗4 匯編語言程序上機過程一實驗目的熟練掌握匯編語言程序的編輯、調試和運行的過程和方法。了解匯編語言程序的匯編、運行環境。 二實驗環境PC微機DOS操作系統、Windows操作系統MASM匯編集成環

15、境三實驗步驟程序:datasegmentmessagedb'This is a sample program of keyboard and disply'db0dh,0ah,'Please strike the key!',0dh,0ah,'$'dataendsstacksegmentpara stack 'stack'db50 dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdx,offset messagem

16、ovah,9int21h ;顯示'This is a sample program of keyboard and disply'again:movah,1int21h ;等待鍵盤輸入,保存至ALcmpal,1bh ;1bh 字符ESC的ASCIIjeexitcmpal,61h ;61h字符a的ASCIIjc(jb)nd ;小于(CF=1有借位)轉向ND原樣顯示cmpal,7ah ;jand ;大于轉向ND原樣顯示andal,11011111b ;轉化為大寫字母 sub al,20hnd:movdl,almovah,2int21hjmpagainexit:movah,4chin

17、t21hcodeendsendstart實驗步驟:1 用用文字編輯工具(記事本或EDIT)將源程序輸入,其擴展名為ASM。2用MASM對源文件進行匯編,產生OBJ文件和LST文件。若匯編時提示有錯,用文字編輯工具修改源程序后重新匯編,直至通過。3用TYPE命令顯示1產生的LST文件。4用LINK將OBJ文件連接成可執行的EXE文件。5在DOS狀態下運行LINK產生的EXE文件。即在屏幕上顯示標題并提示你按鍵。每按一鍵在屏幕上顯示二個相同的字符,但小寫字母被改成大寫。按ESC鍵可返回DOS。若未出現預期結果,用DEBUG檢查程序。實驗5 分支程序實驗一實驗目的1 掌握分支程序的設計方法;2 掌握

18、利用DEBUG修改參數、檢查結果的方法;3 熟悉匯編語言源程序的編輯、匯編、連接及調試過程。二實驗環境PC微機DOS操作系統、Windows操作系統MASM匯編集成環境三實驗內容1編寫一個程序,顯示AL寄存器中的兩位十六進制數codesegmentassumecs:codestart:moval, 3ehmovbl, almovdl, almovcl, 4shrdl, clcmpdl, 9jbenext1adddl, 7next1:adddl, 30hmovah, 2int 21hmov dl, blanddl, 0fhcmpdl, 9jbenext2adddl, 7next2:adddl,

19、30hmovah, 2int 21hmovah, 4chint 21hcodeendsendstart2編寫一個程序,判別鍵盤上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結束程序,若為其它字符則不顯示,繼續等待新的字符輸入。codesegmentassumecs:codestart:movah, 1int21hcmpal, 0dhjzdonecmpal, 0jbnextcmpal, 9jacharupmovdl, almovah, 2int21hjmpstartcharup:cmpal, 41hjb

20、nextcmpal, 5ahjachrdndispc:movdl, Cmovah, 2int21hnext:jmpstartchrdn:cmpal, 61hjbnextcmpal, 7ahjanextjmpdispcdone:movah,4chint21hcodeendsendstart四實驗步驟1 用EDIT或其它編輯軟件,編寫.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。2對其進行匯編及連接,產生.EXE文件。3對.EXE文件進行調試運行。(1)用DEBUG調試運行,學會修改AL內容的方法;(2)對DSPKEY.EXE鍵入不同的字符,分別進行調試;(3)在MS-DOS下運

21、行這兩個.EXE文件。實驗6 循環程序實驗一實驗目的1掌握循環程序的設計方法;2學會針對不同的問題,選用不同的組織循環的方法;3進一步熟悉利用DEBUG程序修改參數的方法,并檢查和驗證結果的正確性。二實驗環境PC微機DOS操作系統、Windows操作系統MASM匯編集成環境三實驗內容1編寫一個程序,顯示BX寄存器中的兩位十六進制數;codesegmentassumecs:codestart:movcl, 2again:push clmovcl, 4rolbl, clmovdl, blanddl, 0fhcmpdl, 9jbeshowadddl, 7show:adddl, 30hmovah, 2

22、int 21hpop clloop againmovah, 4chint 21hcodeendsendstart2編寫一個程序,判別鍵盤上輸入的字符;若是1-9字符,則顯示之;若為A-Z或a-z字符,均顯示“c”;若是回車字符<CR>(其ASCII碼為0DH),則結束程序,若為其它字符則不顯示,繼續等待新的字符輸入。codesegmentassumecs:codestart:movah, 1int21hcmpal, 0dhjzdonecmpal, 0jbnextcmpal, 9jacharupmovdl, almovah, 2int21hjmpstartcharup:cmpal,

23、41hjbnextcmpal, 5ahjachrdndispc:movdl, Cmovah, 2int21hnext:jmpstartchrdn:cmpal, 61hjbnextcmpal, 7ahjanextjmpdispcdone:movah,4chint21hcodeendsendstart四實驗步驟1用EDIT或其它編輯軟件,編寫.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM;2對其進行匯編及連接,產生.EXE文件;3對.EXE文件進行調試運行。(1)用DEBUG調試運行,學會修改BL內容的方法;(2)對DSPKEY.EXE鍵入不同的字符,分別進行調試;(3)在MS-D

24、OS下運行這兩個.EXE文件。實驗7 子程序實驗一實驗目的1掌握主程序與子程序之間的調用關系及調用方法;2掌握子程序調用過程中近程調用與遠程調用的區別;3掌握通過堆棧轉送參數的方法。二實驗環境PC微機DOS操作系統、Windows操作系統MASM匯編集成環境三實驗內容1將BUF開始的10個單元中的二進制數轉換成兩位十六進制數的ASCII碼,在屏幕上顯示出來。要求碼型轉換通過子程序HEXAC實現,在轉換過程中,通過子程序DISP實現顯示。datasegmentbufdb0abh, 0cdh, 0deh, 01h, 02h, 03hdb3ah, 4bh, 5ch, 6fhdataendscodes

25、egmentassumecs:code, ds:datastart:movax, datamovds, axmovcx, 10leabx, bufagain:moval, bxcall hexascinc bxloop againmovah, 4chint 21hhexascproc nearmovdl, alpush cxmovcl, 4shrdl, clpop cxcall dispmovdl, alanddl, 0fhcall disprethexascendpdispproccmpdl, 9jbe nextadddl, 7next:adddl, 30hpush axmovah, 2int 21hpop axretdispendpcodeendsendsta

溫馨提示

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

評論

0/150

提交評論