汇编课程设计 打字练习课程设计论文.docx
- 文档编号:30136989
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:46
- 大小:81.63KB
汇编课程设计 打字练习课程设计论文.docx
《汇编课程设计 打字练习课程设计论文.docx》由会员分享,可在线阅读,更多相关《汇编课程设计 打字练习课程设计论文.docx(46页珍藏版)》请在冰豆网上搜索。
汇编课程设计打字练习课程设计论文
学号:
200940410101
课程设计
题目
打字练习
教学院
计算机学院
专业
09计算机科学与技术
班级
09计科
(1)班
姓名
张祥
指导教师
姚莉
2011
年
10
月
04
日
一概述
1.背景分析及意义
随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。
而汇编语言作为计算机专业大学生必修课,每个作为本专业的学生对汇编的理解和学习就显得尤为重要。
汇编语言是计算机能够提供用户使用的最快而又最好最有效的与言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。
《打字练习程序设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。
因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。
通过具体的问题分析、设计、调试、运行程序。
在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。
就这个程序具体而言:
调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。
这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。
2.课程设计的目的
(1)能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。
(2)培养综合运用所学知识,独立完成汇编程序课题的能力。
(3)培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。
(4)提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。
(5)培养从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
(6)对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。
3.课程设计的要求
汇编语言是计算机能够提供给用户的最便捷和最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的一种语言。
通过这次实验要求我们:
(1)了解背景颜色的设置。
(2)了解清屏函数的用法。
(3)学会使用宏定义,宏过程,宏函数以及参数的调用。
(4)能够熟练地使用BIOS功能或DOS功能的调用。
(5)学会用汇编语言编辑中断程序。
通过打字练习程序的编写熟悉并掌握用汇编语言编程的方法与特点,借此来比较高级语言与低级语言的优缺点,以便能更好的利用各种语言来开发应用软件,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能够独立阅读、编辑和调试具有一定规模的汇编语言程序的能力,能够熟练运用汇编语言的三大结构,进一步掌握各种指令的功能,能掌握子程序的定义与调用,包括段间调用与段内调用,以及正确运用DEBUG命令,进一步理解和掌握程序直接控制I/O方式。
4.汇编语言的介绍
汇编语言(AssemblyLanguage)是面向机器的程序设计语言,汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。
这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。
因此汇编语言亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。
汇编语言编译器把汇编程序翻译成机器语言的过程称为汇编。
汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。
但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
汇编语言的特点:
(1)面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
(2)保持了机器语言的优点,具有直接和简捷的特点。
(3)可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
(4)目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
(5)经常与高级语言配合使用,应用十分广泛。
汇编语言的应用:
(1)70%以上的系统软件是用汇编语言编写的。
(2)某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。
(3)某些高级绘图程序、视频游戏程序是用汇编语言编写的。
汇编语言直接描述机器指令,比机器指令容易记忆和理解。
通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。
5.开发平台
开发环境:
Windows平台+MASM环境
运行环境:
Windows全系列
开发语言:
汇编语言
二总体方案设计
1.程序设计的整体设计思路
要求完成一个打字练习程序,即在规定的时间内按下屏幕上显示的字母,字母就消失,否则字母一直移动到屏幕底端。
(比如:
运行程序时,出现菜单主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按ESC键返回主界面;按空格见暂停;按‘E’退出。
)
在设计本课题之前,要考虑两个问题:
一是如何从键盘输入并显示字符;二是如何在输入时进行计时。
考虑第一个问题,在PC中,对键盘的管理是通过中断机构和8255可编程序外围接口芯片来实现的。
在我的设计中,我采用的是第一种思路。
由于系统在BIOS中已配备了键盘的服务功能,因此可通过调用键盘的DOS和BIOS功能编程。
而且设计中使用的都是软件中断,故在具体的程序设计时,需要禁止硬件中断。
再考虑第二个问题,计时部分也可通过定时器的中断来实现。
由于定时器中断优先级比键盘高,只要在键盘中断处理程序中用一条STI指令允许高级中断,那么在整个打字的过程中,定时器会以每秒18.2次的频率产生中断。
根据计时的需要,在整个打字过程中,再使用自编的中断例行程序可把定时器中断的次数转换成时间。
在键盘打字时采用09类型的键盘中断,来取得输入字符并将字符显示在屏幕上。
程序设计时,预先设置的堆栈中存放一些字符串例句,每次打字之前,屏幕上先显示出一个例句,然后打字员按照例句,将句中字符通过键盘输入。
这个过程可反复进行,当键入一个功能键时,退出打字计时程序。
自行编制键盘中断和时间中断处理程序,并保存原中断向量。
程序运行时,使用自编的中断向量处理程序。
程序退出时,恢复中断向量。
自编中断处理程序也是本课题需要考虑的重要问题。
虽然系统自带了许多中断例行程序可以由INT指令来执行,但在本课题中需要对原中断例行程序的功能进行扩充才可。
该打字程序包括以下五个子程序:
(1)主界面的显示模块;
(2)打字练习模块;
(3)设置速度模块;
(4)密码模块;
(5)清屏模块。
其中的打字练习模块又分为以下三个子程序:
(a)游戏界面模
(b)功能模块
2.算法的整体设计思路
此程序涉及到宏和I/O中断的调用,通过对宏的定义和使用以及对I/O中断的使用,实现程序的相应功能。
利用宏,实现各个界面的显示,采用中断,实现各个子程序的相互转换。
其中最主要的是打字程序:
运行程序,打字界面中出现由26个字母组成的乱序行,这时其中会有任一字母落下,在键盘上输入该字母,字母消失,分数值加1,否则字母一直移动到屏幕底端,然后消失,生命值减1。
当生命值减为零且未在字母下落到屏幕底端之前输入该下落字母时,打字练习结束,显示结束界面。
3.程序的主要特点
本程序最大的特点就是具有较好的人机交互功能。
在主界面中,用户可以选择不同的游戏等级,他们能够根据自己的实际打字速度,选择相匹配的等级进行打字练习。
如果用户对我们设计的程序有不明白的地方,可以选择帮助进行求解,并能与我们联系,讨论程序的不足,寻求改进,或者分享程序中的精妙之处。
此外,根据用户的打字情况,我们会给予他们相应的分数和生命数。
三详细设计
1.流程图
本次程序开始是一个主界面,在主界面上包括四个选项,第一个选项是进入打字子程序,第二个是选择进入等级设置子程序,第三个是进入帮助子程序,第四个是退出主界面,以下是程序的主流程图:
图3-1流程图
2.主界面伪代码
STR1DB'Welcometoplaychars',0AH,0DH,'$'
STR2DB'Madebyzhangxiangzhangningyinfengwanghanfeiwujingxian',0AH,0DH,'$'
STR3DB'2011/9/29',0AH,0DH,'$'
STR4DB'Pleasechoosespeeding',0AH,0DH,'$'
STR5DB'PleasepressEntertocintinue...',0AH,0DH,'$'
STRADB'<------Pleasechoose----->',0AH,0DH,'$'
STRBDB'score:
','i',0AH,0DH,'$'
STRCDB'Youchoose:
',0AH,0DH,'$'
STRDDB'hqfuvodepfdjygnhtrwgaerjrklubgsnyrsbntrsbngtrdjykuahtrgregfytjgfjytjktru','$'
STREDB'RIGHT:
','$'
MES5DB"PLEASEENTERYOURPASSWORD:
$"
PASSWORDDB"111111"
PASSWORD1DB6DUP(?
)
3.等级界面伪代码
在主界面中选择2,进入等级界面的设置,其中有6个等级,代表不同的难易程度。
用户可选则其中的任意一个级别,按Enter键表示确定并返回主界面,若用户输入的错误的等级,则一直等待,直到输入了正确的等级。
以下是等级界面的伪代码:
STR7DB'speed1',0AH,0DH,'$'
STR8DB'speed2',0AH,0DH,'$'
STR9DB'speed3',0AH,0DH,'$'
STR0DB'Selectthenumberamong1-3',0AH,0DH,'$'
4.游戏界面伪代码
此伪代码显示的是进入打字界面的提示信息:
ST1DB'RIGHT:
Pause',0AH,0DH,'$'
ST2DB'E:
Quit',0AH,0DH,'$'
ST8DB'Esc:
Back',0AH,0DH,'$'
ST3DB'FunctionMeun',0AH,0DH,'$'
ST4DB'pleaseinput...',0AH,0DH,'$'
ST5DB'SPACE:
Continue',0AH,0DH,'$'
ST6DB'ThankYou!
',0AH,0DH,'$'
ST10DB'',0AH,0DH,'$'
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ST9DB'VREYGOOD!
',0AH,0DH,'$'
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
5.清屏子程序设计
BIOS功能调用中的INT10H功能6能使屏幕内容上卷指定的行,这个功能需要设置4个参数,分别代表清屏区域的左上角的坐标和右下角的坐标。
如果屏幕的其实行列不为(0,0)结束的行列不为(24,79),则屏幕上只有指定的一部分具有上卷的功能,这个屏幕伤的部分区域叫做窗口(window)像这样的窗口可以在屏幕上设置多个,这些窗口都可以独立使用。
如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口底部的新行被填为空格,其属性用BH寄存器决定。
如果AL=0,则实现完成的工作是清楚屏幕的功能,它将按AL中的BH字符使指定的窗口为空白。
以下是清除全屏幕的子程序:
CLEARPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,0;blankscreen
MOVBH,7
MOVCH,0;左上角行号
MOVCL,0;左上角列号
MOVDH,24;右下角行号
MOVDL,79;右下角列号
INT10H;屏幕初始化或上卷
MOVDX,0;行列号都为0
MOVAH,2
INT10H;置光标位置
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;DIS525D,10100100B;置背景色背景蓝前景红
DIS525D,11110100B;置背景色背景白色前景红
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
DIS3
RET
CLEARENDP
6.密码程序设计
DIS1MES5,5,15
LEABX,PASSWORD1
MOVCX,6
INPUT:
MOVAH,07H
INT21H
MOV[BX],AL
INCBX
MOVAH,02H
MOVDL,'*'
INT21H
LOOPINPUT
CONTIUN:
MOVAH,07H
INT21H
CMPAL,0DH
JNECONTIUN
MOVCX,6
LEASI,PASSWORD
LEADI,PASSWORD1
CHECK:
MOVAL,[SI]
CMPAL,[DI]
JNESTART
INCSI
INCDI
LOOPCHECK
7.宏代码
7.1在指定位置显示彩色字符串
;=========================================================
DIS1MACROSTRING1,Y,M
MOVAH,2
MOVBH,0;页号
MOVDH,Y;行标
MOVDL,M;列标
INT10H;置光标位置
MOVAH,09H
MOVDX,SEGSTRING1
MOVDS,DX
MOVDX,OFFSETSTRING1
INT21H;显示字符串
ENDM
;========================================================
7.2显示背景
;============================================================
DIS5MACROS1,S2
DIS2
MOVAH,6
MOVAL,0;blankscreen
MOVAL,s1;上卷25行
MOVBH,s2;绿色背景红色前景
MOVCH,0
MOVCL,0
MOVDH,0
MOVDL,80
INT10H;屏幕初始化或上卷
DIS3
ENDM
;===============================================================
7.3画横向边框的宏
;===============================================================
DIS6MACROZ1,Z2,Z3,Z4
LOCALC5;LOCAL为重复定义的定义符
DIS2
MOVCX,Z1;循环次数
MOVDL,Z2;列
C5:
MOVAH,2
MOVBH,Z3;页号
MOVDH,Z4;行
INT10H;置光标位置
PUSHDX
MOVDL,2AH
INT21H;输出‘*’
POPDX
INCDL;列++
LOOPC5
DIS3
ENDM
;===============================================================
7.4画竖边框的宏
;===================================================================
DIS7MACROQ1,Q2,Q3,Q4
LOCALF1;LOCAL为重复定义的定义符
DIS2
MOVCX,Q4
MOVDH,Q1;行
F1:
MOVAH,2
MOVBH,Q2
MOVDL,Q3;列
INT10H;置光标位置
MOVDL,2AH
INT21H
INCDH
LOOPF1
DIS3
ENDM
;=======================================================================
8.功能的进一步完善
8.1完善代码一
修改界面背景属性
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;DIS525D,10100100B;置背景色背景蓝前景红
DIS525D,01001111B;置背景色背景红前景白
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
闪烁
背景
背景
背景
亮度
前景
前景
前景
;============================================================
;显示背景
DIS5MACROS1,S2
DIS2
MOVAH,6
MOVAL,0;blankscreen
MOVAL,s1;上卷25行
MOVBH,s2;绿色背景红色前景
MOVCH,0
MOVCL,0
MOVDH,0
MOVDL,80
INT10H;屏幕初始化或上卷
DIS3
ENDM
;===============================================================
8.2完善代码二
击中下落字母后,使其显示不同的颜色
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
MOVAH,2
MOVBH,0
INT10H
PUSHax
PUSHbx
movah,9
movbh,0
movcx,1
moval,[si]
movbl,00101111B;字母击中后显示白色
INT10H
popax
popbx
callSLEEP1
MOVAH,2
MOVBH,0
PUSHDX
MOVDL,''
MOVAH,02H
INT21H;显示空格覆盖字母
INT10H;置光标位置
POPDX
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
8.3完善代码三
当游戏分数达到某一数值时,显示“VeryGood!
”
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ST9DB'VREYGOOD!
',0AH,0DH,'$'
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
CMPAL,30;击中30次显示
jnzT
DIS1ST920,60;显示“VERYGOOD”
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
四运行结果说明
1.密码界面图:
图4-1密码界面图
运行程序,将会出现以上界面,这个功能是通过字符串的一个一个的比较实现的,输入错误后,要重新输入,直到输入正确的密码。
2.主界面图:
图4-2主界面
输入密码后,进入主界面;
第一行是密码行;
第二行是欢迎语句;
第三行是组员名字;
第四行是演示代码的时间;
第五行是提示语句。
3.等级选择界面:
图4-3等级选择界面
按ENTER键后,进入等级选择界面这是一个等级选择界面,有三个等级进行选择,分别代表不同的速度,速度一次递增,只能输入1-3,直到输入正确才能开始游戏。
4.游戏界面:
图4-4游戏界面
选择等级后,进入游戏界面;
界面的左边是功能菜单,可以进行功能的选择,暂停(空格键),退出(E),返回主界面(Esc);
界面的中间是游戏区,当用击中下落的字母后,字母会变为白色,并有声音发出,表示用户击中字母;
界面的右边是记分功能,可以显示用户的当前分数,但用户的积分达到一定数值时,会显示祝贺语句。
五课程设计总结
汇编语言(AssemblyLanguage)是面向机器的程序设计语言。
汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。
是能完成一定任务的机器指令的集合。
常说汇编语言过时,是低级语言,并不是说汇编语言要被弃之,相反,汇编语言仍然是程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。
只是,现在计算机最大的领域为IT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编课程设计 打字练习课程设计论文 汇编 课程设计 打字 练习 论文