内存单元中有一个ASCII码表.docx
《内存单元中有一个ASCII码表.docx》由会员分享,可在线阅读,更多相关《内存单元中有一个ASCII码表.docx(19页珍藏版)》请在冰豆网上搜索。
内存单元中有一个ASCII码表
编写程序,实现表的处理:
内存单元中有一个ASCII码表,编写程序完成下面的功能:
①首先输出表的内容;
②插入一个数据,插入的数据和插入的位置从键盘输入;
③对表中的数据进行排序,按升顺或降顺排序可以进行选择;
④在表中查找某一个关键字,要查找的关键字从键盘输入;如果找到,输出查找的关键字并给出提示“find”,否则给出提示“nofind”;
⑤程序执行以后,输出表中的插入以后的内容和排序以后的内容;
⑥程序有友好的运行界面;
⑦要求程序能够处理基本的错误信息;
⑧
datasegment
tabledb'204b26377c',0ah,0dh,'$'
strdb'whichdatayouwanttoinsertandwhereitis?
',0ah,0dh,'$'
megdb'Sortingthetable,youwantitonthebasisof'
db'ascendingorderordescendingorder?
',0ah,0dh
db'1representascendingorder.',0ah,0dh
db'2representdescendingorder.',0ah,0dh,'$'
meg1db'error,makeanotherchoice.',0ah,0dh,'$'
meg2db'Inputthedatayouwanttobefound.',0ah,0dh,'$'
meg3db'find',0ah,0dh,'$'
meg4db'nofind',0ah,0dh,'$'
infdb'***************ASCIITABLE(beforechange)********************',0ah,0dh,'$'
inf1db'***************ASCIITABLE(ascendingorder)******************',0ah,0dh,'$'
inf2db'***************ASCIITABLE(descendingorder)*****************',0ah,0dh,'$'
numdb3
db?
db3dup(?
)
dataends
codesegment
assumecs:
code,ds:
data,es:
data
start:
movax,data
movds,ax
leadx,table
movah,9
int21h
leadx,str
movah,9
int21h
movah,1
int21h
pushax
callnon
popax
subal,30h
xorah,ah
movcl,3
mulcl
movbx,ax
movah,1
int21h
movtable[bx],al
movah,1
int21h
movtable[bx+1],al
callnon
leadx,meg
movah,9
int21h
input:
movah,1
int21h
pushax
callnon
popax
cmpal,31h
jex1
cmpal,32h
jex2
leadx,meg1
movah,9
int21h
jmpinput
x1:
movcl,5
deccl
outlp:
movch,cl
movsi,offsettable
inlp:
moval,[si]
andal,0fh
movdl,al
pushcx
movcl,4
shldl,cl
popcx
moval,[si+1]
cmpal,61h
jaeb2
andal,0fh
ordl,al
jmpa1
b2:
subal,57h
adddl,al
a1:
moval,[si+3]
andal,0fh
movbl,al
pushcx
movcl,4
shlbl,cl
popcx
moval,[si+4]
cmpal,61h
jaea3
andal,0fh
orbl,al
jmpa2
a3:
subal,57h
addbl,al
a2:
cmpdl,bl
jnanext
moval,[si]
xchgal,[si+3]
mov[si],al
moval,[si+1]
xchgal,[si+4]
mov[si+1],al
next:
addsi,3
decch
jnzinlp
loopoutlp
leadx,table
movah,9
int21h
jmpselect
x2:
movcl,5
deccl
outl:
movch,cl
movsi,offsettable
inl:
moval,[si]
andal,0fh
movdl,al
pushcx
movcl,4
shldl,cl
popcx
moval,[si+1]
cmpal,61h
jaec4
andal,0fh
ordl,al
jmpc1
c4:
subal,57h
adddl,al
c1:
moval,[si+3]
andal,0fh
movbl,al
pushcx
movcl,4
shlbl,cl
popcx
moval,[si+4]
cmpal,61h
jaec3
andal,0fh
orbl,al
jmpc3
c3:
subal,57h
addbl,al
c2:
cmpdl,bl
jaenex
moval,[si]
xchgal,[si+3]
mov[si],al
moval,[si+1]
xchgal,[si+4]
mov[si+1],al
nex:
addsi,3
decch
jnzinl
loopoutl
leadx,table
movah,9
int21h
select:
leadx,meg2
movah,9
int21h
movah,1
int21h
movbl,al
andal,00fh
movdl,al
movcl,4
shldl,cl
movah,1
int21h
movbh,al
andal,00fh
oral,dl
movcx,15
movdi,offsettable
moval,bl
repnescasb
jnznon_find
moval,bh
repnescasb
jzfind
non_find:
callnon
leadx,meg4
movah,9
int21h
jmpprint
find:
callnon
leadx,meg3
movah,9
int21h
print:
leadx,table
movah,9
int21h
movah,4ch
int21h
nonproc
movdl,0ah
movah,2
int21h
movdl,0dh
movah,2
int21h
ret
nonendp
codeends
endstart
datasegment
tabledb'204b26377c',0ah,0dh,'$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
x1:
movcl,5
deccl
outlp:
movch,cl
movsi,offsettable
inlp:
moval,[si]
andal,0fh
movdl,al
pushcx
movcl,4
shldl,cl
popcx
moval,[si+1]
cmpal,61h
jaeb2
andal,0fh
ordl,al
jmpa1
b2:
subal,57h
adddl,al
a1:
moval,[si+3]
andal,0fh
movbl,al
pushcx
movcl,4
shlbl,cl
popcx
moval,[si+4]
cmpal,61h
jaex2
andal,0fh
orbl,al
jmpa2
x2:
subal,57h
addbl,al
a2:
cmpdl,bl
jnanext
moval,[si]
xchgal,[si+3]
mov[si],al
moval,[si+1]
xchgal,[si+4]
mov[si+1],al
next:
addsi,3
decch
jnzinlp
loopoutlp
leadx,table
movah,9
int21h
movah,4ch
int21h
codeends
endstart
movbx,ax
movsi,ax
addsi,2
movdi,si
decsi
movcx,5
repmovsb
movah,1
int21h
movtable[bx],al
movah,1
int21h
movtable[bx+1],al
outputmacro
localprint1
leadx,inf
movah,9
int21h
movsi,0
movcx,48
movbl,4
print1:
movdl,table[si]
movah,2
int21h
incsi
loopprint1
decbl
movcx,48
movdl,0ah
movah,2
int21h
movdl,0dh
movah,2
int21h
jnzprint1
leadx,inf1
movah,9
int21h
endm
datasegment
tabledb'2035331a1d4b2608020d03342c2a270d'
db'3d01483b4c224a40365056393e523a44'
db'76696a6b7d6063707c6c5c5a6560595f'
db''
count=$-table-1
strdb'whereinsert:
$'
str1db'insert:
$'
megdb'ascendingorderordescendingorder?
',0ah,0dh
db'1representascendingorder.',0ah,0dh
db'2representdescendingorder.',0ah,0dh,'$'
meg1db'error,makeanotherchoice.',0ah,0dh,'$'
meg2db'Inputthedatayouwanttobefound:
$'
meg3db'find',0ah,0dh,'$'
meg4db'nofind',0ah,0dh,'$'
infdb'******************ASCIITABLE*******************',0ah,0dh,'$'
inf1db'************************************************',0ah,0dh,'$'
dataends
codesegment
assumecs:
code,ds:
data,es:
data
start:
movax,data
movds,ax
moves,ax
output
insert:
leadx,str
movah,9
int21h
movah,1
int21h
andal,00fh
movdl,10;wojiade
muldl;wojiade
movdx,ax
movcl,4
shldl,cl
movah,1
int21h
andax,00fh;al改成ax
adddx,ax;原来是oral,dl
decdx;wojiade
movax,dx;wojiade
pushax
callnon
popax
xorah,ah
movcl,3
mulcl
movbx,ax;bx存放插入位置的三倍
moval,48
pushax;入栈连同ah和48
mulcl;ax48*3
movcx,ax;cx48×3存入
std
inccx;我加的
subcx,bx;wojiade
movsi,ax
addax,3
movdi,ax
subax,3
repmovsb
leadx,str1
movah,9
int21h
movah,1
int21h
movtable[bx],al
movah,1
int21h
movtable[bx+1],al
callnon
output
leadx,meg
movah,9
int21h
choose_order:
movah,1
int21h
pushax
callnon
popax
cmpal,31h
jex1
cmpal,32h
jex2
leadx,meg1
movah,9
int21h
jmpchoose_order
x1:
movcl,49
deccl
a0:
movch,cl
movsi,offsettable
a1:
moval,[si]
andal,0fh
movdl,al
pushcx
movcl,4
shldl,cl
popcx
moval,[si+1]
cmpal,61h
jaea3
andal,0fh
ordl,al
jmpa4
a3:
subal,57h
adddl,al
a4:
moval,[si+3]
andal,0fh
movbl,al
pushcx
movcl,4
shlbl,cl
popcx
moval,[si+4]
cmpal,61h
jaea5
andal,0fh
orbl,al
jmpa6
a5:
subal,57h
addbl,al
a6:
cmpdl,bl
jnanext
moval,[si]
xchgal,[si+3]
mov[si],al
moval,[si+1]
xchgal,[si+4]
mov[si+1],al
next:
addsi,3
decch
jnza1
loopa0
jmpselect
x2:
movcl,49
deccl
b0:
movch,cl
movsi,offsettable
b1:
moval,[si]
andal,0fh
movdl,al
pushcx
movcl,4
shldl,cl
popcx
moval,[si+1]
cmpal,61h
jaeb2
andal,0fh
ordl,al
jmpb3
b2:
subal,57h
adddl,al
b3:
moval,[si+3]
andal,0fh
movbl,al
pushcx
movcl,4
shlbl,cl
popcx
moval,[si+4]
cmpal,61h
jaeb4
andal,0fh
orbl,al
jmpb5
b4:
subal,57h
addbl,al
b5:
cmpdl,bl
jaenext1
moval,[si]
xchgal,[si+3]
mov[si],al
moval,[si+1]
xchgal,[si+4]
mov[si+1],al
next1:
addsi,3
decch
jnzb1
loopb0
select:
leadx,meg2
movah,9
int21h
movah,1
int21h
movbl,al
andal,00fh
movdl,al
movcl,4
shldl,cl
movah,1
int21h
movbh,al
andal,00fh
oral,dl
movbl,al
movcx,48
c1:
moval,[si]
andal,0fh
movdl,al
pushcx
movcl,4
shldl,cl
popcx
moval,[si+1]
cmpal,61h
jaec2
andal,0fh
ordl,al
jmpc3
c2:
subal,57h
adddl,al
c3:
cmpbl,dl
jnznon_find
find:
callnon
leadx,meg3
movah,9
int21h
jmpprint
non_find:
addsi,3
loopc1
callnon
leadx,meg4
movah,9
int21h
print:
output
movah,4ch
int21h
nonproc
movdl,0ah
movah,2
int21h
movdl,0dh
movah,2
int21h
ret
nonendp
codeends
endstart