汇编程序设计报告-信息检索.doc_第1页
汇编程序设计报告-信息检索.doc_第2页
汇编程序设计报告-信息检索.doc_第3页
汇编程序设计报告-信息检索.doc_第4页
汇编程序设计报告-信息检索.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.湖南农业大学课程报告学 院: 班 级: 姓 名: 学 号:课程报告题目:信息检索程序设计报告课程名称:汇编语言和微机原理评阅成绩:评阅意见:成绩评定教师签名:日期: 年 月 日目 录摘要 3关键字 31. 需求分析 31.1 具体分析 31.2 各个流程的主要问题及解决方法 42. 程序源代码 43. 程序运行结果 74. 程序中仍存在的问题 85. 心得体会 86. 参考文献 8信息检索程序设计报告摘 要:汇编语言是为了便于理解与记忆,将机器指令用助记符代替而形成的一种语言。由于汇编语言采用了助记符,因此,它比机器语言直观,容易理解和记忆。汇编语言本质上就是机器语言,因而容易产生运行速度快、指令序列短小的高效率目标程序。而该程序是利用汇编语言能基本实现信息检索功能。该程序主要运用了汇编程序设计的分支基本结构,使程序能够通过对接受编号进行先行计算找到对应表格中将要显示信息字符串的起始位置,实现信息检索的目的。接下来我将详细接受程序设计过程关键词:汇编语言;信息检索;程序跳转1 需求分析 完成一个信息检索系统。在数据区,有9个不同的信息,编号0-8,每个信息包括40个字符。从键盘接受0-8之间的一个编号,然后在屏幕上显示出相应编号的信息内容,按“q”键退出。1.1 具体分析开始输入一个字符输出字符的对应信息N错误,请重新输入N是否在0-8之间Y是否为q结束该程序主要实现的是信息检索的基本功能。那么首先要把信息编号为0-8的9个信息分别定义在地址连续的数据段中,通过键盘输入接受编号,然后通过计算得到对应编号中信息内容的起始地址,最后在屏幕上输出所查询到的内容。程序流程图如下:Y1.2 各个流程的主要问题及解决方法1一、数据段中9段信息的定义。给数据分配足够的空间,把一个编号中的信息给定40个字符,以便对数据的寻找。二、接受输入的字符。32位windows控制台应用程序使用io32.lib子程序库和io32.inc包含文件,其中有一个子程序readc,该程序的功能是输入一个字符,并且存储在eax寄存器中。三、把该字符与q进行比较。利用比较指令cmp来比较输入的字符与字符q,该指令主要用的是数据的ASC码的比较。四、判断该字符在0-8之间。同样地,利用比较指令cmp。但是需要比较两次,一次与0比较,一次与8比较。五、如何找到字符对应的信息。该问题是最关键的问题。因为这9个信息是线性编址的,且每条信息的长度也都是固定的40个字符。所以在查找过程中只要获得第0号信息的地址,然后把输入的数据与0比较,经过运算找到对应编号内容的起始地址,然后输出。六、输入错误和查询结束的跳转。通过给程序设置标签,可结合cmp指令进行条件的判断,再运用条件转移指令,使程序跳转到制定位置。也可直接使用无条件转移指令jmp使程序跳转到制定位置。2 程序源代码include io32.inc.data;数据段in_msg byte Input the num(0-8;q for exit):,0;输入提示信息finish_msg byte Search finish!,0;查询完成提示信息msg0 db liuying 0,0msg1 db xionghong 1,0msg2 db fuzhenli 2,0msg3 db zhangcuiting 3,0msg4 db zhangyuqing 4,0msg5 db tianziyan 5,0msg6 db liwei 6,0msg7 db xuping 7,0msg8 db wangjiamin 8,0 ;9个信息,每个信息40个字符errmsg byte error! input again!,0;输入错误提示信息num dword ?;number;用于存放输入字符的变量.code;代码段start:mov eax,offset msg0call dispmsgcall dispcrlfmov eax,offset msg1call dispmsgcall dispcrlfmov eax,offset msg2call dispmsgcall dispcrlfmov eax,offset msg3call dispmsgcall dispcrlfmov eax,offset msg4call dispmsgcall dispcrlfmov eax,offset msg5call dispmsgcall dispcrlfmov eax,offset msg6call dispmsgcall dispcrlfmov eax,offset msg7call dispmsgcall dispcrlfmov eax,offset msg8call dispmsgcall dispcrlf;首先把9个信息显示在屏幕上begin:mov eax,offset in_msgcall dispmsg;在屏幕上显示输入提示信息call readccall dispcrlf;接受输入字符并且换行cmp eax,q;把输入字符与q比较je done;如果相等,则程序跳转到done位置mov num,eax;把数据放到num中cmp num,0;把输入字符与0比较jl wrong;如果比0小,则程序跳转到wrong位置cmp num,8;把输入字符与8比较jg wrong ;如果比8大,则程序跳转到wrong位置mov ebx,offset msg0;找到第0号信息的起始地址,放到ebx寄存器中sub num,48;num是字符的ASC码,所以要减去0得到真正的偏移量,并存放在num中mov eax,num;把num放到eax寄存器中imul eax,40;用num乘以每条信息的长度并存放在eax中add ebx,eax;把0号信息地址加上真正的偏移地址得到所查询编号信息的起始地址放入ebx中mov eax,ebxcall dispmsgcall dispcrlf;显示出所查询的信息并换行mov eax,offset finish_msgcall dispmsgcall dispcrlf;输出查询成功信息并换行jmp begin;一次查询结束,程序跳转到begin处wrong:mov eax,offset errmsgcall dispmsgcall dispcrlf;输出错误提示信息并换行jmp begin;输入错误,程序跳转到begin处done:exit 0end start;程序结束3 程序运行结果msg0 db liuying 0,0msg1 db xionghong 1,0msg2 db fuzhenli 2,0msg3 db zhangcuiting 3,0msg4 db zhangyuqing 4,0msg5 db tianziyan 5,0msg6 db liwei 6,0msg7 db xuping 7,0msg8 db wangjiamin 8,0Input the num(0-8;q for exit):0liuying 0Search finish!Input the num(0-8;q for exit):6liwei 6Search finish!Input the num(0-8;q for exit):9error! input again!Input the num(0-8;q for exit):terror! input again!Input the num(0-8;q for exit):q4 程序中仍存在的问题该程序暂时只能实现较为简单的信息检索功能。并且在输入的时候只能接收单个字符,如果数据段中信息再多一点,那么有些信息则不能被查询到。该程序还能继续改进,比如通过查询某个关键字,就能检索到该关键字所在的位置,以及该号位置里的信息。如果再继续改进,它应该实现的功能应该是还要能增、删、改信息,然后继续查询。5 心得体会本次课程设计最开始选了微机原理,可是经过一上午的探索,发现还是无从下手。于是回来换了的汇编语言。通过此次课程设计,我初步了解和熟悉了汇编语言的编写流程及基本指令的用法。编写一个程序首先要把流程思路想

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论