1、汇编程序设计语言翻译机(一) 实验内容本次汇编程序设计题目选自 2006 年百度之星程序设计大赛初赛题目。原题如下:百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。 输入数据:输入数据包含三部分 1. 第一行包含一个整数 N( N=stringdi.count1?temp=stringsi;stringsi=stringdi;stringdi=t
2、emp;di=num-1?si=num-2?returnyesnonononoyesyesyesstrstr(查找):SI=要替换词条的首地址;DI=文本首地址;DI=$?CX=要替换的词条长度;CLD;REPE EMPSB;ZF=1?returnAX=DIAX=0INC DIyesyesnonostrcpy(复制):Strcat(粘贴):returnDi=$SI=源串首地址;DI=目的串首地址;di=si;Inc si;Inc di;Inc di;Inc si;inc diSI=源串首地址;Di=y 首地址;si=$?noyesreturnDI=SIDI=$?DI=$? nonoyesyes
3、(三) 实验结果(四) 源程序.model small.586.datanum db ? ;替换词条个数buf0 db 5 ;输入词条个数缓存count0 db ?word0 db 5 dup(0)tihuan strucbuf1 db 20 ;结构体,储存数据count1 db ?word1 db 20 dup($)buf2 db 40count2 db ?word2 db 40 dup($)tihuan endsstring tihuan 100 dup (buf3 db 100 ;输入句子缓存count3 db ?x db 100 dup($)y db 100 dup($)note db
4、 此程序实现了字符串的查找替换。例如 ,0ah,0dh,输入( 每行以回车键结束),0ah,0dh,2,0ah,0dh,NWPU,0ah,0dh,The Northwestern Polytechnical University,0ah,0dh,Beijing,0ah,0dh,Xian,0ah,0dh,NWPU is one of the best universities in Beijing.,0ah,0dh,则输出,0ah,0dh,The Northwestern Polytechnical University is one of the best universities in Xi
5、an.,0ah,0dh,Now please enter:$note1 db 请输入词条个数:,0ah,0dh,$note2 db 请输入被替换的词条:,0ah,0dh,$ note3 db 请输入替换词条:,0ah,0dh,$note4 db 请输入文本:,0ah,0dh,$note5 db 替换结果为:,0ah,0dh,$ .code.startupmov ax,data ;数据段段基址mov es,axcr macro ;宏:回车mov dl,0dhmov ah,2int 21hendmlf macro ;宏:换行mov dl,0ahmov ah,2int 21hendmmov dx,o
6、ffset note ;输出提示mov ah,9int 21hcrlfcall inputcall rankmov al,numand ax,00ffhmov cx,axmov bx,offset string0.word1lop: mov ax,offset xpush axpush bx call strstrcmp ax,0jz nextwordmov si,ax mov al,si+1 ;和下边第三行是为了解决缩略词条字数为 1 时的 BUG!mov si,$mov si+1,almov al,bx-1and ax,00ffhadd si,axmov ax,offset y push axpush si call strcpymov ax,offset xpush axmov ax,bxadd ax,22push axcall strcatmov ax,offset xpush ax