




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、合肥工業(yè)大學計算機與信息學院實驗報告課 程:匯編語言程序設計專業(yè)班級:計算機科學與技術13-1班學 號:2013211625姓 名:樊嬌 實驗一 Debug程序的使用一. 實驗目的1、熟悉DEBUG程序中的命令,學會在DEBUG下調試運行匯編語言源程序。2、掌握8086/8088的尋址方式及多字節(jié)數據的處理方法。二. 實驗內容1、利用DEBUG程序中的“E”命令,將兩個多字節(jié)數“003F1AE7H”和“006BE5C4H”分別送入起始地址為DS:0200H和DS:0204H兩個單元中。2、分別用直接尋址方式和寄存器間接尋址方式編寫程序段,實現將DS:0200H單元和DS:0204H單元中的數據
2、相加,并將運算結果存放在DS:0208H單元中。要求:本次實驗的內容均在DEBUG下完成,實現數據的裝入、修改、顯示;匯編語言程序段的編輯、匯編和反匯編;程序的運行和結果檢查。三. 實驗過程和程序1、啟動DOS操作系統(tǒng)2、運行DEBUG.COM程序(若當前盤為C) C:DEBUG ;(“”為DEBUG提示符,僅當屏幕出現該提示符后,才可輸入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”命令反匯編驗證源程序 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”命令觀察,相關寄存器的內容。R如:(AX)= 0000H
4、 ,(BX)= 0000H ,(SI)= 0000H, (DI)= 0000H ,(CS)= 0B32H ,(IP)= 0100H 。7、在程序未執(zhí)行前,用“D”命令觀察DS:0200H,DS:0204H、DS:0208H單元的內容 D 200 20B 8、用“G”命令運行源程序 G =100 0116 9、再用“D”命令觀察DS:0200HDS:020BH字節(jié)單元中的內容 D 200 20B10、用“T”單步操作命令對源程序單步執(zhí)行,觀察AX、BX、CS、IP寄存器內容的變化,并與預計的結果相比較。(六)實驗結果分析1、程序運行結果:(AX)=1110H,(BX)= 1111H DS:020
5、8H四字節(jié)單元的內容: 11111110H 2、 試用寄存器間接尋址方式編寫程序段,完成上述程序段的功能。(參考下列程序流程圖SI200HDI204HBX208HAX SIDXSI+2AXAX+DIDXDX+DI+2 BX(AX)BX+2(DX)開始結束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開始的5個16位帶符號數分別記為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的個數的統(tǒng)計。E DS:0000 1C 02 01 00 FF FF 38 04 00 00MOV AH,00MOV CX,0016MOV BX,FSHL BX,1ADC AH,00LOOP 四. 實驗結果(包括必要的截圖)一二三四五. 實驗體會通過此次
7、實驗我基本對debug環(huán)境有了初步了解,對于debug環(huán)境下的各個指令u,g,d,a,t等指令有了一定了解,基本掌握了它們的用法,對于匯編下的內存存儲數據的方式也有了一定的了解。同時對于匯編里的mov ,add等指令有了更深的了解。實驗二 匯編語言程序設計(順序、循環(huán))一. 實驗目的1、掌握順序和循環(huán)程序結構和設計方法;2、熟悉在PC機上建立、匯編、連接、調試和運行8086/8088匯編語言程序的過程。二. 實驗內容1、X、Y、Z、V均為字變量,在X、Y、Z、V字單元中存放是16位帶符號數。試編寫匯編語言程序完成以下功能:計算表達式值(V(X*Y+Z-720)/X;將上述表達式運算結果整數放在
8、SUM1單元,余數放在SUM2單元。2、求一個班50名學生成績的平均值(附加題:最大值和最小值,并將結果顯示出來)3、從鍵盤讀入一個字符串,以Enter結束,字符串不超過50個字符,并打印該字符串(附加題:查找中間是否有asm子串。如果有,輸出Yes;否則,輸出No)。三. 實驗過程和程序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 ;帶進位把成績加起來 inc si loop l ;cx遞減為0終止循環(huán) mov dx,si div dl mov avg,al;得出平均值 mov cx,50 mov si,0 ;將成績一一相比得出最大值放進bh 先與0l1: cmp scoresi,bh jbe s1 mov bh,scoresis1: inc si loop l1 ;將成績一一相比得出最小值放進bl 先與100 mov cx,50 mov si,0l2: cmp scor
11、esi,bl ja s2 mov 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
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 ;判斷最大值是否為一位數 cmp al,0 jz gw ;判斷最大值是否為三位數 cmp al,10 jz mf ;當最大值為兩位數時輸出 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;輸入一個字符串,緩沖區(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;輸出一個字符串,字符串地址為ds:dx即輸出所輸入的字符串 int 21h mov cl,s1+1 cmp cl,3 jb notfound;如果字符串大小小于3則肯定沒有 lea si,s1 lea di,s2 mov dx,si mov bx,di mov ah,48;控制循環(huán)判斷整個字符串 cldagain: mov cx,3; repz cmpsb;repz執(zhí)行一次cx減一,當cx不為0時,如果ds:si和es:di指示內容相等,則繼續(xù)比較 jz found add dx,1;后移
16、一個字符判斷是否有asm mov si,dx mov di,bx dec ah jnz again jmp notfound jmp overfound: lea dx,s3 mov ah,9;輸出一個字符串,字符串地址為ds:dx即輸出yes int 21h jmp overnotfound: lea dx,s4 mov ah,9;輸出一個字符串,字符串地址為ds:dx即輸出no int 21hover: mov ah,4ch int 21hcseg ends end start四. 實驗結果(包括必要的截圖)1.2.3.五. 實驗體會通過此次實驗基本了掌握順序和循環(huán)程序結構和設計方法,更加
17、熟悉在PC機上建立、匯編、連接、調試和運行8086/8088匯編語言程序的過程,對于匯編指令如數據傳送指令、算術運算指令、位操作指令控制轉移指令也更加熟悉,基本掌握了這些指令的用法以及這些指令在運行后會分別對內存cpu產生什么變化也有了進一步的了解。實驗三 匯編語言子程序設計(分支、子程序)一. 實驗目的1、掌握分支和子程序結構和設計方法;2、熟悉在PC機上建立、匯編、連接、調試和運行8086/8088匯編語言程序的過程。3、通過匯編語言了解高級語言的參數傳遞等知識。二. 實驗內容1、1. BL中的只有一位為1。編寫程序測試,并輸出提示信息“The X Bit is 1”,要求:地址表和轉移表
18、。2. 編寫一個子程序計算z=f(x,y)=x*y+x-y(x,y,z有符號數內存數)。要求通過堆棧(寄存器、內存)傳送所有參數。3. 實踐CàAsm的轉換過程。三. 實驗過程和程序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;轉移表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 ;計算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 ;計算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 ;計算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四. 實驗結果(包括必要的截圖)1.2.五. 實驗體會通過此次實驗基本掌握分支和子程序結構和設計方法更加熟悉在PC機上建立、匯編、連接、調試和運行8086/8088匯編語言程序的過程,對于通過匯編語言了解高級語言的參數傳遞等知識也有了初步的了解,對于地址表和轉移表在內存里
28、的表現方式也有了一定了解,對于利用堆棧,內存和變量傳遞參數的方式也有了更深層次的理解,基本對于利用匯編編程有了基本的掌握。實驗四 匯編語言高級編程專題一. 實驗目的1、匯編語言宏程序設計;2、 掌握中斷服務子程序的編寫。3、 匯編語言與高級語言的混編。二. 實驗內容1、編寫一個宏,求三個數的最小數,原型為:MIN3 x,y,z,min2、掛接1CH中斷,正計時60秒后退出。要求屏幕顯示0-59的秒數。3、VC+中編寫內聯(lián)匯編,將字節(jié)數組的每個元素高低四位互換。 char dbyte = 0x34,0x45,0x56,0x67,0xaf;三. 實驗過程和程序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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度船舶建造與設計合同年度更新
- 2025年度跨境電商代理記賬與稅務合規(guī)支持協(xié)議
- 2025年度人工智能技術研發(fā)合作協(xié)議(全新版)
- 2025年度創(chuàng)意產業(yè)園區(qū)租賃合同及創(chuàng)業(yè)支持協(xié)議
- 2025年度租賃合同范本(含違約責任)
- 持續(xù)反饋機制的建立與實施計劃
- 加強數據安全管理的實施措施計劃
- 2025年CO2氣體保護藥芯焊絲合作協(xié)議書
- 定期舉辦學術交流活動計劃
- 生產計劃科學制定
- 張齊華角的初步認識教學設計數學教學設計-角的初步認識
- 部編版八年級語文上冊教材解析及教學建議課件
- 春季高考英語《大綱短語》(218個核心詞匯相關短語)
- 云南普通初中學生成長記錄-基本素質發(fā)展初一-初三備課講稿
- 護理文書書寫規(guī)范ppt課件
- 氣管切開病人的護理查房PPT課件
- 小學五年級下冊綜合實踐活動.話說節(jié)儉-(13張)ppt
- AQL_抽樣標準表
- 清華建筑系教授已中杰青基金申請書
- 醫(yī)院核磁共振儀電磁屏蔽室設計方案
- 盆底障礙影響簡易問卷7PFIQ-7
評論
0/150
提交評論