汇编打字练习.docx

上传人:b****1 文档编号:1880446 上传时间:2023-05-02 格式:DOCX 页数:27 大小:105.95KB
下载 相关 举报
汇编打字练习.docx_第1页
第1页 / 共27页
汇编打字练习.docx_第2页
第2页 / 共27页
汇编打字练习.docx_第3页
第3页 / 共27页
汇编打字练习.docx_第4页
第4页 / 共27页
汇编打字练习.docx_第5页
第5页 / 共27页
汇编打字练习.docx_第6页
第6页 / 共27页
汇编打字练习.docx_第7页
第7页 / 共27页
汇编打字练习.docx_第8页
第8页 / 共27页
汇编打字练习.docx_第9页
第9页 / 共27页
汇编打字练习.docx_第10页
第10页 / 共27页
汇编打字练习.docx_第11页
第11页 / 共27页
汇编打字练习.docx_第12页
第12页 / 共27页
汇编打字练习.docx_第13页
第13页 / 共27页
汇编打字练习.docx_第14页
第14页 / 共27页
汇编打字练习.docx_第15页
第15页 / 共27页
汇编打字练习.docx_第16页
第16页 / 共27页
汇编打字练习.docx_第17页
第17页 / 共27页
汇编打字练习.docx_第18页
第18页 / 共27页
汇编打字练习.docx_第19页
第19页 / 共27页
汇编打字练习.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

汇编打字练习.docx

《汇编打字练习.docx》由会员分享,可在线阅读,更多相关《汇编打字练习.docx(27页珍藏版)》请在冰点文库上搜索。

汇编打字练习.docx

汇编打字练习

 

攀枝花学院

学生课程设计(论文)

题目:

打字练习

学生姓名学号:

所在院(系):

计算机学院

专业:

2009计算机科学与技术

班级:

第二组

指导教师:

何老师职称:

讲师

 

2010年01月07日

 

攀枝花学院本科学生课程设计任务书

题 目

打字练习

1、课程设计的目的

1、使同学们增进对汇编语言的认识,加强用汇编语言编程的能力。

2、通过查找、运用设计资料,完成工程设计所必备的基本训练。

3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。

2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)

设计内容:

编程实现如下功能:

将26个字母中的任一字母从屏幕落下,用户要在这个过程中键入落下的字母,如果键入正确,字母消失;键入不正确,字母继续下落。

按下列要求设计主菜单:

按回车键进入打字练习;按Esc键返回主界面;按空格键暂停;按大写字母“E”程序结束。

设计思路:

循环调用BIOS的10H中断类型的09号功能,显示一个有提示信息的开始界面。

调用DOS系统功能调用的1号功能,接受从键盘输入的字符到AL寄存器,如果(AL)为空格,进入打字练习界面;如果(AL)为“E”,则退出程序。

在界面的第0行显示由26个字母组成的字符串。

字母下落的设计过程是:

(1)利用BIOS功能调用的2号功能,置光标位置。

(2)10号功能在光标位置写字母。

(3)延迟一段时间。

(4)重置光标位置(列坐标不变,改变行坐标),利用10号功能在光标位置写空格,延迟一段时间。

(5)重复

(1)~(4)。

打字练习的实现过程是:

当字母下落没有超过最大行坐标时,利用DOS系统功能调用的6号功能,接受从键盘输入的字符到AL寄存器。

如果(AL)为1BH(Esc),则转向主界面显示的程序段;如果(AL)为空格,则字母在确定光标位置显示,延迟一段时间,直到(AL)再次为空合格;如果(AL)为任意字母,则判断其是否和下落字母相同,如果相同,则在相应光标位置显示空合格;否则,字母继续下落。

重复以上过程。

操作说明:

运行可执行程序testword.exe,出现菜单主界面,按空格键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;否则,字母继续下落。

按Esc键返回主菜单;按空格键暂停;按“E”退出。

3、主要参考文献

[1]《汇编语言程序设计》,吴向军等,高等教育出版社,2002

[2]《IBM-PC汇编语言及程序设计实验教程》,沈美明等,清华大学出版社,2001

[3]《汇编语言程序设计》,钱晓捷等,电子工业出版社,2000

[4]《汇编语言程序设计案例精编》,李珍香等,中国水利水电出版社,2004

[5]《汇编语言程序设计》,白小明,中国铁道出版社,2009-8-1

[6]《汇编语言程序设计》,王成耀,姚琳,机械工业出版社,2003-03-01

4、课程设计工作进度计划

时间内容安排

1天分析设计准备

3天编程调试阶段

1天编写课程设计报告

指导教师(签字)

 

日期

年月日

教研室意见:

 

年月日

学生(签字):

 

接受任务时间:

年月日

 

课程设计(论文)指导教师成绩评定表

题目名称

打字练习

评分项目

分值

得分

评价内涵

工作

表现

20%

01

学习态度

6

遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。

02

科学实践、调研

7

通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。

03

课题工作量

7

按期圆满完成规定的任务,工作量饱满。

能力

水平

35%

04

综合运用知识的能力

10

能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。

05

应用文献的能力

5

能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。

06

设计(实验)能力,方案的设计能力

5

能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。

07

计算及计算机应用能力

5

具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。

08

对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)

10

具有较强的数据收集、分析、处理、综合的能力。

成果

质量

45%

09

插图(或图纸)质量、篇幅、设计(论文)规范化程度

5

符合本专业相关规范或规定要求;规范化符合本文件第五条要求。

10

设计说明书(论文)质量

30

综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。

11

创新

10

对前人工作有改进或突破,或有独特见解。

成绩

指导教师评语

 

指导教师签名:

年 月 日

 

摘要

微机原理及应用是一门实践性很强的课程;其课程设计目的在于综合运用所学知识,全面掌握微机计算机与DOS方式的工作原理、编程和使用方法;在设计中,通过小组协作提出并论证设计方案,进行软件调试,最后获得正确结果,可以加深和巩固对理论知识的更好掌握,进一步建立计算机应用系统体的概念,初步掌握DOS开发方法,为以后进行实际的软件应用开发奠定良好的基础。

本设计是利用Masmforwindow集成实验环境来实现得打字练习程序,当前,在计算机和许多手机上流行许多小游戏,小软件,应用都很广泛,比如本次编写的练习打字小程序就很有趣,不仅让我们学习打字,更加重要的是我们在编写的过程中更好的掌握学过的知识,锻炼了我们的编程技能。

通过运用汇编语言中有的循环,子程序调用等来完成程序的编写,并且通过对程序的调试,逐步的掌握汇编语言的功能,在自己不足的方面进行改正,进一步的巩固所学的知识,熟练应用汇编语言进行一些程序的制作,进一步培养了对编程的兴趣

关键词课程设计,软件调试,打字练习,编程

 

1设计内容简介

1.1设计任务

设计主菜单:

按回车键进入打字练习;按ESC键进入延缓界面;按空格键暂停;按大写字母“E”程序结束。

将两位十进制数从屏幕上方落下,用户要在这个过程中键入落下的字母,在下落的过程中键入落下的数字,如果正确,数字消失;键入不正确,数字继续下落。

若键入正确,则得分,没有键入正确,不扣分。

在打字的过程中,每下落十个数记一次总成绩。

1.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功能调用显示击中字母的个数和丢失字母的个数,暂停大概2秒钟后自动回到主界面。

1.3设备环境

16位Windows2000操作系统,文本编辑器使用写字板,汇编程序使用MASM.EXE,连接程序使用LINK.EXE,调试程序使用DEBUG.EXE。

1.4知识点运用

Windows2000操作系统、写字板、汇编程序等的基本使用规则;调用BIOS的1号功能、2号功能、6号功能、09号功能、10号功能等;汇编语言中,循环语句、判断语句的使用和嵌套;文本的建立,程序链接的方法;绘图和屏幕截图的方法;

DEBUG调试程序。

 

2程序流程设计

主要流程图

图2.1 打字练习程序流程图

3程序代码设计

Init_gamemacroop1,op2,op3,op4,op5,op6

movcx,00h

movdh,op1

movdl,op2

op6:

movah,02h

movbh,00h

int10h

pushcx

movah,0ah

moval,op3

movbh,00h

movcx,01h

int10h

popcx

inccx

incop4

cmpcx,op5

jneop6

endm

clear_screenmacroop1,op2,op3,op4

;本段程序主要是通过定义变量和调用实现清屏宏定义

movah,06h

moval,00h

movbh,07h

movch,op1

movcl,op2

movdh,op3

movdl,op4

int10h

movah,02h

movbh,00h

movdh,00h

movdl,00h

int10h

endm

menumacroop1,op2,op3

;本段程序主要是通过定义变量和调用来实现菜单显示宏定义

movah,02h

movbh,00h

movdh,op1

movdl,op2

int10h

movah,09h

leadx,op3

int21h

endm

datasegment

ZKdb"WELCOMETOPLAY$"

nodb"date:

2010-12-31$"

megdb"pressEnterkeytocontinue.......$"

meg1db"whenaletterisdropping,pleasehitit!

$"

meg2db"pressspacekeytopause!

$"

meg3db"pressESCkeytoreturnmaininterface!

$"

meg4db"pressletter'E'toexit!

$"

speeddw600d

lettersdb"jwmilzoeucgpravskntxhdyqfb"

db"iytpkwnxlsvxrmofzhgaebudjq"

db"nwimzoexrphysfqtvdcgljukda"

letters_bakdb"jwmilzoeucgpravskntxhdyqfb"

db"iytpkwnxlsvxrmofzhgaebudjq"

db"nwimzoexrphysfqtvdcgljukda"

letter_counterdb0

life_flagdb78dup(0)

position_flagdb78dup(0)

present_positiondb1

dataends

;本段主要用于主界面的显示,起到提示作用

stacksegmentparastack'stack'

db64dup(0)

stackends

codesegment

mainprocfar

assumecs:

code,ds:

data,ss:

stack

start:

movax,data

movds,ax

movletter_counter,00h

movpresent_position,1

leasi,position_flag

movah,00h

movcx,00h

init_postion_flag:

mov[si],ah

incsi

inccx

cmpcx,78d

jneinit_postion_flag

leadi,letters

leasi,letters_bak

movcx,00h

init_letters:

movah,[si]

mov[di],ah

incsi

incdi

inccx

cmpcx,78d

jneinit_letters

movah,00h

leasi,life_flag

movcx,00h

init_life_flag:

mov[si],ah

incsi

inccx

cmpcx,78d

jneinit_life_flag

movcx,00h

movah,01h

orch,00010000b

int10h

clear_screen00d,00d,24d,79d

Init_game00d,00d,0ah,dl,80d,nextsign1

Init_game24d,00d,0ah,dl,80d,nextsign2

Init_game00d,00d,0ah,dh,25d,nextsign3

Init_game00d,79d,0ah,dh,25d,nextsign4

menu05d,15d,ZK

;本段程序主要是对菜单信息的宏调用

menu07h,15d,no

menu09d,15d,meg

menu11d,15d,meg1

menu13d,15d,meg2

menu15d,15d,meg3

menu17d,15d,meg4

put:

movah,02h

;此段用来设置光标位置

movbh,00h

movdh,22d

movdl,33d

int10h

movah,01h

;通过本段代码,能够从键盘输入任意字符

int21h

cmpal,0dh

jespeed3

cmpal,45h

jeexit

exit:

movah,4ch

int21h

speed3:

movax,speed+12

movspeed,ax

jmpbegin

begin:

clear_screen01d,01d,23d,78d

;第二次使用清屏宏调用

clear_screen01d,01d,23d,78d

Init_game23d,01d,01h,dl,78d,nextsign5

movah,02h

movbh,00h

movdh,01h

movdl,01h

int10h

movcx,00h

leasi,letters

nextletter:

movah,02h

;用来示字母

movdl,[si]

int21h

incsi

inccx

cmpcx,78d

jenextcycle

jmpextletter

from_front:

subpresent_position,78d

jmpgobackto_si

find_zero:

cmpletter_counter,78d

jerecycle

cmppresent_position,78d

jefrom_one

movah,00h

nextsi:

addpresent_position,01h

incsi

cmp[si],ah

jegobackto_di

cmppresent_position,78d

jefrom_one

jmpnextsi

from_one:

movpresent_position,01h

jmpgobackto_si

recycle:

movletter_counter,00h

movpresent_position,01d

leasi,position_flag

movcx,00h

movah,00h

clearsi:

mov[si],ah

inccx

cmpcx,78d

jenextcycle

incsi

jmpclearsi

nextcycle:

leadi,letters

leasi,position_flag

addpresent_position,31d

cmppresent_position,78

jafrom_front

gobackto_si:

addsi,wordptrpresent_position

decsi

movah,[si]

cmpah,01h

jefind_zero

gobackto_di:

movah,01h

mov[si],ah

adddi,wordptrpresent_position

decdi

movdl,present_position

movah,02h

movbh,00h

movdh,01h

int10h

movcx,00h

nextrow:

pushcx

movcx,00h

out_cycle:

;时间的延迟

pushcx

movcx,00h

in_cycle:

addcx,01h

cmpcx,1000

jnein_cycle

pushdx

movah,06h

;从键盘输入字符

movdl,0ffh

int21h

popdx

jzpass

cmpal,1bh

;如果键入ESC,则返回主菜单

jeto_start1

cmpal,""

;如果键入SPACE,则游戏暂停

jepause

cmpal,[di]

;输入字母正确!

则字母消失

jedisappear

pass:

popcx

inccx

cmpcx,speed

jeprint

jmpout_cycle

pause:

pushdx

;用来暂停处理

movah,06h

movdl,0ffh

int21h

popdx

cmpal,""

jnepause

jmppass

to_start1:

;用于返回主菜单

jmpstart

print:

movah,0ah

;在当前光标位置写空格

moval,""

movbh,00h

movcx,01h

int10h

incdh

movah,02h

;用来改变光标位置

movbh,00h

int10h

movah,0ah

;在当前光标位置写字母

moval,[di]

movbh,00h

movcx,01h

int10h

popcx

inccx

cmpcx,21d

jeprint_next_letter

jmpnextrow

;下一行

disappear:

;击中字母后输出空格

popcx

popcx

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

jmphit

print_next_letter:

leasi,life_flag

addsi,wordptrpresent_position

decsi

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

incdh

movah,02h

movbh,00h

int10h

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

movah,1

mov[si],ah

hit:

movah,02h

movbh,00h

movdh,01h

movdl,present_position

int10h

moval,[di]

;出现下一个新字母的数法

addal,7

cmpal,7ah

jaconvey_letter

movah,0ah

movbh,00h

movcx,01h

int10h

mov[di],al

addletter_counter,01h

jmpnextcycle

convey_letter:

subal,7ah

addal,61h

movah,0ah

movbh,00h

movcx,01h

int10h

mov[di],al

addletter_counter,01h

jmpnextcycle

clear_screen01,01,23,78

movah,02h

movbh,00h

movdh,11d

movdl,20d

int10h

incdh

incdh

movah,02h

movbh,00h

int10h

notkey:

movah,07h

int21h

cmpal,0dh

jeto_start

cmpal,1bh

jeover

jmpnotkey

to_start:

clear_screen00,00,24,79

jmpstart

over:

clear_screen01,01,23,78

movah,02h

movbh,00h

movdh,11d

movdl,15h

int10h

movah,02h

movbh,00h

movdh,13d

movdl,15h

int10h

movah,07h

int21h

movah,07h

int21h

clear_screen00,00,24,79

movax,4c00h

int21h

mainendp

codeends

endstart

;程序结束

 

4程序调试运行

4.1调试阶段

(1)打开windows命令窗口,进入masm程序的安装目录,汇编源文件,如图:

图4.1.1文件链接图

(2)链接原文件,并运行可执行文件,如下图:

图4.1.2运行可执行文件图

 

(3)进入主程序段显示提示信息,程序功能应该实现下图所示:

图4.1.3程序主界面图

4.2运行阶段

(1)按回车键进入打字练习页面,并且开始练习打字,如下图:

图4.2.1打字主

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2