汇编实验四:查找电话号码Word下载.doc

上传人:聆听****声音 文档编号:3629589 上传时间:2023-05-02 格式:DOC 页数:11 大小:135.50KB
下载 相关 举报
汇编实验四:查找电话号码Word下载.doc_第1页
第1页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第2页
第2页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第3页
第3页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第4页
第4页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第5页
第5页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第6页
第6页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第7页
第7页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第8页
第8页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第9页
第9页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第10页
第10页 / 共11页
汇编实验四:查找电话号码Word下载.doc_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编实验四:查找电话号码Word下载.doc

《汇编实验四:查找电话号码Word下载.doc》由会员分享,可在线阅读,更多相关《汇编实验四:查找电话号码Word下载.doc(11页珍藏版)》请在冰点文库上搜索。

汇编实验四:查找电话号码Word下载.doc

namelendb?

nameflddb21dup(?

);

定义20个字符的用于存放人名的字符串

tel_numlabelbyte

maxtlendb8

tellendb?

telflddb9dup(?

定义8个字符的用于存放电话号码的字符串

tel_tabdb50dup(20dup('

'

),8dup('

));

定义可存放50项纪录的电话号码表

tel_savdb28dup(?

),13,10,'

$'

listdb20dup('

),0dh,0ah,'

定义电话号码表的每个条目

string1db'

Inputname:

'

'

string2db'

Inputatelphonenumber:

string3db'

Doyouwantatelephonenumber?

(Y/N)'

string4db'

name?

string5db'

Wouldyouliketoinputatelephonelist?

string6db'

TheTel_Labisempty.'

string7db'

Thereisnolistfitting.'

string8db'

nametel.'

string9db'

DoyouwantaTel_Lab?

endadddw?

swappeddb0

tel_countdb0;

计算电话号码表中的条目数量

datareaends

prognamsegment

mainprocfar;

主程序

assumecs:

prognam,ds:

datarea,es:

datarea

start:

pushds

subax,ax

pushax

movax,datarea

movds,ax

moves,ax

cld

leadi,tel_tab;

将电话号码表传给目的变址寄存器

cho_inp:

进行选择,是否输入条目

movah,09

leadx,string5

int21h;

输出“Wouldyouliketoinputatelephonelist?

(Y/N)”

movah,01

输入,进行选择

movdl,4eh

cmpal,dl

jesort_n;

若输入为N,则跳转至sort_n,进行电话号码表的排序

movdl,6eh

若输入为n,则同上

movdl,59h

jeinput_n;

若输入为Y,则跳转至input_n,进行电话号码条目的输入

movdl,79h

若输入为y,则同上

movah,02

movdx,0dh

int21h

movdx,0ah

jmpcho_inp;

若输入不为Y(y)/N(n),则返回cho_inp,重新进行选择

input_n:

输入人名,并保存

leadx,string1

输出“Inputname:

callinput_name;

调用子程序input_name接收人名

callstor_name;

调用子程序stor_name把人名存入电话号码表tel_tab中

input_p:

输入电话号码,并保存

leadx,string2

输出“Inputatelephonenumber:

callinphone;

调用子程序inphone接收电话号码,并把它存入电话号码表tel_tab中

跳转至cho_inp,按提示选择是否继续输入条目

sort_n:

对电话号码表进行排序

callname_sort;

调用子程序name_sort,对电话号码表按人名排序

print_lab:

输出整个电话号码表

leadx,string9

输出“Doyouwantatel_lab?

movcl,al

movdl,0dh

movdl,0ah

moval,cl

jesearch_n;

若输入为N,则跳转至search_n,进行电话号码的查找

jegoon_p;

若输入为Y,则跳转至goon_p,继续该部分操作

jmpprint_lab;

若输入不为Y(y)/N(n),则跳转至print_lab,重新进行选择

goon_p:

继续输出电话号码表的操作

callprintall;

调用子程序printall,输出整个电话号码表

search_n:

查找电话号码条目

leadx,string3

输出“Doyouwantatelephonenumber?

jeexit;

若输入为N,则跳转至exit,退出程序

jegoon_s;

若输入为Y,则跳转至goon_s,继续该部分操作

jmpsearch_n;

若输入不为Y(y)/N(n),则跳转至search_n,重新进行选择

goon_s:

继续查找操作

leadx,string4

输出“name?

调用子程序input_name,接收人名

callname_search;

调用子程序name_search,对电话号码表按人名进行查找

跳转至search_n,继续进行查找

exit:

退出程序

ret

mainendp

input_nameprocnear;

子程序input_name,用于接受人名

movah,0ah

leadx,tel_name

int21h;

输入人名

movah,02h

movdl,0dh

int21h

movdl,0ah

movbh,0

movbl,namelen

movcx,20

subcx,bx

namebrk:

将人名除外所剩下的字符用空格填满

movnamefld[bx],20h

incbx

loopnamebrk

input_nameendp

stor_nameprocnear;

子程序stor_name,用于把人名存入电话号码表tel_tab中

inctel_count;

将人名存入电话号码之后,电话号码条目数量增1

leasi,namefld

movcx,10

repmovsw

stor_nameendp

inphoneprocnear;

子程序inphone,用于接受电话号码,并把它存入电话号码表tel_tab中

leadx,tel_num

输入电话号码

movbl,tellen

movcx,8

telbrk:

将电话号码数字除外,所剩下的字符用空格填满

movtelfld[bx],20h

looptelbrk

leasi,telfld

movcx,4

ret

inphoneendp

name_sortprocnear;

子程序name_sort,用于对电话号码表按人名排序

subdi,56

movendadd,di

cmpal,0

jeempty

start_sort:

movswapped,0

leasi,tel_tab

cmp_n:

movdi,si

adddi,28

movax,di

movbx,si

repecmpsb

jbeno_exchg

callexchange_name;

调用子程序exchang_name,将两个相邻的条目进行对调

jmpno_exchg

empty:

若电话号码表为空

movah,09

leadx,string6

输出“Thetel_labisempty.”

jmpexit_sort

no_exchg:

不进行对调

movsi,ax

cmpsi,endadd

jbecmp_n

cmpswapped,0

jnzstart_sort

exit_sort:

name_sortendp

exchange_nameprocnear;

子程序exchange_name,用于将电话号码表中的两个相邻的条目进行对调

movcx,14

leadi,list

movsi,bx

movdi,bx

leasi,list

movswapped,1

exchange_nameendp

name_searchprocnear;

子程序name_search,用于按人名在电话号码表中查找所要的电话号码

pushdi

moval,tel_count

again:

jeno_list

leadi,namefld

repzcmpsb

jbfind_n

jano_list

decal

leadx,string8

输出“nametel.”

movah,02

callprintline;

调用子程序printline,输出所查找到的条目

jmpexit_sch

find_n:

addsi,28

jmpagain

no_list:

若不存在该条目

leadx,string7

输出“Thereisnolistfitting.”

exit_sch:

popdi

name_searchendp

printlineprocnear;

子程序printline,用于输出所查找到的电话号码条目

leadx,list

printlineendp

printallprocnear;

子程序printall,用于输出整个电话号码表

movbl,tel_count

cmpbl,0

jeempty_lab

next:

decbl

jnznext

jmpexit_pall

empty_lab:

leadx,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2