匯編實(shí)驗(yàn)報(bào)告_第1頁
匯編實(shí)驗(yàn)報(bào)告_第2頁
匯編實(shí)驗(yàn)報(bào)告_第3頁
匯編實(shí)驗(yàn)報(bào)告_第4頁
匯編實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

2、:本次實(shí)驗(yàn)的內(nèi)容均在DEBUG下完成,實(shí)現(xiàn)數(shù)據(jù)的裝入、修改、顯示;匯編語言程序段的編輯、匯編和反匯編;程序的運(yùn)行和結(jié)果檢查。三. 實(shí)驗(yàn)過程和程序1、啟動(dòng)DOS操作系統(tǒng)2、運(yùn)行DEBUG.COM程序(若當(dāng)前盤為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:0112 MOV 020A

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

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

5、中的內(nèi)容 D 200 20B9、用“T”單步操作命令對(duì)源程序單步執(zhí)行,觀察AX、BX、CS、IP寄存器內(nèi)容的變化,并與預(yù)計(jì)的結(jié)果相比較。注意:l D命令顯示內(nèi)存數(shù)據(jù),注意觀察多字節(jié)數(shù)據(jù)在內(nèi)存中的存放方式。l 指令執(zhí)行的時(shí)候,IP寄存器隨著變化,注意觀察。1、程序運(yùn)行結(jié)果:(AX)= 00ABH ,(BX)=00ABH DS:0208H四字節(jié)單元的內(nèi)容: 00AB00ABH 2、試用寄存器間接尋址方式編寫程序段,完成上述程序段的功能。(參考下列程序流程圖)SI200HDI204HBX208HAX SIDXSI+2AXAX+DIDXDX+DI+2 BX(AX)BX+2(DX)開始結(jié)束3、附加題目:

6、1. 從DS:0000H開始的5個(gè)16位帶符號(hào)數(shù)分別記為x,y,z,v,w,用E命令初始化為:540,1,-1,1080,0, 試求w=(v-(x*y+z-540)/x 2. 完成BX中1的個(gè)數(shù)的統(tǒng)計(jì)。3. 用串操作指令將DS:0000開始20個(gè)字節(jié)初始化為:0CCH。并將這20個(gè)字節(jié)的內(nèi)容復(fù)制到其后的20個(gè)字節(jié)里。cld四. 實(shí)驗(yàn)體會(huì)通過這次試驗(yàn),對(duì)于debug環(huán)境有了一個(gè)基本的了解,同時(shí)通過對(duì)指令的使用而對(duì)計(jì)算機(jī)的數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯和移位操作、串操作、控制轉(zhuǎn)移和循環(huán)等指令有了更深的理解。串操作指令是對(duì)一個(gè)一個(gè)字節(jié)進(jìn)行操作的。實(shí)驗(yàn)二 匯編語言程序設(shè)計(jì)(順序、循環(huán))一. 實(shí)驗(yàn)?zāi)康?、掌握

7、順序和循環(huán)程序結(jié)構(gòu)和設(shè)計(jì)方法;2、熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語言程序的過程。二. 實(shí)驗(yàn)內(nèi)容1、X、Y、Z、V均為字變量,在X、Y、Z、V字單元中存放是16位帶符號(hào)數(shù)。試編寫匯編語言程序完成以下功能:計(jì)算表達(dá)式值(V(X*Y+Z-720)/X;將上述表達(dá)式運(yùn)算結(jié)果整數(shù)放在SUM1單元,余數(shù)放在SUM2單元。dseg segmentx dw 2y dw 360z dw 0v dw 5sum1 dw ?sum2 dw ?dseg endscseg segment assume cs:cseg,ds:dsegstart: mov ax,dseg mov ds,ax

8、 mov ax,x mov bx,y mul bx mov bx,z add ax,bx sub ax,2d0h mov bx,v sub bx,ax mov ax,bx cbw mov bx,x div bx mov sum1,ax mov sum2,dx mov ah,4ch int 21hcseg ends end start2、求一個(gè)班50名學(xué)生成績(jī)的平均值(附加題:最大值和最小值,并將結(jié)果顯示出來)dseg segmentscore db 10 dup(80,70,60,90,90)avg db ?max db 0dh,0ah,?min db 0dh,0ah,?dseg endscs

9、eg segment assume cs:cseg,ds:dsegstart: mov ax,dseg mov ds,ax mov cx,50 mov ax,0 mov bh,0 mov bl,100 mov si,0l: add al,scoresi adc ah,0 inc si loop l mov dx,si div dl mov avg,al mov cx,50 mov si,0l1: cmp scoresi,bh jbe s1 mov bh,scoresis1: inc si loop l1 mov cx,50 mov si,0l2: cmp scoresi,bl ja s2 mo

10、v bl,scoresis2: inc si loop l2 mov al,bl mov ah,0 mov cl,10 div cl cmp al,0 jz gw1 cmp al,10 jz mf1 mov ch,ah add al,30h mov dl,al mov ah,2 int 21h add ch,30h mov dl,ch mov ah,2 int 21h jmp done1gw1: mov dl,ah add dl,30h mov ah,2 int 21h jmp done1mf1: mov dl,31h mov ah,2 int 21h mov dl,30h mov ah,2

11、int 21h mov dl,30h mov ah,2 int 21hdone1: mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h mov al,bh mov ah,0 mov cl,10 div cl cmp al,0 jz gw cmp al,10 jz mf mov ch,ah add al,30h mov dl,al mov ah,2 int 21h add ch,30h mov dl,ch mov ah,2 int 21h jmp donegw: mov dl,ah add dl,30h mov ah,2 int 21h

12、 jmp donemf: mov dl,31h mov ah,2 int 21h mov dl,30h mov ah,2 int 21h mov dl,30h mov ah,2 int 21hdone: mov ah,4ch int 21hcseg ends end start 3、從鍵盤讀入一個(gè)字符串,以Enter結(jié)束,字符串不超過50個(gè)字符,并打印該字符串(附加題:查找中間是否有asm子串。如果有,輸出Yes;否則,輸出No)。data segments1 db 51,?,51 dup('$')s3 db 0ah,0dh,'Yes$'s4 db 0ah,0d

13、h,'No$'data endsdseg segments2 db 'asm'dseg endscseg segment assume cs:cseg,ds:data,es:dsegstart: mov ax,data mov ds,ax mov ax,dseg mov es,ax lea dx,s1 mov ah,0ah int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h lea dx,s1+2 mov ah,9 int 21h mov cl,s1+1 cmp cl,3 jb notf

14、ound lea si,s1 lea di,s2 mov dx,si mov bx,di mov ah,48 cldagain: mov cx,3 repz cmpsb jz found add dx,1 mov si,dx mov di,bx dec ah jnz again jmp notfound jmp overfound: lea dx,s3 mov ah,9 int 21h jmp overnotfound: lea dx,s4 mov ah,9 int 21hover: mov ah,4ch int 21hcseg ends end start 三. 實(shí)驗(yàn)體會(huì)通這次試驗(yàn),熟悉了M

15、ASM匯編環(huán)境和匯編程序設(shè)計(jì)的格式,熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語言程序的過程。同時(shí)對(duì)順序和循環(huán)程序設(shè)計(jì)更加熟練,并在編程過程中熟悉了算術(shù)運(yùn)算、位操作和串操作等指令。算術(shù)運(yùn)算中,對(duì)于不同類型數(shù)進(jìn)行運(yùn)算時(shí),要進(jìn)行擴(kuò)展,還有不要忽視進(jìn)位;對(duì)于循環(huán)和控制轉(zhuǎn)移指令,如果有多個(gè)循環(huán)或轉(zhuǎn)移指令,則前一個(gè)循環(huán)或轉(zhuǎn)移結(jié)束后,一定到無條件轉(zhuǎn)移到結(jié)尾處;串操作指令中,源串和目的串分別定義在DS和ES兩個(gè)段中的,不能對(duì)ES進(jìn)行段超越操作等。 實(shí)驗(yàn)三 匯編語言子程序設(shè)計(jì)(分支、子程序)一. 實(shí)驗(yàn)?zāi)康?、掌握分支和子程序結(jié)構(gòu)和設(shè)計(jì)方法;2、熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8

16、086/8088匯編語言程序的過程。3、通過匯編語言了解高級(jí)語言的參數(shù)傳遞等知識(shí)。二. 實(shí)驗(yàn)內(nèi)容1、1. BL中的只有一位為1。編寫程序測(cè)試,并輸出提示信息“The X Bit is 1”,要求:地址表和轉(zhuǎn)移表。dseg segmenta db 2msg0 db 0dh, 0ah,'The 0 Bit is 1','$'msg1 db 0dh, 0ah,'The 1 Bit is 1','$'msg2 db 0dh, 0ah,'The 2 Bit is 1','$'msg3 db 0dh, 0ah,

17、'The 3 Bit is 1','$'msg4 db 0dh, 0ah,'The 4 Bit is 1','$'msg5 db 0dh, 0ah,'The 5 Bit is 1','$'msg6 db 0dh, 0ah,'The 6 Bit is 1','$'msg7 db 0dh, 0ah,'The 7 Bit is 1','$'addrtb1 dw func0,func1,func2,func3,func4,func5,func6

18、,func7dseg endscseg segment assume cs:cseg,ds:dsegstart: mov ax,dseg mov ds,ax mov cx,8 mov si,0 mov bl,a cmp bl,0 jz exitl: shr bl,1 jc l1 inc si loop l jmp exit l1: mov ax,si and ax,0fh shl ax,1 mov bx,ax jmp addrtb1bxfunc0:lea dx,msg0 jmp outputfunc1:lea dx,msg1 jmp outputfunc2:lea dx,msg2 jmp ou

19、tputfunc3:lea dx,msg3 jmp outputfunc4:lea dx,msg4 jmp outputfunc5:lea dx,msg5 jmp outputfunc6:lea dx,msg6 jmp outputfunc7:lea dx,msg7 jmp outputoutput:mov ah,9 int 21hexit: mov ah,4ch int 21hcseg ends end startdseg segmenta db 8msg0 db 0dh, 0ah,'The 0 Bit is 1','$'msg1 db 0dh, 0ah,&#

20、39;The 1 Bit is 1','$'msg2 db 0dh, 0ah,'The 2 Bit is 1','$'msg3 db 0dh, 0ah,'The 3 Bit is 1','$'msg4 db 0dh, 0ah,'The 4 Bit is 1','$'msg5 db 0dh, 0ah,'The 5 Bit is 1','$'msg6 db 0dh, 0ah,'The 6 Bit is 1','$'m

21、sg7 db 0dh, 0ah,'The 7 Bit is 1','$'dseg endscseg segment assume cs:cseg,ds:dsegstart: mov ax,dseg mov ds,ax mov cx,8 mov si,0 mov bl,a cmp bl,0 jz exitl: shr bl,1 jc l1 inc si loop l jmp exit l1: mov ax,si and ax,0fh mov bx,ax shl ax,1 add bx,ax add bx,offset jmptb1 jmp bxjmptb1: jm

22、p near ptr func0 jmp near ptr func1 jmp near ptr func2 jmp near ptr func3 jmp near ptr func4 jmp near ptr func5 jmp near ptr func6 jmp near ptr func7func0:lea dx,msg0 jmp outputfunc1:lea dx,msg1 jmp outputfunc2:lea dx,msg2 jmp outputfunc3:lea dx,msg3 jmp outputfunc4:lea dx,msg4 jmp outputfunc5:lea d

23、x,msg5 jmp outputfunc6:lea dx,msg6 jmp outputfunc7:lea dx,msg7 jmp outputoutput:mov ah,9 int 21hexit: mov ah,4ch int 21hcseg ends end start 2. 編寫一個(gè)子程序計(jì)算z=f(x,y)=x*y+x-y(x,y,z有符號(hào)數(shù)內(nèi)存數(shù))。要求通過堆棧(寄存器、內(nèi)存)傳送所有參數(shù)。dseg segmentx db 2y db 4z db ?dseg endscseg segment assume cs:cseg,ds:dsegstart: mov ax,dseg mov

24、 ds,ax call result mov ah,4ch int 21hresult proc push ax push bx mov al,x imul y mov bl,x add al,bl sub al,y mov z,al pop bx pop ax retresult endpcseg ends end start data segment x dw 123 y dw 56 z dw ?data endscode segment assume cs:code,ds:datastart:mov ax,datamov ds,axsub sp,2push xpush ycall cpo

25、p zmov ah,4chint 21h c procpush bpmov bp,sppush axpush bxpush dxmov ax,bp+6mov bx,bp+4mul bxmov dx,bp+6sub dx,bxadd ax,dxmov bp+8,ax pop dxpop bxpop axpop bpret 4 mov ah,4chint 21hcode ends end start三. 實(shí)驗(yàn)體會(huì)通過本次試驗(yàn),進(jìn)一步熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語言程序的過程,通過匯編語言了解了高級(jí)語言的參數(shù)傳遞等知識(shí),并熟悉了分支程序和子程序的設(shè)計(jì)方法,對(duì)于地址

26、表和轉(zhuǎn)移表的概念、使用及其區(qū)別更加熟悉。實(shí)驗(yàn)四 匯編語言高級(jí)編程專題一. 實(shí)驗(yàn)?zāi)康?、匯編語言宏程序設(shè)計(jì);2、 掌握中斷服務(wù)子程序的編寫。3、 匯編語言與高級(jí)語言的混編。二. 實(shí)驗(yàn)內(nèi)容1、編寫一個(gè)宏,求三個(gè)數(shù)的最小數(shù),原型為:MIN3 x,y,z,minshift macro x,y,zmov ax,xcmp ax,yjl donemov ax,ydone: cmp ax,zjl exitmov ax,zexit: mov ax,axendmcode segment assume cs:codestart: shift 4,2,3 mov ah, 4ch int 21hcode ends en

27、d start2、掛接1CH中斷,正計(jì)時(shí)60秒后退出。要求屏幕顯示0-59的秒數(shù)。INTNO EQU 1CH USEINT = 1 DATA SEGMENT OLDISR DW ?,? TIMER DB 100 COUNTER DW 0 ISDONE DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,0 MOV ES,AX IF USEINT MOV AL, INTNO MOV AH,35H INT 21H MOV OLDISR0, BX MOV AX,ES MOV OLDISR2, AX ELSE CLI MOV AX, ES:INTNO*4 MOV OLDISR0,AX MOV AX,ES:INTNO*4+2 MOV OLDISR2, AX STI EN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論