版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)告課 程:匯編語(yǔ)言程序設(shè)計(jì)專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)13-1班學(xué) 號(hào):2013211625姓 名:樊?huà)?實(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)容1、利用DEBUG程序中的“E”命令,將兩個(gè)多字節(jié)數(shù)“003F1AE7H”和“006BE5C4H”分別送入起始地址為DS:0200H和DS:0204H兩個(gè)單元中。2、分別用直接尋址方式和寄存器間接尋址方式編寫(xiě)程序段,實(shí)現(xiàn)將DS:0200H單元和DS:0204H單元中的數(shù)據(jù)
2、相加,并將運(yùn)算結(jié)果存放在DS:0208H單元中。要求:本次實(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)前盤為C) C:DEBUG ;(“”為DEBUG提示符,僅當(dāng)屏幕出現(xiàn)該提示符后,才可輸入DEBUG命令)4、用“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
3、0208,AX 186E:0112 MOV 020A,BX 186E:0116 5、用“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 6、程序未執(zhí)行前,用“R”命令觀察,相關(guān)寄存器的內(nèi)容。R如:(AX)= 0000H
4、 ,(BX)= 0000H ,(SI)= 0000H, (DI)= 0000H ,(CS)= 0B32H ,(IP)= 0100H 。7、在程序未執(zhí)行前,用“D”命令觀察DS:0200H,DS:0204H、DS:0208H單元的內(nèi)容 D 200 20B 8、用“G”命令運(yùn)行源程序 G =100 0116 9、再用“D”命令觀察DS:0200HDS:020BH字節(jié)單元中的內(nèi)容 D 200 20B10、用“T”單步操作命令對(duì)源程序單步執(zhí)行,觀察AX、BX、CS、IP寄存器內(nèi)容的變化,并與預(yù)計(jì)的結(jié)果相比較。(六)實(shí)驗(yàn)結(jié)果分析1、程序運(yùn)行結(jié)果:(AX)=1110H,(BX)= 1111H DS:020
5、8H四字節(jié)單元的內(nèi)容: 11111110H 2、 試用寄存器間接尋址方式編寫(xiě)程序段,完成上述程序段的功能。(參考下列程序流程圖SI200HDI204HBX208HAX SIDXSI+2AXAX+DIDXDX+DI+2 BX(AX)BX+2(DX)開(kāi)始結(jié)束MOV SI,0200MOV DI,0204MOV BX,0208MOV AX,SIMOV DX,SI+2ADD AX,DIADC DX,DI+2MOV BX,AXMOV BX+2,DX3、附加題目:1. 從DS:0000H開(kāi)始的5個(gè)16位帶符號(hào)數(shù)分別記為x,y,z,v,w,用E命令初始化為:540,1,-1,1080,0, 試求w=(v-(x
6、*y+z-540)/xMOV AX,0000MOV BX,0002IMUL BXMOV CX,AXMOV BX,DXMOV AX,0004CWDADD CX, AXADC BX,DXSUB CX,0000SBB BX,0008MOV AX,0006CWDSUB AX,CX SBB DX,BXMOV BX,0000IDIV BX2. 完成BX中1的個(gè)數(shù)的統(tǒng)計(jì)。E DS:0000 1C 02 01 00 FF FF 38 04 00 00MOV AH,00MOV CX,0016MOV BX,FSHL BX,1ADC AH,00LOOP 四. 實(shí)驗(yàn)結(jié)果(包括必要的截圖)一二三四五. 實(shí)驗(yàn)體會(huì)通過(guò)此次
7、實(shí)驗(yàn)我基本對(duì)debug環(huán)境有了初步了解,對(duì)于debug環(huán)境下的各個(gè)指令u,g,d,a,t等指令有了一定了解,基本掌握了它們的用法,對(duì)于匯編下的內(nèi)存存儲(chǔ)數(shù)據(jù)的方式也有了一定的了解。同時(shí)對(duì)于匯編里的mov ,add等指令有了更深的了解。實(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ù)放在
8、SUM1單元,余數(shù)放在SUM2單元。2、求一個(gè)班50名學(xué)生成績(jī)的平均值(附加題:最大值和最小值,并將結(jié)果顯示出來(lái))3、從鍵盤讀入一個(gè)字符串,以Enter結(jié)束,字符串不超過(guò)50個(gè)字符,并打印該字符串(附加題:查找中間是否有asm子串。如果有,輸出Yes;否則,輸出No)。三. 實(shí)驗(yàn)過(guò)程和程序1.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 mov ax,x mov bx,y imul b
9、x mov bx,z add ax,bx sub ax,2d0h mov bx,v sub bx,ax mov ax,bx cbw mov bx,x idiv bx mov sum1,ax mov sum2,dx mov ah,4ch int 21hcseg ends end start2.dseg segmentscore db 10 dup(80,70,60,90,90)avg db ?max db 0dh,0ah,?min db 0dh,0ah,?dseg endscseg segment assume cs:cseg,ds:dsegstart: mov ax,dseg mov ds,a
10、x mov cx,50 mov ax,0 mov bh,0 mov bl,100 mov si,0l: add al,scoresi adc ah,0 ;帶進(jìn)位把成績(jī)加起來(lái) inc si loop l ;cx遞減為0終止循環(huán) mov dx,si div dl mov avg,al;得出平均值 mov cx,50 mov si,0 ;將成績(jī)一一相比得出最大值放進(jìn)bh 先與0l1: cmp scoresi,bh jbe s1 mov bh,scoresis1: inc si loop l1 ;將成績(jī)一一相比得出最小值放進(jìn)bl 先與100 mov cx,50 mov si,0l2: cmp scor
11、esi,bl ja s2 mov bl,scoresis2: inc si loop l2 ;輸出結(jié)果 mov al,bl mov ah,0 mov cl,10 div cl cmp al,0;判斷最小值是否為一位數(shù) jz gw1 cmp al,10;判斷最小值是否為三位數(shù) jz mf1 ;當(dāng)最小值為兩位數(shù)時(shí)輸出 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
12、done1mf1: mov dl,31h mov ah,2 int 21h mov dl,30h mov ah,2 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 ;判斷最大值是否為一位數(shù) cmp al,0 jz gw ;判斷最大值是否為三位數(shù) cmp al,10 jz mf ;當(dāng)最大值為兩位數(shù)時(shí)輸出 mov ch,ah add al,30h mov dl,
13、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 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 21h cseg ends end start3.data segments1 db 51,?,51 dup('$')s3 db 0ah
14、,0dh,'Yes$'s4 db 0ah,0dh,'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;輸入一個(gè)字符串,緩沖區(qū)地址為ds:dx int 21h mov dl,0dh mov ah,2;輸出dl表示的ascii碼的字符回車 int 21h mov dl,0ah mov
15、ah,2;輸出dl表示的ascii碼的字符換行 int 21h lea dx,s1+2 mov ah,9;輸出一個(gè)字符串,字符串地址為ds:dx即輸出所輸入的字符串 int 21h mov cl,s1+1 cmp cl,3 jb notfound;如果字符串大小小于3則肯定沒(méi)有 lea si,s1 lea di,s2 mov dx,si mov bx,di mov ah,48;控制循環(huán)判斷整個(gè)字符串 cldagain: mov cx,3; repz cmpsb;repz執(zhí)行一次cx減一,當(dāng)cx不為0時(shí),如果ds:si和es:di指示內(nèi)容相等,則繼續(xù)比較 jz found add dx,1;后移
16、一個(gè)字符判斷是否有asm mov si,dx mov di,bx dec ah jnz again jmp notfound jmp overfound: lea dx,s3 mov ah,9;輸出一個(gè)字符串,字符串地址為ds:dx即輸出yes int 21h jmp overnotfound: lea dx,s4 mov ah,9;輸出一個(gè)字符串,字符串地址為ds:dx即輸出no int 21hover: mov ah,4ch int 21hcseg ends end start四. 實(shí)驗(yàn)結(jié)果(包括必要的截圖)1.2.3.五. 實(shí)驗(yàn)體會(huì)通過(guò)此次實(shí)驗(yàn)基本了掌握順序和循環(huán)程序結(jié)構(gòu)和設(shè)計(jì)方法,更加
17、熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語(yǔ)言程序的過(guò)程,對(duì)于匯編指令如數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令、位操作指令控制轉(zhuǎn)移指令也更加熟悉,基本掌握了這些指令的用法以及這些指令在運(yùn)行后會(huì)分別對(duì)內(nèi)存cpu產(chǎn)生什么變化也有了進(jìn)一步的了解。實(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)移表
18、。2. 編寫(xiě)一個(gè)子程序計(jì)算z=f(x,y)=x*y+x-y(x,y,z有符號(hào)數(shù)內(nèi)存數(shù))。要求通過(guò)堆棧(寄存器、內(nèi)存)傳送所有參數(shù)。3. 實(shí)踐CàAsm的轉(zhuǎn)換過(guò)程。三. 實(shí)驗(yàn)過(guò)程和程序1.data segment;地址表a db 4addrtable dw a0,a1,a2,a3,a4,a5,a6,a7s8 db 'The 1 Bit is 1','$'s7 db 'The 2 Bit is 1','$'s6 db 'The 3 Bit is 1','$'s5 db 'The 4 B
19、it is 1','$'s4 db 'The 5 Bit is 1','$'s3 db 'The 6 Bit is 1','$'s2 db 'The 7 Bit is 1','$'s1 db 'The 8 Bit is 1','$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cx,8mov si,0mov bl,acmp bl,0jz exit
20、l:shl bl,1jc l1inc siloop ljmp exitl1:mov ax,siand ax,0fh shl ax,1mov bx,axjmp addrtablebxa0:lea dx,s1jmp outputa1:lea dx,s2jmp outputa2:lea dx,s3jmp outputa3:lea dx,s4jmp outputa4:lea dx,s5jmp outputa5:lea dx,s6jmp outputa6:lea dx,s7jmp outputa7:lea dx,s8jmp outputoutput:mov ah,9 int 21hexit: mov a
21、h,4ch int 21hcode ends end startdata segment;轉(zhuǎn)移表a db 4;addrtable dw a0,a1,a2,a3,a4,a5,a6,a7s8 db 'The 1 Bit is 1','$'s7 db 'The 2 Bit is 1','$'s6 db 'The 3 Bit is 1','$'s5 db 'The 4 Bit is 1','$'s4 db 'The 5 Bit is 1','$'
22、;s3 db 'The 6 Bit is 1','$'s2 db 'The 7 Bit is 1','$'s1 db 'The 8 Bit is 1','$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov cx,8mov si,0mov bl,acmp bl,0jz exitl:shl bl,1jc l1inc siloop ljmp exitl1:mov ax,siand ax,0fh shl ax,
23、1 add bl,al mov bh,0;mov bx,axlea si,jmptableadd si,bxjmp sia0:lea dx,s1jmp outputa1:lea dx,s2jmp outputa2:lea dx,s3jmp outputa3:lea dx,s4jmp outputa4:lea dx,s5jmp outputa5:lea dx,s6jmp outputa6:lea dx,s7jmp outputa7:lea dx,s8jmp outputjmptable:jmp near ptr a0jmp near ptr a1jmp near ptr a2jmp near p
24、tr a3jmp near ptr a4jmp near ptr a5jmp near ptr a6jmp near ptr a7output:mov ah,9 int 21hexit: mov ah,4ch int 21hcode ends end start2.data segment;寄存器 x dw 100 y dw 2 z dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,x mov bx,y call function mov z,ax mov ah,4ch int
25、 21hfunction proc ;計(jì)算x*y+x-y mov cx,ax imul bx sub cx,bx add ax,cx ret 4 code ends end startdata segment;變量 x dw 100 y dw 2 z dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax call function mov ah,4ch int 21hfunction proc ;計(jì)算x*y+x-y push ax push bx push cx mov ax,x mov cx,
26、ax mov bx,y imul bx sub cx,bx add ax,cx mov z,ax pop cx pop bx pop ax ret 4 code ends end startdata segment;堆棧 x dw 100 y dw 2 z dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax sub sp,2吃 push x push y call function pop z mov ah,4ch int 21hfunction proc push bp mov bp,sp
27、push ax push bx push dx ;計(jì)算x*y+x-y mov ax,bp+6 mov bx,bp+4 imul bx mov dx,bp+6 sub dx,bx add ax,dx mov bp+8,ax pop dx pop bx pop ax pop bp ret 4 code ends end start四. 實(shí)驗(yàn)結(jié)果(包括必要的截圖)1.2.五. 實(shí)驗(yàn)體會(huì)通過(guò)此次實(shí)驗(yàn)基本掌握分支和子程序結(jié)構(gòu)和設(shè)計(jì)方法更加熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運(yùn)行8086/8088匯編語(yǔ)言程序的過(guò)程,對(duì)于通過(guò)匯編語(yǔ)言了解高級(jí)語(yǔ)言的參數(shù)傳遞等知識(shí)也有了初步的了解,對(duì)于地址表和轉(zhuǎn)移表在內(nèi)存里
28、的表現(xiàn)方式也有了一定了解,對(duì)于利用堆棧,內(nèi)存和變量傳遞參數(shù)的方式也有了更深層次的理解,基本對(duì)于利用匯編編程有了基本的掌握。實(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秒后退出。要求屏幕顯示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.min macro x,y,zmo
29、v ax,xmov bx,ycmp ax,bxjl nextmov ax,z cmp bx,axjl exitmov cx,axnext: mov cx,ax mov ax,z cmp cx,ax jl exitexit: mov cx,bxendmcode segment assume cs:codestart: min 4,2,3 mov ah,4ch int 21hcode ends end start2. INTNO EQU 1CH ;USEINT = 1 DATA SEGMENT OLDISR DW ?,? TIMER DB 100 COUNTER DW 0 count dw 59 ISDONE DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,0 MOV ES,AX ;PROTECT CLI MOV AX, ES:INTNO*4 MOV OLDISR0,AX MOV AX,ES:INTNO*4+2 MOV OLDISR2, AX STI ;SET NEW ISR CLI MOV WORD PTR ES:INTNO*4, OFFSET
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2177-2024防雷元件測(cè)試儀校準(zhǔn)規(guī)范
- 2024年度年福建省高校教師資格證之高等教育學(xué)自測(cè)模擬預(yù)測(cè)題庫(kù)
- 2024年度山西省高校教師資格證之高等教育心理學(xué)題庫(kù)練習(xí)試卷B卷附答案
- 2024年橡膠、橡塑制品項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年一氧化二氮項(xiàng)目資金籌措計(jì)劃書(shū)代可行性研究報(bào)告
- 版權(quán)授權(quán)合同6篇
- 電動(dòng)汽車集中充換電設(shè)施規(guī)劃和優(yōu)化運(yùn)行研究綜述
- 2024年度成品買賣協(xié)議范本
- 2024年產(chǎn)品銷售代理化協(xié)議模板
- 2024年理想婚慶場(chǎng)地租賃協(xié)議模板
- 涵洞沉降壓漿處理方案
- 開(kāi)關(guān)電源變壓器鐵芯磁滯回線測(cè)量
- 配電箱使用說(shuō)明書(shū)
- 召開(kāi)聽(tīng)證會(huì)程序流程
- 中建路橋集團(tuán)有限公司分包分供結(jié)算管理辦法
- 風(fēng)電場(chǎng)項(xiàng)目質(zhì)量目標(biāo)及保證措施
- 輪扣架支模體系材料量計(jì)算
- 《短視頻拍攝腳本模板資料》視頻抖音拍攝腳本劇本分鏡表
- 玻璃纖維行業(yè)準(zhǔn)入條件(2021年修訂)
- 馬鈴薯種植技術(shù).ppt
- CRRT的原理PPT參考課件
評(píng)論
0/150
提交評(píng)論