农业大学课程报告
学 院: 班 级: 姓 名:
学 号:
课程报告题目:信息检索程序设计报告 课程名称:汇编语言和微机原理 评阅成绩: 评阅意见:
成绩评定教师签名: 日期: 年 月 日
目 录
摘要………………………………………………………………… 3 关键字……………………………………………………………… 3 1. 需求分析………………………………………………………… 3 1.1 具体分析……………………………………………………… 3 1.2 各个流程的主要问题及解决方法…………………………… 4 2. 程序源代码……………………………………………………… 4 3. 程序运行结果…………………………………………………… 7 4. 程序中仍存在的问题…………………………………………… 8 5. 心得体会………………………………………………………… 8 6. 参考文献………………………………………………………… 8
信息检索程序设计报告
摘 要:汇编语言是为了便于理解与记忆,将机器指令用助记符代替而形成的一种语
言。由于汇编语言采用了助记符,因此,它比机器语言直观,容易理解和记忆。汇编语言本质上就是机器语言,因而容易产生运行速度快、指令序列短小的高效率目标程序。而该程序是利用汇编语言能基本实现信息检索功能。该程序主要运用了汇编程序设计的分支基本结构,使程序能够通过对接受编号进行先行计算找到对应表格中将要显示信息字符串的起始位置,实现信息检索的目的。接下来我将详细接受程序设计过程
关键词:汇编语言;信息检索;程序跳转
1 需求分析
完成一个信息检索系统。在数据区,有9个不同的信息,编号0-8,每个信息包括40个字符。从键盘接受0-8之间的一个编号,然后在屏幕上显示出相应编号的信息容,按“q”键退出。
1.1 具体分析
该程序主要实现的是信息检索的基本功能。那么首先要把信息编号为0-8的9个信息分别定义在地址连续的数据段中,通过键盘输入接受编号,然后通过计算得到对应编号息容的起始地址,最后在屏幕上输出所查询到的容。程序流程图如下:
Y 结束是否为‘q’ N 是否在0-Y8 之间 N 错误,请重新输入 输入一个字符 输出字符的对应信息 开始1.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',0 msg1 db 'xionghong 1',0 msg2 db 'fuzhenli 2',0 msg3 db 'zhangcuiting 3',0 msg4 db 'zhangyuqing 4',0 msg5 db 'tianziyan 5',0 msg6 db 'liwei 6',0
msg7 db 'xuping 7',0
msg8 db 'wangjiamin 8',0 ;9个信息,每个
errmsg byte 'error! input again!!!',0
num dword ? ;number
.code
start: mov eax,offset msg0 call dispmsg call dispcrlf mov eax,offset msg1 call dispmsg call dispcrlf mov eax,offset msg2 call dispmsg call dispcrlf mov eax,offset msg3 call dispmsg call dispcrlf mov eax,offset msg4 call dispmsg call dispcrlf mov eax,offset msg5 call dispmsg call dispcrlf mov eax,offset msg6 call dispmsg call dispcrlf
mov eax,offset msg7
信息40个字符
;输入错误提示信息
;用于存放输入字符的变量 ;代码段