匯編語言程序設(shè)計實驗教學大綱-蔣永國編寫_第1頁
匯編語言程序設(shè)計實驗教學大綱-蔣永國編寫_第2頁
匯編語言程序設(shè)計實驗教學大綱-蔣永國編寫_第3頁
匯編語言程序設(shè)計實驗教學大綱-蔣永國編寫_第4頁
匯編語言程序設(shè)計實驗教學大綱-蔣永國編寫_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、匯編語言程序設(shè)計實驗教學大綱課程號:080503101301 課程類別:專業(yè)基礎(chǔ)課 適用專業(yè):計算機科學與技術(shù)專業(yè)課程總學時:34 實驗學時:17 大綱編寫人:蔣永國 編寫時間:2010年6月18日【實驗?zāi)繕艘蟆?匯編語言程序設(shè)計是計算機科學與技術(shù)專業(yè)必修的專業(yè)基礎(chǔ)課程。匯編語言程序設(shè)計實驗的目標是學習匯編語言程序設(shè)計的基本方法和技能,熟練掌握用匯編語言設(shè)計、編寫、調(diào)試和運行程序的方法,匯編語言程序?qū)嶒灥膬?nèi)容與計算機硬件特性聯(lián)系緊密。通過上機實驗的學習,使學生不僅能加深理解和鞏固理論課所學的知識,而且還能了解計算機的底層軟件的工作過程,為今后學習后續(xù)課程打好良好的基礎(chǔ)?!緦嶒瀸W習要求】 認真

2、閱讀IBM-PC匯編語言程序設(shè)計教材中與實驗相關(guān)的章節(jié)內(nèi)容,提前做好實驗預習,做到在每個實驗前明確實驗?zāi)康摹⒄莆諏嶒灥幕緝?nèi)容及操作方法;在實驗中正確使用實驗設(shè)備,認真觀察、分析實驗結(jié)果;實驗后要根據(jù)要求做好總結(jié),上交實驗報告。具體要求如下: 1.上機前,要作好充分準備,包括程序框圖、源程序清單、調(diào)試步驟、測試方法、對運行結(jié)果的分析等。 2.上機時,要熟悉與實驗有關(guān)的系統(tǒng)軟件(如編輯程序、匯編程序、連接程序、調(diào)試程序)的使用方法;在程序調(diào)試過程中,有意識的學習及掌握Debug的各種操作命令,以便掌握程序的調(diào)試方法及技巧;程序調(diào)試完后,須由實驗輔導教師在機器上檢查運行結(jié)果。 3.上機后,應(yīng)寫出實

3、驗報告,及時總結(jié)。 4.遵守實驗室的規(guī)章制度,愛護實驗設(shè)備。 1 / 29【實驗計劃】 實驗序號實驗項目內(nèi)容學時實驗一IBM-PC尋址方式及DEBUG的使用3實驗二熟悉指令系統(tǒng)3實驗三建立運行匯編語言程序3實驗四循環(huán)程序設(shè)計2實驗五分支程序設(shè)計2實驗六子程序設(shè)計2實驗七I/O程序設(shè)計2【實驗教材及主要參考資料】 教材: 1.IBM-PC匯編語言程序設(shè)計(第二版),沈美明、溫冬蟬編著,清華大學出版社,2001.8。 2.IBM-PC匯編語言程序設(shè)計實驗教程,沈美明、溫冬蟬、張赤紅編著,清華大學出版社,2008.2。 【實驗任務(wù)】 實驗一、IBM-PC尋址方式及DEBUG的使用實驗?zāi)康模?1.熟悉

4、DEBUG的功能,運行并掌握其常用命令。 2.使用DEBUG,通過數(shù)據(jù)傳送指令觀察IBM-PC機各種尋址方式的區(qū)別。 實驗內(nèi)容: 1. DEBUG的加載及其常用命令(A、U、R、D、E、T、P、G、Q)的使用情況。(注意:微機進入DEBUG狀態(tài)下之后,一切立即數(shù)和地址數(shù)據(jù)均被默認為十六進制數(shù),在輸入時數(shù)的后面不加后綴“H”。) 2.將數(shù)據(jù)段中的兩個數(shù)求和,結(jié)果保存在數(shù)據(jù)段中。源程序、機器語言程序如下:CS:0100 Al 00 00MOV AX,0000CS:0103 03 06 02 00ADD AX,0002CS;0107 A3 04 00MOV 0004,AX CS:010A CB RE

5、TF數(shù)據(jù)段內(nèi)容如下:DS:0000 2301 2500;兩個已知數(shù) 3.在Debug中編制簡單的匯編程序片斷,并調(diào)試運行,得出結(jié)果。 實驗主要步驟: 1.在DOS或Windows的命令行窗口執(zhí)行命令Debug.exe,進入Debug程序環(huán)境,熟悉Debug各個命令的用法。 2. 實驗步驟(1)用E命令鍵人上述機器語言程序和數(shù)據(jù)段的初值。E DS:000 2301 2500E DS:006 2A 2A 2A (2A為*,是為便于查看數(shù)據(jù)段內(nèi)容而設(shè)置)E CS:100 A1 00 00 03 06 02 00E CS:107 A3 04 00 CB(2)用D命令檢查數(shù)據(jù)段、代碼段內(nèi)容。D DS:0

6、D CS:100(3)用T命令逐條執(zhí)行上述程序,注意觀察每條指令執(zhí)行后相應(yīng)寄存器的變化。(4)用U命令反匯編本程序。U 100 10A(5)用R命令修改IP的內(nèi)容為0100重新執(zhí)行上述程序。R IP顯示:IP 010A:0100(6)用G命令運行程序。G =CS:0100 107觀察:IP AXG =CS:0100 10A觀察:IP AX 3自己試著寫段程序:-A 10016C6:0100 DB123456789016C6:010A CLD16C6:010B MOV SI,10016C6:010E MOV DI,20016C6:0111 MOV CX,A16C6:0114 REP MOVSB1

7、6C6:0116-G =10A 116;運行上述程序(起始地址10AH,結(jié)束地址116H)。-D 100 L A;顯示DS:100開始10個字節(jié)內(nèi)容16C6:0100 31 32 33 34 35 36 37 38-39 30 1234567890-D ES:200 L A顯示ES:100開始10個字節(jié)內(nèi)容16C6:0200 31 32 33 34 35 36 37 38-39 30 12345678904.寫出實驗報告。 實驗二、熟悉指令系統(tǒng)實驗?zāi)康模?1.熟悉8088/8086的指令書寫格式、功能。 2.能熟練運用數(shù)據(jù)傳遞、算術(shù)、邏輯三類指令。 實驗內(nèi)容: 1.用DEBUG調(diào)試程序功能編程

8、序計算(W(X×Y+Z540)X。其中X、Y、Z、W均為16位帶符號數(shù),要求上式計算結(jié)果的商存人AX寄存器中,余數(shù)存人DX寄存器。掌握算術(shù)指令的用法。 2.用DEBUG編程并查看邏輯指令的運行結(jié)果,掌握邏輯指令的用法。 3.熟悉其它幾組指令的功能和用法,并區(qū)分字、字節(jié)操作。 實驗主要步驟: 1.預先編制程序片段,實現(xiàn)(W(X×Y+Z540)X,將計算結(jié)果的商存人AX寄存器中,余數(shù)存人DX寄存器。 參考程序代碼如下:DATA SEGMENTX DW 1200HY DW 0034HZ DW 0F045HW DW 034AHDATA ENDSCODE SEGMENTASSUME

9、CS:CODE,DS:DATASTART: MOV AX,XIMUL YMOV CX,AXMOV BX,DXMOV AX,ZCWDADD CX,AXADC BX,DXSUB CX,540SBB BX,0MOV AX,WCWDSUB AX,CXSBB DX,BXIDIV XMOV AH,4CHINT 21HCODE ENDSEND START2.可以在Debug程序中使用E命令為變量X、Y、Z、W設(shè)置初值。 3.使用A命令匯編程序片段,并用G或T命令執(zhí)行,用R或D命令查看結(jié)果。 4.使用A命令匯編幾條邏輯指令,并運行,查看結(jié)果。 5.寫出實驗報告。 實驗三、建立運行匯編語言程序?qū)嶒災(zāi)康模?1.掌

10、握匯編語言程序格式及其它命令的作用。 2.掌握匯編、連接、運行匯編程序的全過程,并能檢查修改程序簡單錯誤。 實驗內(nèi)容: 1.編寫程序,比較兩個字符串STRINGl和STRING2所含的字符是否相同。若相同,則顯示'Match';否則,顯示'No match'。2.編輯、匯編、連接這個匯編語言源程序,形成.EXE文件。 3.通過DEBUG調(diào)試運行該可執(zhí)行文件,查看運行結(jié)果。 實驗主要步驟: 1.根據(jù)要求編制匯編源程序。 參考程序如下:DATA SEGMENTSTRINGl DB Move the cursor backwardSTRING2 DB Move the

11、 cursor backwardMESSl DB Match,13,10,$MESS2 DB NO Match!,13,10,$DATA ENDSPROG SEGMENTASSUME CS:PROG,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,STRINGlLEA DI,STRING2CLDMOV CX,25REPZ CMPSBJZ MATCHLEA DX,MESS2JMP SHORT DISPMATCH: LEA DX,MESSlDISP: MOV AH,091NT 21HMOV AH, 4CHINT 21HPROG EN

12、DSEND START2.使用記事本或其它字處理軟件(Edit.exe)編輯該源文件。 3.使用Masm、Link程序匯編、連接該文件,形成可執(zhí)行的.EXE文件。 參考步驟如下:(1)調(diào)用全屏幕編輯程序EDlT建立ASM文件。C>EDIT輸入實驗內(nèi)容1的源程序并以SAMPLE.ASM為文件名將文件存盤。(2)用匯編程序MASM 對源文件SAMPLE.ASM 匯編并產(chǎn)生目標文件SAMPLE.OBJ。C>MASM SAMPLE如匯編指示有錯誤,則需重新調(diào)用編輯程序修改程序中的錯誤,直至匯編通過為止。(3)用連接程序LINK產(chǎn)生執(zhí)行文件SAMPLE.EXE。C>LINK SAMPL

13、E(4)執(zhí)行程序??芍苯訌腄OS狀態(tài)執(zhí)行程序。C>SAMPLE顯示器上顯示出程序的運行結(jié)果。Match4.也可以使用Debug調(diào)試運行這個.EXE文件,并查看運行結(jié)果。對實驗內(nèi)容修改兩個字符串的內(nèi)容,使它們互不相同,再觀察程序的運行結(jié)果。5.寫出實驗報告。 實驗四、循環(huán)程序設(shè)計實驗?zāi)康模?1.加深對循環(huán)程序的理解。 2.能構(gòu)造出正確的循環(huán)結(jié)構(gòu)并能實現(xiàn)較復雜的算法。 實驗內(nèi)容: 1.編制程序,要求如下:從鍵盤接收一個四位的16進制數(shù),在終端上顯示與它等值的二進制數(shù)。 實驗主要步驟: 1.根據(jù)要求,畫出程序框圖,寫出匯編源代碼。 參考程序如下:Begin: MOV BX,0 ;用于存放四位的

14、16進制數(shù) MOV CH,4 MOV CL,4INPUT: SHL BX,CL ;將前面輸入的數(shù)左移4位 MOV AH,1 ;從鍵盤取數(shù) INT 21H CMP AL,30H ;<0嗎? JB INPUT ;不是"0F"的數(shù)重新輸入 CMP AL,39H ; 是"09"嗎? JA AF ;不是,轉(zhuǎn)"AF"的處理 AND AL,0FH ;轉(zhuǎn)換為:0000B1001B JMP BINARYAF: AND AL,1101 1111B ;轉(zhuǎn)換為大寫字母 CMP AL,41H ;又<A嗎? JB INPUT ;不是"AF&

15、quot;的數(shù)重新輸入 CMP AL,46H ;>F嗎? JA INPUT ;不是"AF"的數(shù)重新輸入 AND AL,0FH ;轉(zhuǎn)換為1010B1111B ADD AL,9BINARY: OR BL,AL ;將鍵盤輸入的數(shù)進行組合 DEC CH JNZ INPUT MOV CX,16 ;將16位二進制數(shù)一位位地轉(zhuǎn)換成ASCII碼顯示DISP: MOV DL,0 ROL BX,1 RCL DL,1 OR DL,30H MOV AH,2 ;進行顯示 INT 21H LOOP DISP STOP: RET2.上機編輯源程序,并匯編、連接、調(diào)試運行,查看結(jié)果。 3.寫出實驗報

16、告。 實驗五、分支程序設(shè)計實驗?zāi)康模?1.加深對分支程序的理解,掌握分支程序的結(jié)構(gòu)。熟悉運算類指令對標志位的狀態(tài)影響以及標志位狀態(tài)的表示方法;掌握條件轉(zhuǎn)移、無條件轉(zhuǎn)移指令的使用方法。2. 掌握分支程序設(shè)計、編寫、調(diào)試和運行的方法。 實驗內(nèi)容: 1.試編寫小程序:對鍵盤輸入的小寫字母用大寫字母顯示出來。參考程序段如下:Begin:MOV AH,1 ;從鍵盤輸入一個字符 INT 21H CMP AL,'a' ;輸入字符<'a'嗎? JB STOP CMP AL,'z' ;輸入字符>'z'嗎? JA STOP SUB AL,

17、20H ;轉(zhuǎn)換為大寫字母或AND AL,1101 1111B也可以 MOV DL,AL ;顯示一個字符 MOV AH,2 INT 21H JMP BeginSTOP: RET2.編制程序統(tǒng)計學生成績。要求如下:設(shè)有10個學生的成績分別為56、69、84、82、73、88、99、63、100和80分。試編制程序分別統(tǒng)計低于60分、6069分、7079分、8089分、9099分及100分的人數(shù)存放到s5、s6、s7、s8、s9及s10單元中。這一題目的算法很簡單,成績分等部分采用分支結(jié)構(gòu),統(tǒng)計所有成績則用循環(huán)結(jié)構(gòu)完成。 實驗主要步驟: 1.根據(jù)要求,畫出程序框圖如下圖所示,然后寫出匯編源代碼。 開

18、 始 初始化計數(shù)單元 初始化循環(huán)計數(shù)值初始化首地址取一個成績 Y<60?S5+1 NY<70?S6+1 NY<80?S7+1 S7+1 NY<90?S8+1 S8+1 NN=100?S9+1 YS10+1 修 改 地 址 N 循環(huán)結(jié)束? Y 結(jié) 束程序框圖2.上機編輯源程序,并匯編、連接、調(diào)試運行,查看結(jié)果。 參考程序如下:;PROGRAM TITLE GOES HEREresult;*datarea segment ;define data segment grade dw 56,69,84,82,73,88,99,63,100,80 s5 dw 0 s6 dw 0

19、s7 dw 0 s8 dw 0 s9 dw 0 s10 dw 0datarea ends;*prognam segment ;define code segment;-main proc far ; main part of programassume cs:prognam, ds:datareastart: ; starting execution address; set up stack for return push ds ; save old data segment sub ax,ax ; put zero in AX push ax ; save it on stack; set

20、 DS register to current data segment mov ax,datarea ; datarea segment addr mov ds,ax ; into DS register; MAIN PART OF PROGRAM GOES HERE mov s5, 0 ; initialize counter mov s6, 0 mov s7, 0 mov s8, 0 mov s9, 0 mov s10, 0 mov cx, 10 ; initialize loop count value mov bx, offset grade ; initialize first a

21、ddrcompare: mov ax, bx ; get a result cmp ax, 60 ; <60? jl five cmp ax, 70 ; <70? jl six cmp ax, 80 ; <80? jl seven cmp ax, 90 ; <90? jl eight cmp ax, 100 ; =100? jne nine inc s10 jmp short change-addr nine: inc s9 jmp short change-addr eight: inc s8 jmp short change-addr seven: inc s7 j

22、mp short change-addr six: inc s6 jmp short change-addr five: inc s5change-addr: add bx, 2 loop compare ret ; return to DOSmain endp ; end of main part of program; -prognam ends;* end start ; end assembly3.寫出實驗報告。 實驗六、子程序設(shè)計實驗?zāi)康模?1.掌握子程序設(shè)計方法,能合理劃分子程序。 2.掌握匯編子程序的定義、調(diào)用、返回、參數(shù)傳遞等有關(guān)問題的實現(xiàn),以及運行過程中的堆棧、標志位變化情況

23、。 實驗內(nèi)容: 1. 編寫子程序嵌套結(jié)構(gòu)的程序,把整數(shù)分別用二進制和八進制形式顯示出來。主程序BANDO:把整數(shù)變量VAL1存入堆棧,并調(diào)用子程序PAIRS;子程序PAIRS:從堆棧中取出VAL1,調(diào)用二進制顯示子程序OUTBIN,顯示出與其等效的二進制數(shù);輸出8個空格;調(diào)用八進制顯示子程序OUTOCT顯示與其等效的八進制數(shù);調(diào)用輸出回車及換行符子程序。 實驗主要步驟: 1.畫出程序流程圖,合理劃分子程序,正確區(qū)分主程序與各子程序的功能與關(guān)系。 2.編制主程序與子程序的源代碼。 參考程序如下:DATA SEGMENT VAL1 DW ? CRLF DW 0DH,0AH,'$'D

24、ATA ENDSCODE SEGMENT BANDO PROC FAR ;主程序BANDO ASSUME CS:CODE,DS:DATA START: PUSH DS ;設(shè)置返回DOS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX ;給DS賦值 PUSH VAL1 CALL PAIRS RET BANDO ENDP PARIS PROC NEAR ;PARIS子程序 PUSH BP MOV BP,SP PUSH BX MOV BX,BP+4 ;從堆棧中取出VAL1 CALL OUTBIN ;調(diào)用二進制顯示子程序 MOV CX,8 ;顯示8個空格 SPACE:

25、MOV DL,' ' MOV AH,2 INT 21H LOOP SPACE CALL OUTOCT ;調(diào)用八進制顯示子程序 CALL DISP_CRLF POP BX POP BP RET 2 PARIS ENDP OUTBIN PROC NEAR ;二進制顯示子程序 PUSH BX MOV CX,16 ONEBIT:ROL BX,1 MOV DX,BX AND DX,1 OR DL,30H ;轉(zhuǎn)換為ASCII碼 MOV AH,2 INT 21H LOOP ONEBIT POP BX RET OUTBIN ENDP OUTOCT PROC NEAR ;八進制顯示子程序 ROL BX,1;16位二進制數(shù)包含6位八進制數(shù),最高位僅1位 MOV DX,BX AND DX,1 OR DL,30H ;轉(zhuǎn)換為ASCII碼 MOV AH,2 INT 21H MOV CX,5 ;余下還有5位八進制數(shù) NE

溫馨提示

  • 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

提交評論