匯編語(yǔ)言-子程序設(shè)計(jì)_第1頁(yè)
匯編語(yǔ)言-子程序設(shè)計(jì)_第2頁(yè)
匯編語(yǔ)言-子程序設(shè)計(jì)_第3頁(yè)
匯編語(yǔ)言-子程序設(shè)計(jì)_第4頁(yè)
匯編語(yǔ)言-子程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(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、1 福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院(程序設(shè)計(jì)類課程)實(shí)驗(yàn)報(bào)告課程名稱:匯編語(yǔ)言姓名:系:計(jì)算機(jī)系專業(yè):計(jì)算機(jī)專業(yè)年級(jí):09 級(jí)學(xué)號(hào):指導(dǎo)教師:職稱:2011 年12 月 30 日2 實(shí)驗(yàn)項(xiàng)目列表序號(hào)實(shí)驗(yàn)項(xiàng)目名稱成績(jī)指導(dǎo)教師1 匯編程序的匯編及執(zhí)行張旭玲2 debug 的使用(順序執(zhí)行程序)張旭玲3 程序的調(diào)試與糾錯(cuò)(循環(huán)語(yǔ)句)張旭玲4 dos 功能調(diào)用張旭玲5 子程序張旭玲6 串操作張旭玲7 8 9 10 11 12 3 福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院實(shí)驗(yàn)報(bào)告系:計(jì)算機(jī)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)年級(jí): 2009 姓名:學(xué)號(hào):實(shí)驗(yàn)室號(hào)田 507 計(jì)算機(jī)號(hào) 79 實(shí)驗(yàn)時(shí)間:11.11.29指導(dǎo)教師簽字:成

2、績(jī):實(shí)驗(yàn)五子程序設(shè)計(jì)一、 實(shí)驗(yàn)?zāi)康模?)學(xué)習(xí)子程序的編寫,主子程序的調(diào)用;(2)不同模塊間程序的調(diào)用和調(diào)試。二、 實(shí)驗(yàn)內(nèi)容1)數(shù)據(jù)段中3 個(gè)字符, 調(diào)用子程序?qū)⑵渲饌€(gè)顯示出來(lái)。子程序的功能是顯示一個(gè)字符。單步執(zhí)行,對(duì)call 語(yǔ)句和 ret 語(yǔ)句觀察sp,ip 的變化,并用d 命令查看棧頂?shù)膬?nèi)容。data segment mag db abc data ends code segment assume cs: code, ds: da ta start: mov ax, da ta mov ds, ax mov si, 0 mov cx, 3 ll: mov dl, magsi call ma

3、dd inc si loop ll mov ah, 4ch int 21h madd proc mov ah, 02h int 21h ret 4 madd endp code ends end start 2)閱讀 s31.asm 和 s32.asm 兩個(gè)模塊中的程序,并分別匯編,然后連接成一個(gè)可執(zhí)行文件 s31.exe。具體步驟如下:masm s31.asm (分別匯編)masm s32.asm link s31 s32 (將兩個(gè)文件連接成為一個(gè)文件名為s31)s31.exe (運(yùn)行)3)編程:利用主程序調(diào)用子程序,比較buf1 和 buf2 緩沖區(qū)中不相等的字符,并將不相等的字符顯示出來(lái)

4、。(也可以將找到的不相等字符逐個(gè)顯示,用int 21h 的 02 功能調(diào)用)4)編程:子程序搜索指定字符緩沖區(qū)中是否有n,如果有用y 替代。調(diào)用子程序?qū)uf1,buf2,buf3 中的 n 全部用 y 替代。附源程序:name s31.asm 不同模塊間的段間調(diào)用。從鍵盤輸入2 位非壓縮bcd 數(shù),存入ax 寄存器中。為了將其轉(zhuǎn)換為二進(jìn)制數(shù),編寫一個(gè)子程序tran 。顯示子程序disp 完成將16 進(jìn)制數(shù)轉(zhuǎn)換為對(duì)應(yīng)的 ascii 碼并顯示該字符,顯示子程序在另一模塊s32 中。輸入數(shù)據(jù)為00 時(shí)結(jié)束。extrn disp: far code segment para code assume

5、cs: code start: mov ah, 01h int 21h mov bl, al int 21h mov ah, al mov al, bl cmp ax, 3030h je exit call near ptr tran call far ptr disp jmp start 5 exit: mov ah, 4ch int 21h tran proc near ;將輸入的ascii 碼轉(zhuǎn)換成 2 進(jìn)制數(shù)and ax, 0f0fh ;將 ascii 碼轉(zhuǎn)換成非壓縮bcd 碼,;高位在al 中mov bl, ah mov cl, 10d mul cl add al, bl ret t

6、ran endp code ends end start name s32.asm public disp code1 segment para codeassume cs: code1 disp proc far mov bl, al mov bh, 00 mov ch, 4 roll: mov cl, 4 rol bx, cl mov dl, bl and dl, 0fh cmp dl, 9 jbe next1 add dl, 07h next1: add dl, 30h mov ah, 02h int 21h dec ch jnz roll ret 6 disp endp code1 e

7、nds end三、 實(shí)驗(yàn)環(huán)境計(jì)算機(jī)四、 實(shí)驗(yàn)步驟及運(yùn)行結(jié)果1) 單步執(zhí)行程序,如下:從實(shí)驗(yàn)結(jié)果中可以看出,當(dāng)程序運(yùn)行到call語(yǔ)句之前, sp一直保持 0000 不變,而 ip 則一直在增加。繼續(xù)單步執(zhí)行程序:從上圖中可以看出,當(dāng)程序在ret語(yǔ)句之前欲行時(shí), sp 、ip 每次都是分別按7 2 和 1 遞增,當(dāng)運(yùn)行到 ret語(yǔ)句時(shí),sp海事按照 2 來(lái)遞增,而 ip 出現(xiàn)了變化,這次卻減少了很多,說(shuō)明指針回撤執(zhí)行下一個(gè)循環(huán)。用 d命令查看棧頂內(nèi)容:出來(lái)、從結(jié)果中可以看到,棧頂?shù)膬?nèi)容為a。程序全部執(zhí)行后的結(jié)果為:2)編輯 s31和 s32文件,輸入程序,保存。分別編譯上s31 和 s32文件。鏈

8、接 s31和 s32文件:無(wú)錯(cuò)誤輸出,運(yùn)行程序:輸入“ 10” ,輸出: 10000a 按“00”結(jié)束,退出運(yùn)行。3)編寫程序如下:data segment buf1 db aabbccvvxx$ buf2 db aabccvvvxz$ buf3 db 20 dup(?) data ends 8 code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov si,0 mov di,0 call bijiao lea dx,buf3 mov ah,09h int 21h mov ax,4c00h int 21h bijia

9、o proc mov al,si cmp al,$ je exit mov ah,buf2si cmp al,ah je next mov buf3di,al mov buf3di+1,ah add di,2 next:inc si jmp bijiao exit:mov buf3di,al ret bijiao endp code ends end start 運(yùn)行輸出結(jié)果為 bccvxz,如下圖:4)編寫程序如下:data segment buf1 db aanaaaaanaaaaanaaa$ buf2 db aaanaaanaaaaaaanaa$ buf3 db anaanaaaaana

10、anaana$ buf4 db the buf1 first is:,0ah,0dh,$ buf5 db 0ah,0dh,the buf1 now:,0ah,0dh,$ buf6 db 0ah,0dh,the buf2 first is:,0ah,0dh,$ buf7 db 0ah,0dh,the buf2 now:,0ah,0dh,$ buf8 db 0ah,0dh,the buf3 first is:,0ah,0dh,$ 9 buf9 db 0ah,0dh,the buf3 now:,0ah,0dh,$ data ends code segment assume cs:code,ds:da

11、ta start:mov ax,data mov ds,ax mov si,0 push si lea dx,buf4 mov ah,09h int 21h lea dx,buf1 mov ah,09h int 21h add si,offset buf1 call sort lea dx,buf5 mov ah,09h int 21h lea dx,buf1 mov ah,09h int 21h pop si push si lea dx,buf6 mov ah,09h int 21h lea dx,buf2 mov ah,09h int 21h add si,offset buf2 cal

12、l sort lea dx,buf7 mov ah,09h int 21h lea dx,buf2 mov ah,09h int 21h pop si push si lea dx,buf8 mov ah,09h 10 int 21h lea dx,buf3 mov ah,09h int 21h add si,offset buf3 call sort lea dx,buf9 mov ah,09h int 21h lea dx,buf3 mov ah,09h int 21h pop si mov ax,4c00h int 21h sort proc ;push ax mov al,si cmp al,$ je exit cmp al,n

溫馨提示

  • 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)論