打字游戏 汇编语言课程设计

发布 2022-10-01 08:01:28 阅读 3512

汇编语言课程实习报告。

实习题目打字游戏。

院系信息学院。

指导老师。提交时间2011/6/22

成绩。目录。

1 课程实习任务1

2 基本知识1

2.1 汇编语言程序结构2

2.2 关键指令分析2

2.3 汇编语言上机过程3

3 总体分析3

3.1 程序功能分析3

3.2 主程序流程图4

4 详细设计5

4.1 菜单模块5

4.2 输入模块5

4.3 游戏模块6

4.4 游戏结束模块6

4.5 速度设置模块6

5 **实现7

5.1 主程序**7

5.2~5. 11部分子程序**8

5.12 延时子程序**14

5.13 字母下降子程序15

5.14产生新字母子程序**16

5.17游戏逻辑子程序**17

5.18其他各子程序模块18

6 调试过程19

7 使用说明20

8 总结20

9 参考文献20

课程实习任务。

设计题目:打字游戏。

基本功能:1.在屏幕上显示菜单界面;

2.按回车键出现由26个字母组成的乱序行;

3.其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;

4.按空格键停止,按esc键返回主菜单,按q键退出程序。

用汇编语言编写,完成设计报告。

1. 基本知识。

本次设计用的汇编语言基本知识如下:

2.1汇编语言程序结构。

主体程序结构框架。

data segment

data ends

code segment

assume cs:code, ds:data, es:extra

start:

mov ax, data

mov ds, ax

call **

mov ax, 4c00h

int 21h

code ends

end start

子程序结构框架。

name proc far

name endp

宏定义结构框架。

name macro 《参数》

endm1.2. 关键指令的分析。

本次设计主要用到算术指令,逻辑指令,控制转移指令等。

如loop指令,用于循环执行某条或者某块指令集直到默认的参数(cx)为零,退出循环,执行loop循环下的下一条指令。

jmp无条件跳转指令,跳转到一个指定的标号位置。

条件转移指令jz / jnz 、 je / jne等等,用于判断相应的标志位是否满足条件,若满足则跳转,不满足就继续往下一条指令执行。

cmp比较指令,用于比较两个数的大小,设置标志位,通常和条件跳转指令关联用。

call 调用指令,用于调用子程序。

int中断指令,用于中断操作。

此外,还有其他的一些指令,比如说加法add指令,减法指令等,本次设计用到了大量的指令。

2.3汇编语言上机过程。

a:建立汇编源程序。

b:编译目标文件(即:编译为。obj .lst .crf文件)

c:编译不通过,重新修改。

d:连接为可执行文件。

e:运行编译好的可执行文件。

f:用调试工具调试。

2. 总体分析。

3.1程序功能分析。

本次设计的是打字游戏,因此,在屏幕落下字母,输入字母,并且判断输入字母和落下来的字母是否相同,如果相同,则字母消失,否则字母下落到屏幕底部消失。

其具体功能如下:

1.按回车键进入游戏,esc键退出。

2.进入速度选择界面,h键高速,l键低速,s键重新设置速度,其他键默认为普通速度其他键(包括回车键)

3.若进入速度设置界面,输入1-999的数,表示速度为普通速度的百分之几。

4.游戏中按esc退出,同时显示游戏总共出现字符数,所得分数,同时提示游戏是否重新开始,y返回主界面,n退出。

5.游戏过程中按space键暂停,再次按space键继续进行游戏。

3.2 主程序流程图。

3. 详细设计。

4.1菜单模块。

打开软件,进入的是菜单界面模块,如上图,有两种选择,按enter键进入游戏,按esc键退出进入程序。

4.2 速度选择模块。

选择enter进入游戏,那么首先选择设置游戏的速度,有三种可供选择,还可以设置适合自己的速度。

4.3 游戏模块。

进入游戏,可以开始游戏,一次落下一个字母,当键入一个字母正确时,字母消失,不然待字母落到底端,显示字母。字母的不同的位置有不同的显示颜色,在前1/3为绿色,在中间的1/3为红色,在最后1/3为红色。在游戏过程中,可以按esc键退出游戏,按space键暂停游戏,再次按space的时候继续游戏。

4.4游戏结束模块。

要退出游戏时,会显示一共落下的字母数,和玩家击中的字母数,还提示信息,是否返回主界面,如果键入y,则返回,n则直接退出程序。

4.5设置游戏速度模块。

在这里,你可以设置适合自己的速度,如图输入了789,则以普通速度的8倍进行游戏。

4. **实现。

5.1 主程序**。

mov ax, data

mov ds, ax

mov es, ax

restart

call init

cmp ax,0

je lexit ;如果退出。

call speedchoose

call setinterface

lgettime:

call playgames

cmp al,0;是否有结束标志。

jne lgettime

lendgame:

call gameover

call isrestart

cmp al,0

je lexit ;如果退出。

mov bx,restart

jmp bx;重新开始。

lexit:

mov ax, 4c00h

int 21h

5.2输出单个数字子程序**。

outnum proc near ;入口参数:ax,传递ax的值给dx的低八位dl以便输出。

mov dx,ax

or dl,30h

mov ah,02h

int 21h

retoutnum endp

5.3;计算数字位数子程序。

countnum proc near ;入口参数:ax,传递要输出的分数。

mov cx,1;计算输出位数。

cmp ax,10

jl lendcount

inc cx

cmp ax,100

jl lendcount

inc cx

cmp ax,1000

jl lendcount

inc cx

cmp ax,10000

jl lendcount

inc cx ;保存在cx

lendcount:

ret countnum endp ;出口参数:cx,保存数字位数。

5.4输出数字子程序。

coutnum proc near ;入口参数:cx,call countnum后传递数字位数。

push ax

call countnum ;计算数字位数。

pop ax

cmp cx,5 ;5位数字。

jl lsmlth1

mov bx,10000

xor dx,dx

div bx

push dx

call outnum;显示万位数字。

pop ax

lsmlth1:;千位数字。

cmp cx,4 ;4位数字。

jl lsmallhun1

xor dx,dx

mov bx,1000

div bx

push dx ;余数。

call outnum ;显示千位数字。

pop ax

lsmallhun1: ;显示百位数字。

; cmp ax,100

cmp cx,3 ;3位数字。

jl lsmallten1

mov bl,100

div bl

push ax

call outnum ;显示百位。

pop ax

mov al,ah

xor ah,ah ;al和ax中放的数一样大小。

lsmallten1: ;显示十位数字。

cmp cx,2 ;3位数字。

汇编语言课程设计打字游戏

1.课程设计目的及内容2 1.1 课程设计目的2 1.2 课程设计内容2 2.开发环境2 2.1 软 硬件环境2 2.2 masm开发环境3 3.功能分析3 3.1 基本功能设计3 3.2系统程序流程图4 4.调试和运行程序5 4.1 程序调试5 4.2 程序运行6 5.课程设计总结8 6.参考文献...

汇编语言课程设计打字游戏

目录。1.课程设计目的及内容2 1.1 课程设计目的2 1.2 课程设计内容2 2.开发环境2 2.1 软 硬件环境2 2.2 masm开发环境3 3.功能分析3 3.1 基本功能设计3 3.2系统程序流程图4 4.调试和运行程序5 4.1 程序调试5 4.2 程序运行6 5.课程设计总结8 6.参...

汇编语言课程设计

微机原理实践 课程设计报告。题目 汇编语言课程设计。专业 网络工程 班级 班 学号 姓名 指导教师 完成日期 2013年 1 月 6 日。一 课程设计目的。1 加深对汇编语言理论和基本知识的理解,掌握dos和bios系统功能调用,掌握运用汇编语言设计具有一定功能的软件的基本方法。2 通过编写一定规模...