汇编课程设计.docx

上传人:b****3 文档编号:5515666 上传时间:2022-12-18 格式:DOCX 页数:47 大小:245.40KB
下载 相关 举报
汇编课程设计.docx_第1页
第1页 / 共47页
汇编课程设计.docx_第2页
第2页 / 共47页
汇编课程设计.docx_第3页
第3页 / 共47页
汇编课程设计.docx_第4页
第4页 / 共47页
汇编课程设计.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

汇编课程设计.docx

《汇编课程设计.docx》由会员分享,可在线阅读,更多相关《汇编课程设计.docx(47页珍藏版)》请在冰豆网上搜索。

汇编课程设计.docx

汇编课程设计

课程设计

2013~2014学年第二学期

 

设计题目汇编语言程序设计课程设计-打字练习程序的设计

 

院(系)计算机科学与信息工程学院

专业计算机科学与技术

班级学号

学生姓名

设计时间2014年6月30日——2014年7月5日

指导教师

提交日期2014年7月5日

上海应用技术学院课程设计任务书

课程名称

汇编语言程序设计课程设计

课程代码

B704207

设计题目

汇编语言程序设计课程设计-打字练习程序的设计

题目序号

设计时间

2014年6月30日——2014年7月5日

系(院)

计算机科学与信息工程

专业

计算机科学与技术

班级

一、课程设计任务(条件)、具体技术参数(指标)

本课程设计是《汇编语言程序设计》课程的后继教学环节,通过对一个较大型的、综合性的应用程序进行阅读、修改、添加功能等工作,使学生对汇编语言程序设计有更进一步的认识,提高阅读理解复杂程序的能力和程序设计能力。

根据所给的“typetest.asm”应用程序框架,在此基础上修改和添加功能。

基本任务

1.认真阅读“typetest.asm”源程序,理解程序每一条指令在程序中的作用。

绘制程序流程图(简略总图,各模块详细流程图),给程序中的关键语句(后跟分号)作注释;

2.设置输入界面,用户输入密码后才能进入主菜单;(DONE)

3.修改主菜单,在主菜单上显示当天日期;(DONE)

4.修改主菜单,增加可供用户选择难度级别的选项;(DONE)

5.为用户打分,正确输入字母使用时间越少,得分越高;

6.修改程序,在屏幕右上角显示用户得分、已输入字母数、正确数;

7.将程序中的“置光标位置”程序段落用宏调用完成,添加“置光标位置”宏定义。

(DONE)

扩展任务

1.设置限定时间,到达该时间,用户尚未得到要求的分数时,游戏停止;

2.到达限定时间,用户得分达到预设的值时,自动提高难度等级,屏幕变色;

3.修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:

设置数组记录笑脸字母的存在与否)。

笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。

其他任务

自行设计新的功能。

二、对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)

1.分析原“typetest.asm”程序结构(见附件),画出主程序粗略的流程图和各个模块的详细流程图,每个功能模块用文字说明他们的功能(与对应流程图放在一起);

2.对已经实现的功能(修改的、新编写的)做详细的说明,并附上流程图及程序清单(修改/增加的指令请使用大写字母,以示区别);

3.对该“打字练习程序”的进一步设想;

4.对于有设想但最终未实现的功能的大致编程思路的阐述;

5.论述在设计过程中遇到的并且对你具有启发性的问题

三、课程设计工作进度计划:

周一:

布置任务,介绍程序功能和基本模块。

学生仔细阅读原始源程序,在重要行添加注解。

周二:

画出主程序粗略的流程图和各个模块的详细流程图,对课程设计的基本任务进行设计,并开始编程。

周三~周四:

设计程序及调试程序。

同时着手撰写课程设计报告。

周五:

完成设计,提交开发完成的程序和课程设计报告,接受教师考评。

四、主要参考资料

[1]杨文显,宓双,胡建人.新编汇编语言程序设计.清华大学出版社,2010

[2]朱玉龙,任文览等.汇编语言程序设计.清华大学出版社,2003

[3][美]KipR.Irvine.汇编语言程序设计.电子工业出版社,2004

指导教师(签名):

教研室主任(签名):

杨晶鑫

2014年6月25日2014年6月25日

上海应用技术学院课程设计任务书ii

2.22用户密码验证…………………………………………………………………………

2.23游戏功能模块…………………………………………………………………………

2.24游戏难度选择…………………………………………………………………………

2.25游戏计分、计个数、显示已输出字母………………………………………………

2.26游戏自动升级并变色…………………………………………………………………

2.27游戏结束模块…………………………………………………………………………

1概述

这次课程设计主要是用汇编语言设计一个打字游戏,任务是要设计一个具备输入输出界面、调用宏指令、用户密码设置、显示当天日期,游戏难度级别划分、游戏显示分数、正确的个数等,以及扩展功能限定时间或者到达要求的分数游戏停止、难度等级自动提高屏幕变色,以及底行笑脸消失字母不在此行下落等功能。

本程序的设定考虑到用户使用的方便以及用户资料的保密性,界面简洁方便于用户操作,为此程序的正确性和健壮性尤为重要,所以编写程序时,要不断进行调试,以确保程序没有BUG。

1.1基本功能

本游戏有一下几大功能:

1..显示功能

菜单显示、时间显示、功能显示、字母显示,动态字母。

2.用户输入界面,设置安全密码

3.当天日期显示

4.游戏难度级别划分选择以及自动提升难度。

5.为用户打分,正确输入字母使用时间越少,得分越高;

6.在屏幕右上角显示用户得分、已输入字母数、正确数;

7..结束界面

1.2拓展功能

1.设置限定时间,到达该时间,用户尚未得到要求的分数时,游戏停止;

2.到达限定时间,用户得分达到预设的值时,自动提高难度等级,屏幕变色;

3.修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:

设置数组记录笑脸字母的存在与否)。

笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。

其他任务

1.3宏调用

为了使代码简化,所以程序中多次用到宏调用。

宏定义一:

Init_boardermacrorow,col,char,dhdl,count;边框宏定义,row=行,col=列,char=字符,count=次数

Localll

movcx,count

movdh,row

movdl,col

ll:

movah,02h;置光标位置,bh=页号,dh/dl=行/列

movbh,00h

int10h

pushcx

movah,0ah;在光标位置显示字符

moval,char;al=字符,cx=字符重复次数,bh=显示页

movbh,00h

movcx,01h

int10h

popcx

incdhdl

loopll

宏定义二:

clear_screenmacrotop,left,bottom,right,color;清屏宏定义

movah,06h;屏幕初始化al=上卷行数,bh=卷入行性质

moval,00h

movbh,color

movch,top;ch/cl=左上角行/列号,dh/dl=右上角行/列号

movcl,left

movdh,bottom

movdl,right

int10h

movah,02h;置光标位置,bh=页号,dh/dl=行/列

movbh,00h

movdh,00h

movdl,00h

int10h

endm

宏定义三:

uangbiaomacropage,row,col;设置光标位置宏定义

movah,02H

movbh,page

movdl,col

movdh,row

int10H

ENDM

宏定义四:

menumacrorow,col,text;菜单显示宏定义

movah,02h;置光标位置,bh=页号,dh/dl=行/列

movbh,00h

movdh,row

movdl,col

int10h

movah,09h;显示字符串,ds:

dx=串地址

leadx,text

int21h

endm

2详细设计说明

总程序的详细说明。

2.1原“typetest.asm”程序结构

一,登陆界面

二,显示当天日期

三,消笑脸

四,推出界面

图1typetest.asm结构图

2.2已经实现的功能(修改的、新编写的)程序结构

一,原有功能

1.登陆界面

2.游戏界面

3.字体下落

4.字体消失

5.笑脸消失

6.退出游戏

二,修改功能

1.用户密码登陆

2.光标宏调用

3.显示日期

4.游戏打分,字母个数等

5.游戏级别选择

6.游戏难度自动提升

三,拓展功能

1.游戏未达到分数,游戏停止

2.游戏达到预设值,等级提升,并且颜色改变

3.显示告别时显示用户成绩

2.2.1用户界面

界面代码

menu09d,15d,mes0

menu11d,18d,mes1

menu13d,18d,mes2

menu15d,18d,mes3

menu17d,15d,mes4

guangbiao00h,22d,33d;设置光标位置,bh=页号,dh/dl=行/列

keyin:

movah,07h;从键盘输入命令字符

int21h

cmpal,0dh

jebegin1;输入为回车开始

cmpal,'E'

jeexit

cmpal,'e'

jeexit;按e退出

jmpkeyin;否则回到界面

exit:

movax,4c00h

int21h

2.2.2用户密码验证

No

Yes

用户密码验证代码:

NEW:

movputnum,0

movrighnum,0

movscore,0

movcishu,0

movgametime,0

movcolour,0fh

clear_screen00d,00d,24d,79d,079h;全屏清屏

Init_boarder00d,00d,0ah,dl,80d;边框

Init_boarder24d,00d,0ah,dl,80d;边框

Init_boarder00d,00d,0ah,dh,25d;边框

Init_boarder00d,79d,0ah,dh,25d;边框

clear_screen01d,01d,23d,78d,079h;清屏,保留外部边框

menu10d,18d,mes5;显示输入密码

movsi,0;si代表密码下标

movcx,10;一共10位数字,验证10次

next:

movah,07h;从键盘输入一个字符,在al中

int21h

pushax

movdl,'*';输入一个字符,显示一个'*',显示字符在dl上

movah,02h

int21h

popax

cmpal,passwords[si];10个字符一个一个比较

jnewrong;如果输入字符错误,跳转到WRONG

incsi

loopnext;如果正确就继续循环

jmpstart0;全部对比完毕,如果正确跳转到START1

wrong:

movsi,0h

jmpNEW

 

2.2.3游戏功能模块

2.2.4游戏难度选择

源代码

;-------------------------------------------------------------------------

;**选择游戏难度**

;-------------------------------------------------------------------------

begin1:

clear_screen01d,01d,23d,78d,079h;边界不清,其他中间清屏

menu5d,30d,mes7;游戏难度

menu8d,30d,mes8

menu11d,30d,mes9

menu14d,30d,mes10

guangbiao0,19,28

leadx,mes11;选择游戏的等级,对应等级,赋值

callreaddec

cmpax,2

jedone

cmpax,1

jedone

cmpax,3

jedone

cmpax,4

jedone

jmpbegin1;选择错误,则重新选择

;-------------------------------------------------------------------------

;**游戏难度升级**(达到最高级,则退出)

;-------------------------------------------------------------------------

higher:

;难度升级

pushbx

movGAMETIME,0;游戏次数

incdengji;等级

movBX,dengji

popBX

cmpdengji,4

jnajixu;不高于4,则转向JIXU

jmpVERY_GOOD;如果已经是最高等级,则退出,显示good

done:

movdengji,ax

;-------------------------------------------------------------------------

jixu:

clear_screen01d,01d,23d,78d,079h;清屏

Init_boarder23d,01d,01h,dl,78d;设置笑脸边框在最后第二排,01h代表笑脸

movbx,dengji;根据等级选择速度等级

decbx

shlbx,1;逻辑左移

movcx,speed[BX]

wait_for_key:

;延迟

pushcx

movcx,yanchi[BX];需要修改

2.2.5游戏计分、计个数、显示已输出字母

;------------------------------------------------------------------

;**显示必要数值**

;------------------------------------------------------------------

guangbiao0,0,8

leadx,mes12;显示已输出的字母

movax,putnum

callwritedec

guangbiao0,0,35

leadx,mes13;显示正确的字母数

movax,righnum

callwritedec

guangbiao0,0,58

leadx,mes14;显示分数

movax,score

callwritedec

pass0:

INCPUTNUM;输入字母个数加一

movbh,0

movah,3

int10h

PUSHDX

PUSHAX

guangbiao0,0,8;光标位置设定

LEADX,MES12;显示的输入个数加一

MOVAX,PUTNUM

CALLWRITEDEC

POPAX

POPDX

pushax

MOVAX,RIGHNUM;如果输入的数有5个错的,则自动退出

ADDAX,5

CMPAX,PUTNUM

JNZTUI

jmpJIESHU

TUI:

popax

GUANGBIAO0,DH,DL

GUANGBIAO00h,dh,dl

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

INCCISHU;次数

CMPCISHU,10

JNENEX

JMPJIESHU;10次没有输入结束

INCRIGHNUM

PUSHBX;进栈

PUSHDX;进栈

PUSHAX;进栈

PUSHDI;进栈

GUANGBIAO0,00,35

LEADX,MES13;显示正确提示

MOVAX,RIGHNUM

CALLWRITEDEC

GUANGBIAO0,00,58

MOVSI,SCORE;si代表分数

MOVBX,DENGJI

ADDSI,BX

MOVSCORE,SI

LEADX,MES14;计算分数并输出

MOVAX,SCORE;显示分数

CALLWRITEDEC

POPDI;出栈

POPAX;出栈

POPDX;出栈

POPBX;出栈

JMPnext_letter;出现下一个字母

2.2.6游戏自动升级变色

;-------------------------------------------------------------------------

;**游戏难度升级**(达到最高级,则退出)

;-------------------------------------------------------------------------

higher:

;难度升级

pushbx

movGAMETIME,0;游戏次数

incdengji;等级

movBX,dengji

popBX

cmpdengji,4

jnajixu;不高于4,则转向JIXU

jmpVERY_GOOD;如果已经是最高等级,则退出,显示good

done:

movdengji,ax

;--------------------------------------------------------------------------

;**选择速度**

;--------------------------------------------------------------------------

movbx,dengji;根据等级选择速度等级

decbx

shlbx,1;逻辑左移

movcx,speed[BX]

wait_for_key:

;延迟

pushcx

movcx,yanchi[BX];需要修改

;--------------------------------------------------------------------------

HIGHER1:

addCOLOUR,6;改变颜色

CLEAR_SCREEN0,0,24,79,COLOUR

JMPHIGHER2

HIGHER2:

JMPHIGHER

2.27游戏结束模块

;----------------------------------------------------------------------------

;**计数**

;----------------------------------------------------------------------------

pass0:

INCPUTNUM;输入字母个数加一

movbh,0

movah,3

int10h

PUSHDX

PUSHAX

guangbiao0,0,8;光标位置设定

LEADX,MES12;显示的输入个数加一

MOVAX,PUTNUM

CALLWRITEDEC

POPAX

POPDX

pushax

MOVAX,RIGHNUM;如果输入的数有5个错的,则自动退出

ADDAX,5

CMPAX,PUTNUM

JNZTUI

jmpJIESHU

TUI:

popax

GUANGBIAO0,DH,DL

GUANGBIAO00h,dh,dl

movah,0ah

moval,""

movbh,00h

movcx,01h

int10h

INCCISHU;次数

CMPCISHU,10

JNENEX

JMPJIESHU;10次没有输入结束

JIESHU:

CLEAR_SCREEN0,0,24,79,079h;清屏

GUANGBIAO0,5,32

LEADX,MES14;显示分数

MOVAX,SCORE

CALLWRITEDEC

GUANGBIAO0,10,31;设置光标位置

LEADX,MES15;游戏结束

MOVAH,09H

INT21H

GUANGBIAO0,15,18;设置光标位置

LEADX

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

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1