汇编-打字练习程序设计论文

发布时间:2024-08-27

课 程 设 计

题 目

打字练习程序设计 教 学 院 计算机学院 专 业

计算机科学与技术

班 级 姓 名 指导教师

目 录

一 概 述 ......................................................................................................... 1

1. 汇编语言介绍 ...................................................................................................................................... 1 2.背景分析及意义 .................................................................................................................................. 1 3.课程设计的目的 .................................................................................................................................. 2 4.课程设计的要求 ................................................................................................................................... 3 5.开发平台 ............................................................................................................................................... 3

二 总体方案设计 .............................................................................................. 4

1. 程序设计的整体设计思路 .............................................................................................................. 4 2. 算法的整体设计思路 ........................................................................................................................ 5 3. 程序的主要特点 ................................................................................................................................ 5 4. 主要解决的关键性问题 .................................................................................................................... 6

三 详细设计 ..................................................................................................... 8

1. 流程图 .............................................................................................................................................. 8 2. 主界面伪代码 .................................................................................................................................... 9 3.等级界面伪代码 ................................................................................................................................ 9 4. 游戏界面伪代码 .............................................................................................................................. 10 5. 清屏子程序设计 .............................................................................................................................. 10 6.密码程序设计 .................................................................................................................................... 11 7.得分程序设计 .................................................................................................................................... 12

四 运行结果说明 ............................................................................................ 14 五 课程设计优化 ............................................................................................ 17 六 课程设计总结 ............................................................................................ 19 参考文献 ........................................................................................................ 20

一 概 述

1. 汇编语言介绍

汇编语言程序设计是计算机专业的重要基础课程,是计算机应用开发人员必须接受的最重要的专业基础训练之一,是计算机软,硬件研究的基础,是一个优秀计算机工作者必须掌握的基础知识和基本技能。

汇编语言也是计算机能够提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言.因而,对程序的空间和时间的要求很高的场合,汇编语言的应用是必不可少的。 汇编语言的特点:

(1)面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。 (2)保持了机器语言的优点,具有直接和简捷的特点。

(3)可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

(4)目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 (5)经常与高级语言配合使用,应用十分广泛。

2.背景分析及意义

当前,在计算机上和许多的手机上都流行许多小游戏.比如:贪食蛇,俄罗斯方块等等这些小游戏的流行给我们的生活带来了更多的快乐.因此,我们学计算机的也有了更多的用武之第.所以,用汇编语言编写了一个帮助我们练习打字的小程序.这样不仅让我们学习打字,更重要的是能让我们更好的掌握学过的知识,锻炼我们的编程技能

随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。而汇编语言作为计算机专业学生的专业必修课,每个作为本专业的学生对汇编的理解和学习就显得尤为重要。汇编语言是计算机能够提供用户使用的最快而又最好最有效的与言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。学习汇编语言能够充分获得底层编程的体验,深刻理解机器运行程序的机理,这使我们在接触复杂变化的计算机知识时变得清晰和顺畅。

《打字练习程序设计》课程设计是在教学实践基础上进行的一次大型实验,

也是对该课程所学理论知识的深化和提高。因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。通过具体的问题分析、设计、调试、运行程序。在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。就这个程序具体而言:调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。

3.课程设计的目的

《打字练习程序设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。

(1)使学生增进对汇编语言的认识,加强用汇编语言编程的能力。

(2)使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。

(3)通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中.

(4)进一步掌握屏幕输出显示的设计方法.

(5)能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。

(6)培养综合运用所学知识,独立完成汇编程序课题的能力。

(7)培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。

(8)提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 (9)培养从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。

(10)对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

4.课程设计的要求

汇编语言是计算机能够提供给用户的最便捷和最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的一种语言。通过这次实验要求我们:

(1) 了解背景颜色以及字体颜色的设置。 (2) 了解清屏、上卷等函数的用法。

(3) 学会使用宏定义,宏过程,宏函数以及各种参数的调用。 (4) 能够熟练地使用BIOS功能或DOS功能下的调用。 (5) 学会用汇编语言编辑中断程序。

通过打字练习程序的编写熟悉并掌握用汇编语言编程的方法与特点,借此来比较高级语言与机器语言的优缺点,以便能更好的利用各种语言来开发应用软件,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能够独立阅读、编辑和调试具有一定规模的汇编语言程序的能力,能够熟练运用汇编语言的三大结构,进一步掌握各种指令的功能,能掌握子程序的定义与调用,包括段间调用与段内调用,以及正确运用DEBUG命令,进一步理解和掌握程序直接控制I/O方式。

5.开发平台

开发环境:Windows平台+MASM环境 开发语言:汇编语言

二 总体方案设计

1. 程序设计的整体设计思路

用汇编语言实现打字程序的思想,首先用BIOS的10H中断类型的02H功能置光标位置,接着用DOS的21H中断类型的09H功能显示字符串来显示主界面;调用DOS的21H的08H功能,接受从键盘输入的字符到AL寄存器,判断AL如果为回车以默认速度开始游戏(比如:运行程序时,出现菜单主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按ESC键返回主界面;按空格见暂停;按‘E’退出。)

进入速度选择界面后,调用DOS的21H的08H功能,选择速度后进入游戏; 进入游戏后,随机落下一字母,通过21H的06H功能调用,接受从键盘输入的字符到AL寄存器,如键入ESC进入成绩界面,如键入空格则暂停游戏,如没有得到输入或输入错误则继续下落,输入正确则字母消失,并通过21H的02H功能调用发生响铃;接着继续下落其他字母, 进入成绩界面后通过DOS的21H的02H功能调用显示击中字母的个数和丢失字母的个数。

在设计本课题之前,要考虑两个问题:一是如何从键盘输入并显示字符;二是如何在输入时进行计时。在我们的设计中,我采用的是通过中断机构。由于系统在BIOS中已配备了键盘的服务功能,因此可通过调用键盘的DOS和BIOS功能编程。而且设计中使用的都是软件中断,故在具体的程序设计时,需要禁止硬件中断。计时部分我们也是通过定时器的中断来实现。由于定时器中断优先级比键盘高,只要在键盘中断处理程序中用一条STI指令允许高级中断,那么在整个打字的过程中,定时器会产生中断。根据计时的需要,在整个打字过程中,再使用自编的中断例行程序可把定时器中断的次数转换成时间。

在键盘打字时采用09类型的键盘中断,来取得输入字符并将字符显示在屏幕上。程序设计时,预先设置的堆栈中存放一些字符串例句,每次打字之前,屏幕上先显示出一个字母,然后打字员按照字母,将字母通过键盘输入。这个过程可反复进行,当键入一个功能键时,退出打字计时程序。自行编制键盘中断和时间中断处理程序,并保存原中断向量。程序运行时,使用自编的中断向量处理程序。程序退出时,恢复中断向量。

自编中断处理程序也是本课题需要考虑的重要问题。虽然系统自带了许多中断例行程序可以由INT指令来执行,但在本课题中需要对原中断例行程序的功能进行扩充才可。

该打字程序包括以下六个子程序: (1)主界面的显示模块; (2)打字练习模块; (3)设置速度模块; (4)密码模块; (5)清屏模块; (6)打印得分模块;

2. 算法的整体设计思路

用汇编语言实现打字程序的思想,首先用BIOS的10H中断类型的02H功能置光标位置,接着用DOS的21H中断类型的09H功能显示字符串来显示主界面;调用DOS的21H的08H功能,接受从键盘输入的字符到AL寄存器,判断AL如果为回车以默认速度开始游戏,如为S键则进入速度选择界面,如为E键则退出程序;进入速度选择界面后,调用DOS的21H的08H功能,选择速度后进入游戏;进入游戏后,随机落下一字母,通过21H的06H功能调用,接受从键盘输入的字符到AL寄存器,如键入ESC进入成绩界面,如键入空格则暂停游戏,如没有得到输入或输入错误则继续下落,输入正确则字母消失,并通过21H的02H功能调用发生响铃;接着继续下落其他字母,如果落下的字母数大于78个则退出游戏进入成绩界面。进入成绩界面后通过DOS的21H的02H功能调用显示击中字母的个数和丢失字母的个数。

此程序涉及到宏和I/O中断的调用,通过对宏的定义和使用以及对I/O中断的使用,实现程序的相应功能。利用宏,实现各个界面的显示,采用中断,实现各个子程序的相互转换。其中最主要的是打字程序:运行程序,打字界面中出现由26个字母组成的乱序行,这时其中会有任一字母落下,在键盘上输入该字母,字母消失,分数值加1,否则字母一直移动到屏幕底端,然后消失。当未在字母下落到屏幕底端之前输入该下落字母时,打字练习结束,显示结束界面。

3. 程序的主要特点

本程序最大的特点就是具有较好的人机交互功能。在主界面中,用户可以选择不同的游戏等级,他们能够根据自己的实际打字速度,选择相匹配的等级

进行打字练习。通过调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。此外,根据用户的打字情况,我们会给予他们相应的分数,并且达到相应分数给予文字提示,表示鼓励(如:显示“VERY GOOD”)

4. 主要解决的关键性问题

在本程序设计中我主要承担游戏过程中玩家击中字母分数累加的程序设计,主要运用BIOS的10H中断类型的02H功能置光标位置,接着用DOS的21H中断类型的09H功能显示字符串来显示得分。由于老师的要求,我在原程序代码上又加了一些人性化界面,使游戏者在打到相应字数时,给予鼓励(如:显示“VERY GOOD”)。

以下为修改程序代码:

POINT PROC NEAR DIS2

MOV AH,2 MOV BH,0 MOV DH,11 MOV DL,67

INT 10H ;置光标位置 计分的 位置 MOV AL,M

T: CMP AL,10

JAE X9 ADD AL,30H MOV DL,AL

CMP AL,30 ;击中30次显示 jnz T

DIS1 ST9 20,60 ;显示“VERY GOOD”

MOV AH,02H ;显示得分 一位 INT 21H JMP X10

X9:

MOV AL,M MOV AH,0 MOV DL,10 DIV DL

PUSH AX MOV AH,2 MOV BH,0 MOV DH,11 MOV DL,67

INT 10H ; ADD AL,'0' MOV DL,AL INT 21H POP AX

MOV AL,AH MOV AH,2 MOV DH,11 MOV DL,68 INT 10H ADD AL,'0' MOV DL,AL INT 21H X10: DIS3

RET POINT ENDP 打印十位

三 详细设计

1. 流程图

本次程序开始是一个主界面,在主界面上包括四个选项,第一个选项是进入打字子程序,第二个是选择进入等级设置子程序,第三个是进入帮助子程序,第四个是退出主界面,以下是程序的主流程图:

图3-1 流程图

STR1 DB ' Welcome to play chars',0AH,0DH, '$' STR2 DB ' Made by zhangxiang zhangning yinfeng wanghanfei wujingxian',0AH,0DH, ' $'

STR3 DB ' 2011/9/29 ',0AH,0DH, ' $'

STR4 DB ' Please choose speeding',0AH,0DH, ' $' STR5 DB ' Please press Enter to cintinue... ',0AH,0DH, ' $'

STRA DB ' <------Please choose----->',0AH,0DH, '$' STRB DB 'score: ', 'i',0AH,0DH, '$' STRC DB 'You choose: ',0AH,0DH, '$' STRD jktru', '$'

STRE DB ' RIGHT: ', '$'

MES5 DB "PLEASE ENTER YOUR PASSWORD :$"

DB "111111" DB 6 DUP(?)

PASSWORD PASSWORD1

DB

'hqfuvodepfdjygnhtrwgaerjrklubgsnyrsbntrsbngtrdjykuahtrgregfytjgfjyt

3.等级界面伪代码

在主界面中选择2,进入等级界面的设置,其中有3个等级,代表不同的难易程度。用户可选则其中的任意一个级别,按Enter键表示确定并返回主界面,若用户输入的错误的等级,则一直等待,直到输入了正确的等级。

以下是等级界面的伪代码:

STR7 DB ' speed 1',0AH,0DH, ' $' STR8 DB ' speed 2',0AH,0DH, '$' STR9 DB ' speed 3',0AH,0DH, '$'

STR0 DB ' Select the number among 1-3',0AH,0DH, '$'

此伪代码显示的是进入打字界面的提示信息:

ST1 DB ' RIGHT: Pause',0AH,0DH, '$' ST2 DB ' E : Quit',0AH,0DH, '$' ST8 DB ' Esc: Back',0AH,0DH, '$' ST3 DB ' Function Meun',0AH,0DH, '$' ST4 DB ' please input... ',0AH,0DH, '$' ST5 DB ' SPACE: Continue',0AH,0DH, '$' ST6 DB ' Thank You ! ',0AH,0DH, '$'

ST10 DB ' ',0AH,0DH, '$'

ST9 DB ' VREY GOOD ! ',0AH,0DH, '$'

5. 清屏子程序设计

BIOS功能调用中的INT 10H功能6能使屏幕内容上卷指定的行,这个功能需要设置4个参数,分别代表清屏区域的左上角的坐标和右下角的坐标。如果屏幕的其实行列不为(0,0)结束的行列不为(24,79),则屏幕上只有指定的一部分具有上卷的功能,这个屏幕伤的部分区域叫做窗口(window)像这样的窗口可以在屏幕上设置多个,这些窗口都可以独立使用。如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口底部的新行被填为空格,其属性用BH寄存器决定。

如果AL=0,则实现完成的工作是清楚屏幕的功能,它将按AL中的BH字符使指定的窗口为空白。

以下是清除全屏幕的子程序:

CLEAR PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6

MOV AL,0 ;blank screen MOV BH,7

MOV CH,0 ;左上角行号 MOV CL,0 ;左上角列号 MOV DH,24 ;右下角行号 MOV DL,79 ;右下角列号 INT 10H ;屏幕初始化或上卷 MOV DX,0 ; MOV AH,2

INT 10H ;

DIS5 25D,11110100B ;景红

DIS3 RET CLEAR ENDP 6.密码程序设计

DIS1 MES5,5,15 LEA BX,PASSWORD1 MOV CX,6 INPUT:

MOV AH,07H INT 21H MOV [BX],AL INC BX MOV AH,02H MOV DL,'*' INT 21H LOOP INPUT CONTIUN:

MOV AH,07H INT 21H

CMP AL,0DH

行列号都为0 置光标位置 置背景色 背景白色 前

MOV CX,6 LEA SI,PASSWORD LEA DI,PASSWORD1 CHECK:

MOV AL,[SI] CMP AL,[DI] JNE START INC SI INC DI

LOOP CHECK

7.得分程序设计

POINT PROC NEAR DIS2

MOV AH,2 MOV BH,0 MOV DH,11 MOV DL,67

INT 10H ;位置

MOV AL,M CMP AL,10 JAE X9 ADD AL,30H MOV DL,AL

MOV AH,02H ; INT 21H JMP X10 X9: MOV AL,M MOV AH,0 MOV DL,10 DIV DL

置光标位置显示得分 一位 计分的

PUSH AX MOV AH,2 MOV BH,0 MOV DH,11 MOV DL,67

INT 10H ;打印十位 ADD AL,'0' MOV DL,AL INT 21H POP AX

MOV AL,AH MOV AH,2 MOV DH,11 MOV DL,68 INT 10H ADD AL,'0' MOV DL,AL INT 21H X10: DIS3 RET

POINT ENDP

四 运行结果说明

1. 进入程序运行界面后,将会出现以下界面:

图4-1 密码界面图

这是运行程序后出现的第一个界面,要求游戏人,输入正确密码,如果密码正确,则调入下个界面,进行后面的选择,否则将会一直停留在该界面,直至密码正确位置。

2. 输入密码后,进入主界面:

图4-2 主界面

该界面是显示

输入正确密码后出现的界面,界面上显示了本组打字游戏程序设计的参与人员以及时间,同时指示了下一部具体的操作。

3. 按ENTER键后,进入等级选择界面

    精彩图片

    热门精选

    大家正在看