1、专业课程设计说明指导书汇编语言专业课程设计 课程设计说明书 汇编语言课程设计 院 系: 计算机科学与技术 专业班级: 计科0904 学 号: 21 学生姓名: 李金龙 指导教师: 段珊 2011 年 10 月 12 日 目录 课程设计题目 信息检索程序设计 3 I、 设计内容 3 II、 2、设计要求 4 III、 3、算法设计 5 IV、 4、详细设计
2、7 V、 5、调试与运行 11 VI、 6、课程设计心得体会 13 6.1 设计体会 13 6.2 调试过程及分析 14 VII、 7. 参考文献 16 课程设计题目 信息检索程序设计 I、 设计内容 课程设计的内容以软硬件综合设计为主,要求同学们在设计过程中,提倡独立思考、深入钻研的精神和严肃认真、一丝不苟、精益求精的工作态度。根据课题的要求,进行深入分析和研究,充分收集和利用现有资源和数据进行设计,保证设计的水平和质量。 通过知识的综合运用,加深对汇编语言程序设计的理论与
3、提高综合编程能力的认识,从而建立起汇编程序设计的整体概念。 学会汇编程序设计的方法,进一步掌握并体会设计方案的优劣对计算机性能发挥的重要性。 培养科学的、独立的工作创新精神,取得课程设计的实践经验 II、 2、设计要求 完成一个信息检索系统。在数据区,有8个不同信息,编号0—7,每个信息包括50个字符。从键盘接收0—9之间的一个编号,然后在屏幕上显示相应编号的信息内容,按“q”键盘退出。 根据要求,问题实现的思路是根据不同的输入序号来计算出相应的物理地址,实现不同信息的输出。对输入项进行判断,满足不同的条件,就会进行相应的计算得出该序号下的信息的物理地址,进而
4、输出出结果。信息显示和其中的单个字符的输出编成子程序使的程序结构更加清晰。 III、 3、算法设计 1.程序里9个不同信息组成一个 信息表,对信息表的查找是 根据键盘接收的编号来确定的。 2.然后根据编号,(ax)=(al)*50计算相应地址,然后调用display显示 3.程序中把显示信息编成一个独立的子程序display,使得程序更加清晰。 IV、 4、详细设计 信息检索程序设计详细设计: ;*************
5、 ; ************** 名称:信息检索程序设计 ********** ;***************************************************************** ;***************************************************************** data segment ;define data segment mess db '-------
6、',13,10 db '| Input a number between 0 and 7|',13,10 db '| Press q to quit |',13,10 db '--------------------------------------------------------',13,10,'$' ;message table forty db 50 ;value for mul instruction
7、 msg0 db ' I am a boy! ' msg1 db ' I am very happy! ' msg2 db ' Hello everyone! ' msg3 db ' Welocome to our school! ' msg4 db ' I love you forever!! ' msg5 db
8、' You are my angel! ' msg6 db ' It is very nice of you! ' msg7 db ' What can I do for you,sir? ' msg8 db ' Look!There is a brid on the tree! ' msg db 'Please input a number:$' msg9 db 'The message is: $' crlf1 db 0
9、dh,0ah,'$' ;error message errmsg db 'error! invalied parameter!!' data ends ;***************************************************************** stack segment db 256 dup(0) ;256 bytes of stack space tos label word stack ends ;***************************************************
10、 code segment ;***************************************************************** main proc far ;main part of program assume cs:code,ds:data,ss:stack start: ;starting execution address ;set SS to current stackarea mov ax,stack mov ss,ax mov sp,offset tos ;set
11、 up stack for return push ds ;save old data segment sub ax,ax ;put zero in AX push ax ;save it on stack ;set DS to current data segment mov ax,data ;dararea segment addr mov ds,ax ;into DS register ;MAIN PART OF PROGRAM GOES HERE ;begin to process call show begin: lea
12、dx,msg ;显示提示信息 mov ah,09h int 21h mov ah,1 int 21h cmp al,'q' ;判断为‘q’退出 je exit sub al,'0' ;小于0跳转error jb error cmp al,8 ;大于9跳转error ja error ;select appropriate message from message table mov bx,offset msg0 mul forty ;(ax)=(al)*50 add bx,ax call
13、 display jmp begin ;define error error: call crlf lea dx,errmsg mov ah,09h int 21h call crlf call crlf jmp begin ;------------------------------------------------------------------------- ;Subroutine to display a message on the screen ;Enter with BX-->message to be d
14、isplayed ;Message is assumeed to be 40 characters long display proc near call crlf lea dx,msg9 mov ah,09h int 21h mov cx,50 disp1: mov dl,[bx] mov ah,2 int 21h inc bx loop disp1 call crlf call crlf jmp begin display endp ;-----------------------
15、 crlf proc near mov dx,offset crlf1 mov ah,9h int 21h ret crlf endp ;------------------------------------------------------------------------- show proc near lea dx,mess mov ah,09h int 21h ret show endp ;---------
16、 exit: mov ax,4c00h int 21h ;------------------------------------------------------------------------- main endp ;***************************************************************** code ends ;*****************************
17、 end start V、 5、调试与运行 VI、 6、课程设计心得体会 6.1 设计体会 经过近两个星期的工作,才把课程设计完成。经过这次课程设计,我加深了对汇编语言的理解,也对上课时所说的语法有了深刻的认识。 相对于以前学习的高级语言,对汇编语言的第一
18、印象是很酷,因为它很抽象。怀着崇拜的心情学着汇编语言,虽然枯燥,但是每当完成一个很简单的程序就会感到非常的有成就感。 当我刚开始选择这个题目是因为课本上有一个相近的代码转换,所以感觉这个题目应该很好写。可是等到真正动手的时候就感到了困难。首先是对字符串的输入输出的处理,解决不了就改成了字母大小写转换是每次只输入一个字母,然后根据其大小写转换,如大写就转换成小写,否则反之。然而在随后的进制转换中用遇到了同样的问题,发现这是一个不能不解决的问题,随后查阅了资料才解决。随后实在数值转换过程中对模块的设计上又出现了问题。最初的构想是设计六个模块分别对应相应的数值转换功能。可是在三个写好以后发现了下面
19、要写的代码有很多重复的地方,于是就把这些重复的代码定义成了子函数来使用然后发现将程序按照输入、输出的不同来分模块,以BX作为连接,比原来的程序更为简洁,逻辑上也更加清楚,有种豁然开朗的感觉。在改进程序的过程中感到非常有成就感。 在编写代码的过程中让我充分感受到了不同编程语言之间的差别。对与高级语言来说或许是很简单的一个程序或者只需要调用已有的函数库,可是对于汇编来说却要写上几十行甚至更多的代码。可是更加深刻的了解了寄存器、存储器之间的数据流向,因为每个考虑不周都会导致一大堆的错误出现,常常令人感到一种无力感,想要放弃。 当程序一步步接近完成,看着子函数一个个都运行成功,再组合到一起,那种喜
20、悦是无与伦比,之前所受到的苦楚又是那么的微不足道。更怎强了我对汇编语言的兴趣。 6.2 调试过程及分析 在进行调试的过程中遇到的问题层出不穷,但大多是因为一些粗心的错误。刚开始遇到最多的问题便是程序在编译时没有任何错误,链接的按钮仍然是灰色的不能够链接,茫然不知所措。上网查找资料却找不到任何相应的情况。于是就不用学校机房里的MASM,换了另外一款编译器(Masm for Windows 集成实验环境 2009.2),在进行编译时提示出错“Invalid character in the file”,在错误信息表中查得是文中使用了无效字符,多数情况下是使用了中文的标点符号。根据这款编译器中代码颜色的不同很快就发现了是在写注释的时候“;”使用错误了 VII、 7. 参考文献 [1]IBM—PC汇编语言程序设计(第2版) 沈美明 温冬婵 清华大学出版社 [2]IBM—PC汇编语言程序设计例题习题集 温冬婵 沈美明 清华大学出版社 [3]IBM—PC汇编语言程序设计实验教程 沈美明 温冬婵 清华大学出版社 [4]汇编语言课程设计案例精编 李珍香 刘红梅 水利水电出版社 [5]计算机硬件技术 孙德文 高等教育出版社
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818