版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)四 查找電話號碼一、 實(shí)驗(yàn)的目的與要求(一)實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)用匯編語言設(shè)計(jì)與編寫子程序,理解子程序的調(diào)用過程。(二) 實(shí)驗(yàn)要求:(1) 要求程序建立一個(gè)可存放50項(xiàng)的電話號碼表,每項(xiàng)包括人名(20個(gè)字符)及電話號碼(8個(gè)字符)兩部分;(2) 程序可接收輸入人名及相應(yīng)的電話號碼,并把它們加入電話號碼表中;(3) 凡有新的輸入后,程序應(yīng)按人名對電話號碼表重新排序;(4) 程序可接收需要查找電話號碼的人名,并從電話號碼表中查出其電話號碼,再在屏幕上以如下格式顯示出來。 name tel X X X X X X X X二、實(shí)驗(yàn)正文 實(shí)驗(yàn)分析:查找電話號碼程序設(shè)計(jì),應(yīng)注意子程序的設(shè)計(jì),合理的設(shè)計(jì)子程序
2、,使程序思路更清晰,便于設(shè)計(jì)。實(shí)驗(yàn)涉及查找排序,對程序設(shè)計(jì)提出了更高的要求,數(shù)據(jù)結(jié)構(gòu)采用二維數(shù)組來存儲電話信息,還應(yīng)設(shè)置變量用于排序以及查找等子功能的實(shí)現(xiàn)。核心的子功能是排序和查找功能,排序采用冒泡排序,并設(shè)置標(biāo)志位,以便提高程序效率,排序時(shí)應(yīng)當(dāng)注意的是數(shù)據(jù)段的截止地址,以防發(fā)生越界錯(cuò)誤。在排序時(shí)也嵌套調(diào)用子過程交換,此時(shí)應(yīng)該注意,源地址寄存器和目的地址寄存器的變化。查找的功能其實(shí)是對電話本的每一項(xiàng)的姓名進(jìn)行匹配。顯示電話本內(nèi)容是把電話本的每一項(xiàng)先放在一個(gè)變量里面,然后顯示,直到全部取出為止。由于字符串的操作較多,多次使用si和di寄存器,再適當(dāng)時(shí)候應(yīng)注意壓棧。保存必要的信息,否則會發(fā)生越界等
3、嚴(yán)重錯(cuò)誤。三、流程圖如下:四、實(shí)驗(yàn)結(jié)果附錄:程序源代碼如下:;*8data_seg segment namcount dw 0 ;the number count tel_tab db 50 dup(28 dup(' ') ;the telbook nameitem label byte ; store namemax1 db 21 ncurlen db ? namefld db 21 dup(?) phoneitem label byte;store numer max2 db 9 pcurlen db ? phonefld db 9 dup(?) addend dw ? ;
4、排序時(shí)的tel_tab尾地址指針 namtemp db 28 dup(?),13,10,'$' swap db 0 ;排序中是否有交換的標(biāo)志位 msg_count db 'Do you want to insert a item to phonebook?(Y/N)',13,10,'$' msg_error db 'Error!Please enter the requested.',13,10,'$' msg_inputnam db 'Input name:','$' msg_in
5、putnum db 'Input a telephone number:','$' msg_inquire db 'Do you want a telephone number?(Y/N)','$' msg_sname db 'name?',13,10,'$' msg_outtitle db 'name tel.',13,10,'$' msg_nomatch db 'NOt EXIT!',13,10,'$' msg_allphone d
6、b 'print all RECORD?(Y/N)',13,10,'$' msg_result db 'name tel.',13,10,'$' data_seg ends ;*stack_seg segment para stack 'stack' ;定義堆棧段 dw 256 dup(0) stack_seg ends ;*code_seg segment ;-main proc far assume cs:code_seg,ds:data_seg,es:data_seg,ss:stack_seg start:
7、mov ax,data_seg mov ds,ax ;初始化數(shù)據(jù)段 mov es,ax ;初始化附加段 xor bx,bx cld lea di,tel_tab ;名字表的首地址放入di a1: lea dx,msg_count mov ah,9 int 21h ;顯示信息是否插入一項(xiàng)紀(jì)錄?(Y/N)' mov ah,1 int 21h mov bl,al call crlf cmp bl,'n' ;判斷輸入 jz a2 cmp bl,'N' jz a2 cmp bl,'y' jz next0 cmp bl,'Y' jz
8、next0 mov ah,9 lea dx,msg_error int 21h jmp a1next0:lea dx,msg_inputnam mov ah,9 int 21h ;要求輸入名字 call input_name ;調(diào)用input_name輸入人名 call stor_name ;調(diào)用stor_name存儲人名 call input_phone ;調(diào)用input_phone輸入電話 call name_sort ;排序 jmp a1 ;是否繼續(xù)輸入? a2: lea dx,msg_inquire mov ah,9 int 21h ;顯示是否查找電話號碼 mov ah,1 int 2
9、1h mov bl,al call crlf cmp bl,'n' jz a3 cmp bl,'N' jz a3 cmp bl,'y' jz next1 cmp bl,'Y' jz next1 mov ah,9 lea dx,msg_error int 21h jmp a2next1:lea dx,msg_sname mov ah,9 int 21h ;顯示要查詢電話的姓名 call input_name ;輸入姓名 call name_search jmp a2 a3: lea dx,msg_allphone ;顯示所有電話號碼
10、 mov ah,9 int 21h mov ah,1 int 21h mov bl,al call crlf ;回車換行 cmp bl,'n' jz exit cmp bl,'N' jz exit cmp bl,'y' jz next2 cmp bl,'Y' jz next2 mov ah,9 lea dx,msg_error int 21h jmp a3next2: call printline ;調(diào)用子程序打印出所有的電話號碼exit: ret main endp ;- input_name proc near ;子程序 接受
11、輸入字符 lea dx,nameitem mov ah,0ah int 21h call crlf ;回車換行 mov bh,0 mov bl,ncurlen mov cx,21 sub cx,bx repeat1:mov namefldbx,20h inc bx loop repeat1 ;輸入的名字為20字節(jié),不足的用空格補(bǔ)足 ret input_name endp ;-stor_name proc near ;子程序傳送名字的每個(gè)字母到si inc namcount cld lea si,namefld mov cx,20 rep movsb ret stor_name endp ;-i
12、nput_phone proc near ;子程序(輸入電話號碼) lea dx,msg_inputnum mov ah,9 int 21h ;顯示要求輸入電話號碼 lea dx,phoneitem mov ah,10 int 21h mov bh,0 mov bl,pcurlen mov cx,9 sub cx,bx repeat2:mov phonefldbx,20h inc bx loop repeat2 call crlf cld lea si,phonefld mov cx,8 rep movsb ;把輸入的號碼存入namtab表中 ret input_phone endp ;-na
13、me_sort proc near ;子程序 push di push ax push bx cmp namcount,1 jz exit4 ;比較名字個(gè)數(shù)是否為一個(gè)s1: mov swap,0 sub di,56 mov addend,di lea si,tel_tab s2: mov cx,20 mov di,si add di,28 mov ax,di mov bx,si repe cmpsb jbe s3 call exchange s3: mov si,ax cmp si,addend jbe s2 cmp swap,0 ;如果有交換,繼續(xù)下一趟 jnz s1 exit4: pop
14、bx pop ax pop di ret name_sort endp ;-exchange proc near ;交換tel_tab中di,si所指表項(xiàng)的內(nèi)容 mov cx,28 lea di,namtemp mov si,bx rep movsb mov cx,28 mov di,bx rep movsb mov cx,28 lea si,namtemp rep movsb mov swap,1 ret exchange endp ;-name_search proc near ;查找輸入的名字 lea di,tel_tab push di mov bx,namcount loop1: l
15、ea si,namefld mov cx,20 repe cmpsb ;連續(xù)查找匹配名字 je found ;找到跳轉(zhuǎn)found pop di ;沒找到di出棧 add di,28 push di dec bx jnz loop1 lea dx,msg_nomatch mov ah,9 int 21h ;沒有找到輸出信息 found: pop di lea dx,msg_outtitle mov ah,9 int 21h mov si,di lea di,namtemp mov cx,28 rep movsb lea dx,namtemp mov ah,9 int 21h ;顯示查到的姓名和電
16、話號碼 ret name_search endp ;-printline proc near ;輸出排序結(jié)果 push di push namcount call crlf ;回車換行 lea dx,msg_result mov ah,9 int 21h ;顯示升序輸出姓名、電話 lea si,tel_tab loop2: lea di,namtemp mov cx,28 rep movsb lea dx,namtemp mov ah,9 int 21h ;顯示姓名、電話 dec namcount jnz loop2 ;循環(huán)輸出 pop namcount pop di ret printline endp ;-crlf proc near ;回車換行 mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h ret crlf endp;-code_seg ends ;*end main 五、實(shí)驗(yàn)總
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度能源項(xiàng)目合同財(cái)產(chǎn)保全擔(dān)保書范本3篇
- 2025年度個(gè)人裝修貸款協(xié)議書3篇
- 二零二五年度60歲以上人員社區(qū)教育輔導(dǎo)勞動合同模板3篇
- 2024-2025學(xué)年新教材高中政治第3單元就業(yè)與創(chuàng)業(yè)單元綜合提升教案新人教版選擇性必修2
- 2025版智能交通管理系統(tǒng)建設(shè)運(yùn)營履約擔(dān)保合同4篇
- 2025年度噴灌系統(tǒng)節(jié)能改造技術(shù)合同4篇
- 2025年度在線教育平臺兼職外教遠(yuǎn)程教學(xué)合同4篇
- 2025年度宿舍管理員職業(yè)發(fā)展規(guī)劃聘用合同
- 二零二五年度駕校教練員職業(yè)發(fā)展承包合同3篇
- 2025年度馬賽克材料研發(fā)與應(yīng)用采購合同4篇
- C及C++程序設(shè)計(jì)課件
- 帶狀皰疹護(hù)理查房
- 公路路基路面現(xiàn)場測試隨機(jī)選點(diǎn)記錄
- 平衡計(jì)分卡-化戰(zhàn)略為行動
- 國家自然科學(xué)基金(NSFC)申請書樣本
- 幼兒教師干預(yù)幼兒同伴沖突的行為研究 論文
- 湖南省省級溫室氣體排放清單土地利用變化和林業(yè)部分
- 材料設(shè)備驗(yàn)收管理流程圖
- 培訓(xùn)機(jī)構(gòu)消防安全承諾書范文(通用5篇)
- (完整版)建筑業(yè)10項(xiàng)新技術(shù)(2017年最新版)
- 第8期監(jiān)理月報(bào)(江蘇版)
評論
0/150
提交評論