匯編語言課程設(shè)計報告_電話簿管理_第1頁
匯編語言課程設(shè)計報告_電話簿管理_第2頁
匯編語言課程設(shè)計報告_電話簿管理_第3頁
匯編語言課程設(shè)計報告_電話簿管理_第4頁
匯編語言課程設(shè)計報告_電話簿管理_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電話薄管理1 課程設(shè)計的目的匯編語言是一項實用性很強的技術(shù),只有進行實際操作,將理論應(yīng)用于實際中,才能確實掌握書中的知識點。 本課程設(shè)計通過設(shè)計簡單的電話薄管理,設(shè)計的程序包含倆大塊,一個是從已經(jīng)定義好的指定的數(shù)據(jù)存儲單元中查找信息,還有一個就是要把從鍵盤上輸入的數(shù)據(jù)填充到數(shù)據(jù)儲存單元當中去。通過簡單的程序,加深學生對匯編程序基本概念的了解,鞏固學習成果;還能夠提高實際動手能力及對計算機硬件的了解,掌握計算機軟件與硬件之間的聯(lián)系。為學生后續(xù)課程的學習,打下良好的基礎(chǔ)。2 設(shè)計方案論證2.1開發(fā)環(huán)境硬件:2G內(nèi)存,250G硬盤,ATI HD4500顯卡,Inter Core i3CPU。 軟件:

2、MASM。自二十世紀80年代初 Microsoft 公司推出 MASM 1.0 以來,目前MASM的版本已升至6.15,支持MMX Pentium、Pentium II、Pentium III及Pentium 4指令系統(tǒng)。 MASM 4.0支持80286/80287的處理器和協(xié)處理器;MASM 5.0支持80386/80387處理器和協(xié)處理器,并加進了簡化段偽定義指令和存儲模式偽指令,匯編和連接的速度更快。 MASM 6.0是1991年推出的,支持80486處理器,它對MASM 進行重新組織,并提供了許多類似高級語言的新特點。MASM 6.0之后又有一些改進,微軟又推出MASM 6.11,利用

3、它的免費補丁程序可以升級到MASM 6.14,支持到Pentium III指令系統(tǒng)。2.2總體設(shè)計功能定義一個數(shù)據(jù)存儲單元,并且在此數(shù)據(jù)段后面建立足夠空間的緩沖區(qū),以便再存入數(shù)據(jù)??梢酝ㄟ^一個主函數(shù)來引導程序的運行,主函數(shù)中可以根據(jù)用戶的需求而調(diào)用不同的功能,即里面包括 主菜單(這是必需的),依據(jù)從鍵盤輸入不同的指令而選取不同的子功能,如 查找 (search proc)和插入(insert proc).查找功能的實現(xiàn):我們?yōu)榱朔奖悴檎?,我們將人名和電話號碼各以10個字節(jié)(不夠補空格)為單位存入數(shù)據(jù)單元中,并且是號碼緊挨著人名排,以便查找,在數(shù)據(jù)單元的尾段開辟足夠空間的緩沖區(qū),以便再存入數(shù)據(jù)進

4、去,就如我所設(shè)計代碼中的 buf,buf db 'ji ','54698765 ', ;定義buf存儲單元以存儲人名和電話號碼 'liu ','69856456 ', 'guo ','56566898 ', ;其中人名和電話號碼都以10個字節(jié)為單位存儲 'zhang ','569874123 ', 20 dup(10 dup (0),10 dup (0);開辟的緩沖區(qū)查找可用移動指針來比較實現(xiàn)。可設(shè)計2個指針,SI和DI再存入功能:其思路和查找的有點雷同,也是通過移動

5、指針來實現(xiàn)的,只不過查找時的指針先移在數(shù)據(jù)單元的表頭,而插入時的指針要移在數(shù)據(jù)單元中的最后已經(jīng)存入人的電話號碼后。23詳細設(shè)計功能2.3.1主程序功能主菜單:依據(jù)從鍵盤輸入不同的指令而選取不同的子功能,如 查找 (search proc)和插入(insert proc).Main開始datas ->ax al=q ? al=r ?al=e ?ax->dsax->es顯示主菜單界面鍵盤輸入字符call querycall insert結(jié)束主菜單流程圖2.3.2 查找子程序功能queryax->datasax->ds,ax->es 0->DFcall ip

6、namecall search返回功能:是用于查找從鍵盤輸入人名的所有信息的主程序,內(nèi)含對輸入人名子程序和查找信息的子程序調(diào)用查找的子程序 search proc, search 功能為:查詢信息程序,查詢條件為鍵盤 輸入人名buf->dipush di count->bl,0->bh_name+2->si10 ->cxrepe cmpsbcx=0,ZF=1 ?cx,zf=1 ?pop didi->si,temp->di,20->cxpop di,20+di->di,push direp movsbbx-1=0 ?temp->dx9號

7、功能調(diào)用,輸出信息 輸出提示信息返回返回到菜單再存入子程序 :insert 功能: 實現(xiàn)增強功能的程序,將所輸?shù)妮敵鎏崾拘畔ⅲ琧all ipname 輸出提示信息,call ipnumber 信息存儲在buf 中開辟的緩區(qū), 成功插入后,count數(shù)加一 返回0->DF輸出提示信息20->alcount->clcount+1->count(al)*(cl)->axdi (IP自動加10),將si中的數(shù)據(jù)再傳入di中buf->dinum+2->si10->cx(di)+(ai)->di_name+2->si10->cx將si中的數(shù)

8、據(jù)傳入di中輸入人名的子程序 輸入電話號碼子程序:ipname proc ipnumber procipnumberipnamenum->dx,10號功能調(diào)用_name->dx,10號功能調(diào)用0->bh,_num+1->bl0->bh,_name+1->bl10->cx, (cx)-(bx)->cx10->cx, (cx)-(bx)->cx20h->numbx+220h->_namebx+2bx+1->bxbx+1->bxcx-1=0 ?cx-1=0 ?返回返回注釋:此兩子所用的算法一致,唯一的區(qū)別在存放的緩沖

9、區(qū)不同;功能分別為 接受從鍵盤輸入的人名信息和 號碼信息第3章 源程序代碼DATAS SEGMENTcount db 4buf db 'ji ','54698765 ', ;存儲人名和電話號碼的數(shù)據(jù)單元區(qū)'liu ','69856456 ', 'guo ','56566898 ', 'zhang ','569874123 ', 20 dup(10 dup (0),10 dup (0) ;為再存入數(shù)據(jù)開辟空間_name db 10, ;緩沖區(qū)鍵盤輸入name字符串 ?,

10、 10 dup(?)num db 10, ;緩沖區(qū)鍵盤輸入num字符串 ?, 10 dup(?) temp db 20dup(?),0dh,0ah,'$' ; 緩沖區(qū)存入人名和電話簿信息menuitem db ' people phonenumber management system',0ah,0dh db ' *',0ah,0dh db ' * this is main menu *',0ah,0dh db ' * 1. query (q) *',0ah,0dh db ' * 2. insert (i)

11、 *',0ah,0dh db ' * 3. exit (e) *',0ah,0dh db ' *',0ah,0dh db 'please select(q,i or e):',0ah,0dh,'$' ;顯示主菜單相關(guān)信息mess1 db 'name',10 dup(' '),'tel',0ah,0dh,'$'mess2 db 'please Input the name:$'mess3 db 'please Input the tele

12、phone number:$'mess4 db 0ah,0dh,'$' ;專門定義一個MESS4,以便在代碼中用9號功能調(diào)用實現(xiàn)換行mess5 db 'Insert succed!$'err1 db 'there is not exsit the people!',0ah,0dh,'$' ;錯誤提示信息DATAS ENDSSTACKS SEGMENT db 2000 dup(?)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSmain proc far

13、mov ax,datas mov ds,ax mov es,ax n1: lea dx,menuitem mov ah,9 int 21h ;顯示主菜單選擇界面 mov ah,1 int 21h ;從鍵盤輸入字符 cmp al,'q' jnz n2 call query :若所輸字符是q,則調(diào)用子程序 query jmp n1n2: cmp al,'i' jnz n3 call insert ; 若所輸字符是i,則調(diào)用子程序 insert jmp n1 n3: cmp al,'e' jz exit jmp n1exit: mov ah,7 int

14、 21h mov ah,4ch int 21h ret ;退出main endpquery proc near ;查找的主程序 push ds xor ax,ax push ax mov ax,datas mov ds,ax mov es,ax cld ;清除方向標志 lea dx,mess4 mov ah,9 int 21h ;換行 lea dx,mess2 mov ah,9 int 21h call ipname ;調(diào)用子程序 ipname,從鍵盤上輸入人名 lea dx,mess4 mov ah,9 int 21h call search ;具體查找的子程序 mov ah,7 int 2

15、1h ret query endpipname proc near ;從鍵盤輸入名字 lea dx,_name ;存放待查找的人名地址 mov ah,10 int 21h mov bh,0 mov bl,_name+1 ;bl 存放從鍵盤輸入的字符串長度 mov cx,10 sub cx,bx ; 計算剩下的長度 r: mov _namebx+2,20h ;剩下的地方補空格 inc bx loop r retipname endpsearch proc near lea di,buf ;di 中存放表首地址 push di mov bl,count mov bh,0l: lea si,_nam

16、e+2 mov cx,10 repe cmpsb ;比較 si 和bi的前10個字節(jié) jz n4 ;不相等時不跳轉(zhuǎn) pop di add di,20 ;di 偏移地址加20 push di dec bx jnz l lea dx,err1 ;提示找不到。信息 mov ah,9 int 21h jmp n1n4: pop di mov si,di lea di,temp mov cx,20 rep movsb ; 將人名和號碼信息傳入 temp lea dx,mess1 mov ah,9 int 21h lea dx,temp mov ah,9 int 21h ;輸出temp中的 人名和號碼 r

17、etsearch endpinsert proc near lea dx,mess4 mov ah,9 int 21h lea dx,mess2 mov ah,9 int 21h lea dx,mess4 mov ah,9 int 21h call ipname ;調(diào)用輸入人名的子程序 lea dx,mess4 mov ah,9 int 21h lea dx,mess3 mov ah,9 int 21h call ipnumber ;調(diào)用輸入號碼的子程序 cld mov al,20 mov cl,count mul cl ;ax 存放 buf里已有數(shù)據(jù)的字節(jié)數(shù) lea di,buf add d

18、i,ax ;將di移動指向數(shù)據(jù)單元中的已經(jīng)存入的最后人的電話后 lea si,_name+2 mov cx,10 rep movsb ;將 si 中數(shù)據(jù)(人名) 傳 di中 lea si,num+2 mov cx,10 rep movsb ;再傳數(shù)據(jù)(號碼)到 di中 inc count ; count 加一條記錄 lea dx,mess5 mov ah,9 int 21h lea dx,mess4 mov ah,9 int 21h mov ah,7 int 21h retinsert endpipnumber proc near ;從鍵盤輸入號碼 lea dx,num ;存放待存入的電話號碼

19、 mov ah,10 int 21h lea dx,mess4 mov ah,9 int 21h mov bh,0 mov bl,num+1 ; bl 存放從鍵盤輸入的字符串長度 mov cx,10 sub cx,bxc1: mov numbx+2,20h ;補空格 inc bx loop c1 retipnumber endp codes ends end main ;程序結(jié)束第 4章 使用說明由于本人是在 ASM 即 MASM for windows集成環(huán)境下編寫的代碼,所以就以在此環(huán)境下為準,介紹一下此環(huán)境下使用發(fā)法:1 生成可執(zhí)行文件后,運行該程序,隨即我們進入主菜單顯示界面,示圖如下

20、: 2 可按界面提示輸入。選擇q,為查找功能,可根據(jù)提示查找你所需要的人的電話號碼,并顯示出來;如果電話簿里沒有你想查找人的電話,則提示 不存在此人,并返回主菜單顯示界面重新選擇功能項,示圖如下:3 選擇 I號功能鍵實現(xiàn)的是再存入功能,可以根據(jù)系統(tǒng)的提示輸入好人名和號碼,提示插入成功,這樣從鍵盤上輸入的人名和電話號碼就已經(jīng)存入好了。隨后,我們回到主菜單,就可以查找到剛才輸進去的人的電話號碼了,示圖如下: 4 按e鍵可退出本系統(tǒng):此系統(tǒng)是實現(xiàn)電話的查找與再存入功能,題目要求的功能都能實現(xiàn),可以隨時查找與錄入,分步進行,一次只能查找或插入一次信息,在不退出系統(tǒng)的前提下可重復查找與插入。 第5章 小結(jié)與心得體會小結(jié)與心得:通過本次課程設(shè)計.進一步掌握了匯編的程序設(shè)計方法,對原來學過的和沒學過的知識都有了較深的理解,也深刻的體會到用匯編語言編寫代碼確實不容易,匯編好幾行語句在高級語言里面只需要一條就可以完成,但事物總有兩面性,存在即具其合理性,ASM的優(yōu)越的性能(時間和空間),高級語言是望塵莫及的,所以學好匯編也是為我們以后的成功奠定基礎(chǔ)。相信通過這次匯編的課程設(shè)計,自己的分析問題和處理問題的

溫馨提示

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

評論

0/150

提交評論