合肥工業(yè)大學(xué)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告(共23頁(yè))_第1頁(yè)
合肥工業(yè)大學(xué)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告(共23頁(yè))_第2頁(yè)
合肥工業(yè)大學(xué)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告(共23頁(yè))_第3頁(yè)
合肥工業(yè)大學(xué)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告(共23頁(yè))_第4頁(yè)
合肥工業(yè)大學(xué)匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告(共23頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院實(shí)驗(yàn)報(bào)告課 程:匯編語(yǔ)言程序設(shè)計(jì)專業(yè)班級(jí):學(xué) 號(hào):姓 名: 實(shí)驗(yàn)一 Debug程序的使用一. 實(shí)驗(yàn)?zāi)康?、熟悉DEBUG程序中的命令,學(xué)會(huì)在DEBUG下調(diào)試運(yùn)行匯編語(yǔ)言源程序。2、掌握8086/8088的尋址方式及多字節(jié)數(shù)據(jù)的處理方法。二. 實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容:1、利用DEBUG程序中的“E”命令,將兩個(gè)多字節(jié)數(shù)“H”和“FEDCBA98H”分別送入起始地址為DS:0200H和DS:0204H兩個(gè)單元中。2、分別用直接尋址方式和寄存器間接尋址方式編寫(xiě)程序段,實(shí)現(xiàn)將DS:0200H單元和DS:0204H單元中的數(shù)據(jù)相加,并將運(yùn)算結(jié)果存放在DS:

2、0208H單元中。實(shí)驗(yàn)要求:本次實(shí)驗(yàn)的內(nèi)容均在DEBUG下完成,實(shí)現(xiàn)數(shù)據(jù)的裝入、修改、顯示;匯編語(yǔ)言程序段的編輯、匯編和反匯編;程序的運(yùn)行和結(jié)果檢查。三. 實(shí)驗(yàn)過(guò)程和程序1、啟動(dòng)DOS操作系統(tǒng)2、運(yùn)行DEBUG.COM程序(若當(dāng)前盤(pán)為C) C:DEBUG ;(“”為DEBUG提示符,僅當(dāng)屏幕出現(xiàn)該提示符后,才可輸入DEBUG命令)3、用“A”命令編輯和匯編源程序 A 186E:0100 MOV AX,0200 186E:0103 MOV BX,0202 186E:0107 ADD AX,0204 186E:010B ADC BX,0206 186E:010F MOV 0208,AX 186E:

3、0112 MOV 020A,BX 186E:0116 4、用“U”命令反匯編驗(yàn)證源程序 U CS:0100 186E:0100 A10002 MOV AX,0200 186E:0103 8B1E0202 MOV BX,0202 186E:0107 ADD AX,0204 186E:010B 131E0602 ADC BX,0206 186E:010F A30802 MOV 0208,AX 186E:0112 891E0A02 MOV 020A,BX 186E:0116 注意: 1)檢查源程序是否有錯(cuò)誤,若有則返回到第3步用“A 地址”命令進(jìn)行修改,直到程序無(wú)錯(cuò)誤。 2)DEBUG約定在其命令或

4、源程序中所涉及到的數(shù)據(jù)均被看作十六進(jìn)制數(shù),其后不用“H”說(shuō)明。 3)在DEBUG下,源程序中不能使用“標(biāo)號(hào)”、“變量”和一些偽指令。 4)在DEBUG下,大小寫(xiě)不敏感。5、程序未執(zhí)行前,用“R”命令觀察,相關(guān)寄存器的內(nèi)容。R如:(AX)= 0000H,(BX)= 0000H,(SI)= 0000H, (DI)= 0000H,(CS)= 13F5H,(IP)= 0100H。6、在程序未執(zhí)行前,用“D”命令觀察DS:0200H,DS:0204H、DS:0208H單元的內(nèi)容 D 200 20B 7、用“G”命令運(yùn)行源程序 G =100 0116 8、再用“D”命令觀察DS:0200HDS:020BH

5、字節(jié)單元中的內(nèi)容 D 200 20B 9、用“T”單步操作命令對(duì)源程序單步執(zhí)行,觀察AX、BX、CS、IP寄器內(nèi)容的變化,并與預(yù)計(jì)的結(jié)果相比較。 注意:D命令顯示內(nèi)存數(shù)據(jù),注意觀察多字節(jié)數(shù)據(jù)在內(nèi)存中的存放方式。指令執(zhí)行的時(shí)。程序運(yùn)行結(jié)果:(AX)= 1110H ,(BX)= 1111H DS:0208H四字節(jié)單元的內(nèi)容: H 四. 實(shí)驗(yàn)結(jié)果(包括必要的截圖)五. 實(shí)驗(yàn)體會(huì) 通過(guò)這次實(shí)驗(yàn)的練習(xí),我熟悉了在DEBUG的環(huán)境下,匯編程序中的命令,并且學(xué)會(huì)調(diào)試運(yùn)行匯編語(yǔ)言源程序,掌握8086/8088的尋址方式及多字節(jié)數(shù)據(jù)的處理方法。雖然自己動(dòng)手實(shí)現(xiàn)了簡(jiǎn)單的計(jì)算的中間出現(xiàn)了很多錯(cuò)誤,但是在查閱書(shū)本以及

6、在老師和同學(xué)的幫助下完成了實(shí)驗(yàn)任務(wù)。實(shí)驗(yàn)二 匯編語(yǔ)言程序設(shè)計(jì)(順序、循環(huán))一. 實(shí)驗(yàn)?zāi)康?、掌握順序和循環(huán)程序結(jié)構(gòu)和設(shè)計(jì)方法;2、熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語(yǔ)言程序的過(guò)程。二. 實(shí)驗(yàn)內(nèi)容1、X、Y、Z、V均為字變量,在X、Y、Z、V字單元中存放是16位帶符號(hào)數(shù)。試編寫(xiě)匯編語(yǔ)言程序完成以下功能:計(jì)算表達(dá)式值(V(X*Y+Z-720)/X;將上述表達(dá)式運(yùn)算結(jié)果整數(shù)放在SUM1單元,余數(shù)放在SUM2單元。2、求一個(gè)班50名學(xué)生成績(jī)的平均值(附加題:最大值和最小值,并將結(jié)果顯示出來(lái))3、從鍵盤(pán)讀入一個(gè)字符串,以Enter結(jié)束,字符串不超過(guò)50個(gè)字符,并打印該字符串

7、(附加題:查找中間是否有asm子串。如果有,輸出Yes;否則,輸出No)。三. 實(shí)驗(yàn)過(guò)程和程序1)data segment x dw 1 y dw 0 z dw 0 v dw 0 sum1 dw ? sum2 dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,x imul y mov cx,ax mov bx,dx mov ax,z cwd add cx,ax adc bx,dx sub cx,720 sbb bx,0 mov ax,v cwd sub ax,cx sbb dx

8、,bx idiv x mov sum1,ax mov sum2,dx mov ax,4c00hint 21hcode ends end start2data segment grade dw 98,98,96,95,94,93,87,86,85,97,86 data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax xor ax,ax mov cx,11 mov bx,offset grade loop1: add ax,bx inc bx inc bx loop loop1 mov cx,11 idiv c

9、x mov bx,ax mov ax,4c00h int 21h Code ends end start3)DATA SEGMENTBUF DB 50, ?, 50 DUP(24H)CHAR  DB 0AH,0DH,"$"DATA ENDSCODES SEGMENT    ASSUME CS:CODES,DS:DATASTART:    MOV AX,DATA

10、0;   MOV DS,AX       MOV AH,10    LEA DX,BUF    INT 21H    LEA DX,CHAR    MOV AH,9    INT 21H   

11、0;   LEA DX,BUF+2    MOV AH,9    INT 21H       MOV AH,4CH    INT 21H4. 實(shí)驗(yàn)結(jié)果(包括必要的截圖)5. 實(shí)驗(yàn)體會(huì) 通過(guò)這次實(shí)驗(yàn)的練習(xí),我掌握了順序和循環(huán)程序結(jié)構(gòu)和設(shè)計(jì)方法,并且可以自己動(dòng)手在debug下運(yùn)用順序和循環(huán)的程序結(jié)構(gòu)自己設(shè)計(jì)匯編的代碼,另外這節(jié)課我還

12、學(xué)會(huì)了在在屏幕上輸入和輸出字符串,非常的有趣,順便我又熟悉了一遍在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語(yǔ)言程序的過(guò)程,感覺(jué)收獲頗豐。挺高了自己對(duì)于學(xué)習(xí)匯編的興趣。實(shí)驗(yàn)三 匯編語(yǔ)言子程序設(shè)計(jì)(分支、子程序)一. 實(shí)驗(yàn)?zāi)康?、掌握分支和子程序結(jié)構(gòu)和設(shè)計(jì)方法;2、熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語(yǔ)言程序的過(guò)程。3、通過(guò)匯編語(yǔ)言了解高級(jí)語(yǔ)言的參數(shù)傳遞等知識(shí)。二. 實(shí)驗(yàn)內(nèi)容1、1. BL中的只有一位為1。編寫(xiě)程序測(cè)試,并輸出提示信息“The X Bit is 1”,要求:地址表和轉(zhuǎn)移表。2. 編寫(xiě)一個(gè)子程序計(jì)算z=f(x,y)=x*y+x-y(x,y

13、,z有符號(hào)數(shù)內(nèi)存數(shù))。要求通過(guò)堆棧(寄存器、內(nèi)存)傳送所有參數(shù)。3. 實(shí)踐CàAsm的轉(zhuǎn)換過(guò)程。三. 實(shí)驗(yàn)過(guò)程和程序1.;實(shí)驗(yàn)三 第一題DATA SEGMENT;定義提示信息msg,msgi分別代表第i字節(jié)出為1msg1 db'the 1 bit is 1',0dh,0ah,'$'msg2 db'the 2 bit is 1',0dh,0ah,'$'msg3 db'the 3 bit is 1',0dh,0ah,'$'msg4 db'the 4 bit is 1',0dh,

14、0ah,'$'msg5 db'the 5 bit is 1',0dh,0ah,'$'msg6 db'the 6 bit is 1',0dh,0ah,'$'msg7 db'the 7 bit is 1',0dh,0ah,'$'msg8 db'the 8 bit is 1',0dh,0ah,'$'DATA ENDSSTACKS SEGMENT ;未定義棧內(nèi)容STACKSENDSCODES SEGMENT ASSUME CS:CODES,DS:DATA,SS

15、:STACKSSTART: MOV AX,DATA MOV DS,AX ;程序代碼部分 xor bx,bx;用異或?qū)x,dx部分清零 xor dx,dx mov bl,08h;將b賦值給bl mov cx,8;利用loop進(jìn)行8次循環(huán)Lp1: shr bl,1;將bl進(jìn)行邏輯右移一次 jc next;判斷CF中數(shù)據(jù)是否為1,若是跳轉(zhuǎn)到next處 add dx,3;dx加3 loop Lp1next: mov ah,09h lea si,table;將轉(zhuǎn)移表的地址傳入到si中 add si,dx;得到轉(zhuǎn)移表的CF為1的地方j(luò)mp sitable:;同一個(gè)代碼段內(nèi)使用near跳轉(zhuǎn) jmp nea

16、r ptr l1 jmp near ptr l2 jmp near ptr l3 jmp near ptr l4 jmp near ptr l5 jmp near ptr l6 jmp near ptr l7 jmp near ptr l8 ;Li: 將msgi的地址傳入到dx中,并跳轉(zhuǎn)到done處l1:lea dx,msg1 jmp done l2:lea dx,msg2 jmp donel3:lea dx,msg3 jmp donel4:lea dx,msg4 jmp donel5:lea dx,msg5 jmp donel6:lea dx,msg6 jmp donel7:lea dx,m

17、sg7 jmp donel8:lea dx,msg8 jmp done ;返回匯編窗口done: int 21h MOV AH,4CHINT 21H;代碼部分結(jié)束CODESENDS END START2.DATASSEGMENTx dw 6y dw 8 DATAS ENDSSTACKS SEGMENT ;未定義棧部分STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX ;主程序部分 mov ax,x;分別將x,y壓棧 push ax mov ax,y push ax ca

18、ll f;調(diào)用子程序f(x,y) add sp,4 pop ax pop ax;子程序調(diào)用結(jié)束,彈棧 MOV AH,4CH INT 21H ;子程序部分fproc push bp mov bp,sp push ax push dx push bx mov bx,bp+4;bx=y mov ax,bp+6;ax=x imul bx;x*y add ax,bp+6;x*y+x adc dx,0 sub ax,bp+4;x*y+x-y sbb dx,0 pop bx pop dx pop ax retf endp CODESENDS END START四. 實(shí)驗(yàn)結(jié)果(包括必要的截圖)五. 實(shí)驗(yàn)體會(huì)

19、通過(guò)這次實(shí)驗(yàn)的練習(xí),我掌握分支和子程序結(jié)構(gòu)和設(shè)計(jì)方法,特別是地址表和轉(zhuǎn)移表的運(yùn)用,已經(jīng)可以熟練的運(yùn)用轉(zhuǎn)移表和地址表進(jìn)行分支結(jié)構(gòu)的設(shè)計(jì),實(shí)驗(yàn)二又讓我對(duì)子程序參數(shù)的調(diào)用有了深刻的體會(huì),知道了在運(yùn)用堆棧進(jìn)行參數(shù)傳遞時(shí)需要注意的要點(diǎn),另外這次實(shí)驗(yàn)又讓我再一次熟悉一遍在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語(yǔ)言程序的過(guò)程。實(shí)驗(yàn)四 匯編語(yǔ)言高級(jí)編程專題一. 實(shí)驗(yàn)?zāi)康?、匯編語(yǔ)言宏程序設(shè)計(jì);2、 掌握中斷服務(wù)子程序的編寫(xiě)。3、 匯編語(yǔ)言與高級(jí)語(yǔ)言的混編。二. 實(shí)驗(yàn)內(nèi)容1、編寫(xiě)一個(gè)宏,求三個(gè)數(shù)的最小數(shù),原型為:MIN3 x,y,z,min2、掛接1CH中斷,正計(jì)時(shí)60秒后退出。要求屏幕顯示

20、0-59的秒數(shù)。3、VC+中編寫(xiě)內(nèi)聯(lián)匯編,將字節(jié)數(shù)組的每個(gè)元素高低四位互換。 char dbyte = 0x34,0x45,0x56,0x67,0xaf;三. 實(shí)驗(yàn)過(guò)程和程序1;宏 min3min3macro x,y,zmov al,xmov bl,ymov cl,zcmp al,bl;比較al,bljae j1 ;bl<aljmp j2;否則al<blj1:cmp bl,cl;比較bl,cljae j3;cl<bljmpj5;否則bl<clj2:cmp al,cl;比較al,cljae j3;cl<aljmp j4;否則al<clj3:mov ah,02h

21、;min clmov dl,clor dl,30hint 21hjmp done j4:mov ah,02h;min almov dl,alor dl,30hint 21hjmp donej5:mov ah,02h;min blmov dl,blor dl,30hint 21hjmp donedone:mov ah,4chint 21hendmDATAS SEGMENT ;未定義數(shù)據(jù)段數(shù)據(jù)DATAS ENDSSTACKS SEGMENT ;未定義棧段數(shù)據(jù)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV A

22、X,DATAS MOV DS,AX min3 2,1,6;找出2 1 6三數(shù)中最小數(shù) MOV AH,4CH INT 21HCODES ENDSEND START2.DATA SEGMENT OLDISR DW ?,? TIMER DB 100 COUNTER DW 0 ISDONE DB 0 DATA ENDSSTACKS SEGMENT ;未定義STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATA,SS:STACKSSTART: MOV AX,DATA MOV DS,AX xor ax,ax MOV ES,AX xor cx,cx MOV AX,

23、ES:1ch*4 MOV OLDISR0,AX MOV AX,ES:1ch*4+2 MOV OLDISR2, AX MOV WORD PTR ES:1ch*4, OFFSET ISR MOV WORD PTR ES:1ch*4+2,SEG ISRWAITHERE: CMP ISDONE,1 JNZ WAITHERE EXIT: MOV AX,OLDISR0 MOV ES:1ch*4,AX MOV AX,OLDISR2 MOV ES:1ch*4+2,AX MOV AX,4C00H INT 21H ISR PROC FAR PUSH DX PUSH AX MOV AX,DATA MOV DS,AX STI INC TIMERAGAIN:mov ah,0bhint

溫馨提示

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

評(píng)論

0/150

提交評(píng)論