汇编语言打字练习程序课程设计报告文档格式.docx
《汇编语言打字练习程序课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《汇编语言打字练习程序课程设计报告文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
目
题目一:
判断闰年
题目二:
简单计算器
题目三:
代码转换程序
题目四:
字符图形程序
题目五:
学生成绩管理
题目六:
打字练习 √
技
术
参
数
1.熟悉汇编指令、宏汇编语言的编程方法
2.BIOS中断调用、系统功能中断调用方法
3.磁盘文件、及文件内容操作
要
求
写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;
按回车键进入打字练习;
按ESC键返回主界面;
按空格键暂停;
按‘E’退出。
工
作
量
1.完成所选题目的软件设计;
2.课程设计说明书1000字(不包括程序源代码)左右。
划
第1次熟悉软件环境。
第2次绘制程序流程图。
第3次用编写程序。
第4次用调试运行程序。
第5次编写课程设计说明书
考
资
料
[1]温冬蝉,沈美明.IBM
PC汇编语言程序设计.第2版.北京:
清华大学出版社,2002.3
[2]王爽.汇编语言.北京:
清华大学出版社,2003.9
[3]李敬兆.8086/8088和基于ARM核汇编语言程序设计.第二版.合肥:
中国科学技术大学出版社,2008.9
指导教师签字
教研室主任签字
ﻩ2010年 12月17 日
安徽理工大学课程设计(论文)成绩评定表
指导教师评语:
成绩:
年 月 日
摘要
汇编语言是计算机能够给用户使用的最高效快捷的语言,也是唯一能对计算机所有硬件进行操纵的语言。
鉴于汇编语言的用途广泛以及重要性,我花费的大量的时间完成此次课程时机,打字练习。
打字练习是计算机常用的小应用程序,可以给想练习打字的人提供一个好的练习空间。
本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。
关键词:
功能模块,核心代码,随机字符,模块调用,功能分析
1设计目的ﻩ1
2.2主模块框图及说明ﻩ2
3详细设计4
3.1主模块及子模块说明4
3.2各模块详细设计ﻩ4
3.2.1主界面模块4
3.2.2随机字母产生模块ﻩ6
3.2.3字母落下模块ﻩ7
3.2.4暂停模块ﻩ9
3.2.5返回主界面模块ﻩ9
4.程序调试10
4.2调试过程及分析11
5心得体会ﻩ12
5.2 系统改进ﻩ12
参考文献ﻩ13
1设计目的
这次课设的任务是写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;
按回车键进入打字练习;
按ESC键返回主界面;
通过课程设计,主要达到以下目的:
ﻫ1.
增进对汇编语言的认识,加强用汇编语言编程的能力;
2.
掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;
3.
了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;
4.
通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;
5.
掌握屏幕输出显示的设计方法。
2概要设计
2.1系统总体分析
根据题目要求可以看到有以下几部分来实现打字练习:
1.由26字母乱序组成一行显示行。
2.字母自动落下。
3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。
4.按下“Ese”键则程序返回到主界面。
5.按空格键游戏暂停。
6.在主界面按“E”则程序退出。
打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。
对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。
2.2主模块框图及说明
程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。
核心模块的流程大体如下面的流程图图2-1:
E 其他键
ENTER
ENTER
是
ﻩ否
ﻩ是
是否
ﻩ
是
是
图2-1程序设计流程图
3详细设计
3.1主模块及子模块说明
主界面是程序的初始入口,也是其他功能模块的接入点。
主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。
子模块分为判断输入字符判断模块(这当中包含两个小的子模块:
主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:
打字界面返回主界面模块和主界面退出程序模块)
3.2各模块详细设计
3.2.1主界面模块
当程序运行后,我们首先要进行选择,是要继续进行即进入打字练习程序还是终止练习退出程序。
所以,在这里我们需要设置一个程序,该程序要判断键盘键入的字符,我们不妨规定ESC键和ENTER键分别为终止程序的控制键和进入打字练习程序的控制键,即当检验到键盘输入ESC后,退出程序;
当键盘输入为ENTER时进入打字练习程序。
单元程序如下:
menu db'*********************************'
0dh,0ah
db'Welcometo wordtypeexercise'
,0dh,0ah
db'
pressEnter keytocontinue.......'
0dh,0ah
db'when aletterisdropping,pleasehit it!
'
0dh,0ah
db '
pressspacekey topause!
,0dh,0ah
db'
press ESC key toreturnmaininterface!
,0dh,0ah
db 'press letterEtoexit!
0dh,0ah
db '
*********************************$'
以上设置主界面的显示方式。
clear_screen00d,00d,24d,79d
Init_write00d,00d,0ah,dl,80d,nextsign1
Init_write 24d,00d,0ah,dl,80d,nextsign2
Init_write00d,00d,0ah,dh,25d,nextsign3
Init_write00d,79d,0ah,dh,25d,nextsign4
menu05d,15d,ZK ;
菜单信息的宏调用
menu07h,15d,no
menu09d,15d,meg
menu11d,15d,meg1
menu13d,15d,meg2
menu 15d,15d,meg3
menu17d,15d,meg4
put:
movah,02h ;
设置光标位置
movbh,00h
mov dh,22d
movdl,33d
int10h
movah,01h ;
从键盘输入任意字符
int21h
cmpal,0dh
jespeed3
cmpal,45h
jeexit
以上代码是清屏,并调用宏实现主界面的显示,并在主界面中设置了菜单显示后的光标位置,以方便使用者的操作。
in_cycle:
addcx,01h
cmpcx,1000
jnein_cycle
pushdx
movah,06h;
从键盘输入字符
movdl,0ffh
int21h
pop dx
jz pass
cmpal,1bh ;
如果键入ESC,则返回主菜单
jeto_start1
cmpal,""
;
如果键入SPACE,则游戏暂停
jepause
cmp al,[di] ;
输入字母正确!
则字母消失
jedisappear
to_start1:
;
返回主菜单
jmp start
上述程序段中用到了中断INT21,利用中断的有关规定,先将01H存入到AH当中,则AL中即为由键盘键入的字符。
在此,先通过CMP指令来判断输入的字符是否是ENTER键(ENTER键的ASCII码为十六进制的0DH,程序开头部分的宏定义已经令CR为0DH),如果是的话,程序将跳转到程序disappear,disappear是定义的又一个程序,该程序即为打字练习程序的核心部分。
如果不是ENTER的话,将执行下一条指令,即判断键盘键入的是否为E键,此功能由CMP AL,1BH来实现,其中1BH是E键的ACSII码的十六进制的表示。
如果是E键的话,程序将跳转到TZD_1子程序,再通过TZD_1程序来判断是否要退出打字练习程序。
如果键盘键入的既不是ENTER也不是E键的话,程序将继续等待键盘的输入,直到输入的按键为ENTER和E当中的一个为止。
3.2.2随机字母产生模块
当用户选择继续运行程序且进入打字练习界面时,则程序需要首先为用户输出一列随机的字符序列,这时程序就需要自动的调用产生随机字符序列的程序。
程序段如下:
lettersdb"
jwmilzoeucgpravskntxhdyqfb"
db "iytpkwnxlsvxrmofzhgaebudjq"
db "
nwimzoexrphysfqtvdcgljukda"
letters_bakdb "
jwmilzoeucgpravskntxhdyqfb"
db"
iytpkwnxlsvxrmofzhgaebudjq"
db"
nwimzoexrphysfqtvdcgljukda"
letter_counterdb0
begin:
clear_screen01d,01d,23d,78d;
清屏宏调用
clear_screen01d,01d,23d,78d
Init_write23d,01d,01h,dl,78d,nextsign5