汇编语言打字练习程序实验报告 2

时间:2024.5.15

课程设计说明书

题目: 打字练习

院 系:

专业班级:

学 号:

学生姓名:

指导教师:

20xx年 12 月 31 日

汇编语言打字练习程序实验报告2

安徽理工大学课程设计(论文)任务书 计算机科学与工程学院 硬件 教研室

汇编语言打字练习程序实验报告2

20xx年 12月 17 日

安徽理工大学课程设计(论文)成绩评定表

汇编语言打字练习程序实验报告2

摘要

在IBM-PC系统中,驻留的ROM中有8KB的BIOS。它实现对系统中种种常用设备的输入输出操作的管理。其中的16H中断调用即为键盘输入输出中断调用,实现从键盘输入字符到AL寄存器、读键盘缓冲区字符到AL寄存器、读取特殊功能键的状态等功能。本程序是一个在键盘上打字练习的程序,运行可执行程序后,出现主界面,按回车键出现由78个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC健返回主界面;按空格键暂停;按’E’退出。

关键词:中断调用,打字练习,回车键进入,空格键暂停

目录

1设计目的 ..................................................1

2概要设计 ..................................................2

2.1 系统总体分析 ................................................................ 2

2.2 主模块框图及说明 ............................................................ 2

3详细设计 ..................................................4

3.1 主模块及子模块说明 .......................................................... 4

3.2 各模块详细设计 .............................................................. 4

4程序调试 .................................................10

4.1 运行界面分析 ............................................................... 10

4.2 调试过程及分析 ............................................................. 12

5心得体会 .................................................13

5.1 设计体会 ................................................................... 13

5.2 系统改进 ................................................................... 13

参考文献...................................................14

I

安徽理工大学课程设计(论文)

1设计目的

汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。由于汇编语言如此的接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。由此可见汇编语言的重要性,学好这门课程,同样可为相关的专业打下基础。

汇编语言程序设计课程设计是在教学实践基础上进行的一次试验,也是对该课程所学理论知识的深化和提高。因此,要求学生能综合应用所学知识,设计和制造出具有具有一定功能的应用系统,并且在实验的基本技能方面进行了一次全面的训练。

此外,它还可以培养学生综合运用所学知识独立完成汇编程序课题的能力,使学生能够较全面的巩固和应用课堂上所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。

再者,它同样可以提高学生运用理论去处理实际问题的能力和独立思考的能力,使学生的编程思想和编程能力有所提高,最终达到熟练地掌握编写汇编源程序的基本方法的目的。

-1-

安徽理工大学课程设计(论文)

2概要设计

2.1 系统总体分析

此程序的主要目的是在DOS界面下实现打字练习的功能。具体实现中从总体来看包括以下几个主要模块:界面显示模块、字母输入正确与否的相关处理模块,按下空格键后如何实现暂停和继续的功能模块,按下‘E’实现退出功能的模块以及按下ESC键后返回主界面模块等。

2.2 主模块框图及说明

打字练习程序的主要功能模块图如图2-1:

图2-1 程序主要功能模块图

程序执行流程图如图2-2:

汇编语言打字练习程序实验报告2

-2-

安徽理工大学课程设计(论文)

图2-2 程序流程图

汇编语言打字练习程序实验报告2

-3-

安徽理工大学课程设计(论文)

3详细设计

3.1 主模块及子模块说明

界面显示模块:主要包括两部分,运行可执行程序显示主界面以及按下Enter键显示78个字母组成的乱序行。

字母输入正确与否的相关处理模块:当字母输入正确后字母在当前位置消失并在原字母位置产生新的字母;当字母输入错误时,界面上字母下方的笑脸置为空格。

按下空格键的相关处理模块:字母下落时按下空格键,则字母在当前位置暂停,直到你再次键入空格键后字母才会继续下落,否则保持暂停状态并一直持续下去。

实现退出和返回功能模块:进入主界面后,按下‘E’则程序退出;进入字母下落界面按下ESC键程序则返回主界面。

3.2 各模块详细设计

界面显示模块:采用宏调用的方式将界面清屏并显示主界面和字母组成的乱序行界面,如图3-1:

图3-1 界面显示模块

字母输入正确与否的相关处理模块:当输入字母的ASCII码与当前下落字母的ASCII码相同时,字母在当前位置消失并在原字母位置产生新的字母;当字母输入错误时,界面上字母下方的笑脸置为空格。

按下空格键的相关处理模块:字母下落时按下空格键,则字母在当前位置暂停,直到程序判断出你再次键入的键为空格键时字母才会继续下落,否则保持暂停状态并一直等待键盘输入。

汇编语言打字练习程序实验报告2

-4-

安徽理工大学课程设计(论文)

实现退出和返回功能模块:进入主界面后,按下‘E’则程序退出;进入字母下落界面按下ESC键程序则返回主界面。

程序主要功能代码及其说明如下:

clear_screen macro op1,op2,op3,op4 ;清屏宏定义

mov ah,06h

mov al,00h

mov bh,07h

mov ch,op1

mov cl,op2

mov dh,op3

mov dl,op4

int 10h

mov ah,02h ;设置光标位置

mov bh,00h

mov dh,00h

mov dl,00h

int 10h

endm

menu macro op1,op2,op3 ;菜单显示宏定义

mov ah,02h

mov bh,00h

mov dh,op1

mov dl,op2

int 10h

mov ah,09h

lea dx,op3

int 21h

endm

clear_screen 00d,00d,24d,79d ;清屏

menu 05d,15d,WP ;

menu 07h,15d,date

-5- 菜单信息的宏调用

安徽理工大学课程设计(论文)

menu 09d,15d,meg

menu 11d,15d,meg1

menu 13d,15d,meg2

menu 15d,15d,meg3

menu 17d,15d,meg4

put: mov ah,02h ;设置光标位置 mov bh,00h

mov dh,22d

mov dl,33d

int 10h

mov ah,01h ;

int 21h

cmp al,0dh ;

je speed3

cmp al,45h ;

je exit

exit: mov ah,4ch

int 21h

speed3: mov ax,speed

mov speed,ax

jmp begin

nextletter:

mov ah,02h ;

mov dl,[si]

int 21h

inc si

inc cx

cmp cx,78d

je nextcycle

jmp nextletter

nextcycle:

lea di,letters 从键盘输入任意字符 如果键入为Enter,则开始 如果键入为'E',则退出 显示字母 判断字母位置是否在屏幕范围内

-6- ;

安徽理工大学课程设计(论文)

lea si,position_flag

add present_position,30d ;控制下一个字母的位置 cmp present_position,78

ja from_front ;若不在则跳转

out_cycle: ; 延迟

push cx

mov cx,00h

in_cycle:

add cx,01h

cmp cx,1000

jne in_cycle

push dx ;

mov ah,06h ;

mov dl,0ffh

int 21h

pop dx

jz pass ;

cmp al,1bh ;

je to_start1

cmp al," " ;

je pause

cmp al,[di] ;

je disappear

pass: pop cx

inc cx

cmp cx,speed

je print

jmp out_cycle

pause: push dx ;

mov ah,06h

mov dl,0ffh

int 21h

pop dx ;字符在每一位置所停留时间,延迟 保存之前字符位置 从键盘输入字符 字符在左上则转移 如果键入ESC,则返回主菜单 如果键入SPACE,则游戏暂停 输入字母正确!则字母消失 ;字符下落速度,也起延迟作用 暂停处理

-7-

安徽理工大学课程设计(论文)

cmp al," "

jne pause

jmp pass ;若输入空格则继续

to_start1: ;返回主菜单

jmp start

print:

mov ah,0ah ;在当前光标位置写空格 mov al," "

mov bh,00h

mov cx,01h

int 10h

inc dh

mov ah,02h ;改变光标位置

mov bh,00h

int 10h

mov ah,0ah ;在当前光标位置写字母 mov al,[di]

mov bh,00h

mov cx,01h

int 10h

pop cx

inc cx

cmp cx,21d

je print_next_letter

jmp nextrow ;下一行

disappear: ;击中字母后输出空格 pop cx

pop cx

mov ah,0ah

mov al," "

mov bh,00h

mov cx,01h

int 10h

jmp hit

-8-

安徽理工大学课程设计(论文)

hit: mov ah,02h

mov bh,00h

mov dh,01h

mov dl,present_position

int 10h

mov al,[di] ; 出现下一个新字母的算法 add al,7

cmp al,7ah

ja convey_letter

mov ah,0ah

mov bh,00h

mov cx,01h

int 10h

mov [di],al

add letter_counter,01h

jmp nextcycle

-9-

安徽理工大学课程设计(论文)

4程序调试

4.1 运行界面分析

运行可执行程序后出现主界面,主界面如图4-1:

汇编语言打字练习程序实验报告2

图4-1 主界面

键入Enter键后出现78个字母组成的乱序行并且字母下落,如图4-2:

汇编语言打字练习程序实验报告2

图4-2 78个字母组成的乱序行

这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失。如果输入不正确,界面中的笑脸变为空格,如图4-3:

-10-

安徽理工大学课程设计(论文)

汇编语言打字练习程序实验报告2

图4-3 输入不正确后,笑脸变为空格

按空格键暂停,如图4-4:

汇编语言打字练习程序实验报告2

图4-4 按空格键字母下落暂停

再按下空格键时字母继续下落,如图4-5:

-11-

安徽理工大学课程设计(论文)

汇编语言打字练习程序实验报告2

图4-5 再次按下空格键时字母下落

按下ESC键则返回主界面。

4.2 调试过程及分析

用汇编编译软件MASM对编写的源程序(wordgame.asm)进行编译,连接,运行,并在dos界面下运行debug命令debug wordgame.exe,然后执行可执行程序进入主界面。起初连接后出现了下面的问题:

汇编语言打字练习程序实验报告2

后来才注意到将文件保存的路径中应该不能含中文,如图4-6:

汇编语言打字练习程序实验报告2

图4-6 文件保存路径不合理图

在接下来的运行过程中,基本上没遇到什么特别大的问题。

-12-

安徽理工大学课程设计(论文)

5心得体会

5.1 设计体会

本次的课程设计是我接触的第一门用低级语言实现的课程设计,相对于高级语言来说,汇编语言的确有许多的难度,相似的编程思想用汇编语言实现也确实比用高级语言实现要复杂的多。但不管怎样,此次的课程设计我还是顺利的完成了,并且学到了许多东西,尽管花了许多的精力和时间,我感觉一切都是值得的。

此次的课程设计,使我更深刻的感受到了编写程序的一般流程:确定程序的主要框架,然后画出流程图,继而对具体的模块逐一的实现。此思想尤其对汇编语言比较实用,这是因为汇编语言编程相对其他语言编程比较复杂,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。

此次的课程设计,也激发了我对编程中遇到的问题的思考,有效地提高了我对汇编的认识和理解,尤其是一些常见指令的应用,比如宏指令的应用、与地址转移有关的指令以及常见的中断调用的使用等等。但我最大的收获就是我掌握了用汇编语言编写程序解决实际问题应该具备的条件:要想写好汇编语言的程序,必须认真的对待代码的每个细节,还必须熟练地掌握debug命令,这对程序的调试是非常重要的。

但非常诚恳的说,这个课程设计的完成并不是我个人的功劳。刚开始我参考了网上的代码并尝试着阅读,但由于代码太长,所以有一些细节不是太懂,最后通过查阅相关的资料、向同学的咨询和老师的指导,基本上能把程序看的比较透彻,在此非常感谢你们的帮助。接下来就是对代码进行了相应的修改,其中修改的部分主要有控制字母下落速度、将代码简化等。但由于时间有限,其他部分改的不多,但每个模块的具体实现原理我都了解的比较透彻。

5.2 系统改进

此程序虽然基本功能都能实现,那么它是不是很完美呢?绝对不是。下面谈一下系统中尚存在的一些问题及其解决方案:首先源程序的代码量相当大,有些代码还可以进一步的优化;其次程序的界面设计还不是很漂亮;再者还存在一个问题就是,当78个乱序行的字母都落下时,笑脸消失完了,然而字母依然在下落,实际上应该让打字练习结束比较好些,针对这个问题可以进一步的进行完善,比如退出程序或返回主界面均可以;此外程序的功能尚且比较简单,还可以添加一些比较复杂的环节,比如打字结束后统计你所取得的成绩,并对打字情况评个级别等等,总之还有许多可以改善的空间。 针对以上的问题,今后的时间里我会不断地完善,以求更好的应用于实际生活中。

-13-

安徽理工大学课程设计(论文)

参考文献

[1]李敬兆等编.《汇编语言程序设计》.合肥:中国科学技术大学出版社,2008.9

[2]李敬兆等编.《汇编语言程序设计实验教程及习题解答》.合肥:中国科学技术大学出版社,2008.9

[3]王爽等编.《汇编语言》.北京:清华大学出版社,2003.5

[4]曹加恒等编.《新一代汇编语言课程设计》.北京:高等教育出版社,2003.6

[5]杨路明等编.《汇编语言程序设计》.长沙:中南大学出版社,2005.8

[6]詹仕华等编.《汇编语言程序设计》.北京:中国电力出版社,2008.2

[7]詹仕华等编.《汇编语言程序设计习题解答及课程设计、设计辅导》.北京:中国电力出版社,2008.2

[8]宋彩莉等编.《汇编语言程序设计学习指导》.西安:西安交通大学出版社,2008.2

-14-

更多相关推荐:
汇编语言程序设计实验报告

实验报告实验名称专业班级信息安全学号姓名实验一汇编语言上机过程和Debug常用调试命令一实验目的学习程序设计的基本方法和技能熟练掌握用汇编语言设计编写调试和运行程序的方法二实验题目熟悉与实验有关的系统软件如编辑...

汇编语言程序设计实验报告

汇编语言实验报告题目1实验方法2用表格形式显示字符3分类统计字符个数4查找电话号码学生学院计算机学院专业班级06学号31学生姓名指导教师2008年6月1日计算机学院06专业班组学号姓名协作者实验题目实验方法实验...

汇编语言程序设计实验报告

学生实验报告册20xx20xx学年第1学期实验名称汇编语言程序设计学院信息与电气工程学院班级09级计算机科学与技术2班学号13514031姓名于志佳指导教师徐静实验一DEBUG的使用实验目的1熟悉在计算机上建立...

汇编语言子程序结构实验报告

XXXX学院信息学院实验名顺序结构程序设计实验室实验楼403实验日期20xx61912345

汇编语言程序设计实验报告

汇编语言程序设计实验报告实验室S318最后一次实验时间20xx年5月18日第12周星期二12节学院计算机科学与技术学院专业计算机科学与技术实验一实验题目认识Tddebug集成环境实验目的1234熟悉汇编程序的开...

汇编语言程序设计实验报告

12345678910111213141516171819

汇编语言程序设计实验报告

汇编语言程序设计实验报告姓名班级汇编语言程序设计实验报告姓名班级汇编语言程序设计实验报告姓名班级

汇编语言第7次实验报告:非数值运算程序设计

四川大学计算机学院软件学院实验报告123456789

计组实验报告基础汇编语言程序设计实验

基础汇编语言程序设计实验实验目的1了解教学计算机的指令格式指令编码选择的寻址方式和每一条指令的具体功能为进一步学习运算器组成和控制器设计打好基础2了解汇编语言的语句与机器语言的指令之间的对应关系了解伪指令在汇编...

汇编语言程序设计报告

课程设计报告20xx20xx年度第1学期名称汇编语言程序设计报告题目院系班级学号学生姓名指导教师设计周数成绩日期20xx年12月30日课程课程设计综合实验报告一课程设计综合实验的目的与要求1掌握实验运行汇编语言...

汇编语言程序设计综合实验报告

西安财经学院信息学院《汇编语言程序设计》实验报告实验名综合实验程序设计实验室实验日期20##-12-15一、实验目的及要求1.悉debug命令,学习汇编语言的调试环境;2.熟练撑握一些简单程序的调试,理解基本的…

简易计算器的汇编语言程序设计报告

设计内容计算器程序设计学院信息管理学院班级会计1204班制作人员史凡史明坤学号1220xx4149指导教师周作涛1目录一程序功能设计界面错误未定义书签二程序流程图及其说明错误未定义书签1程序流程图42流程图说明...

汇编语言程序设计实验报告(33篇)