汇编语言课程实习报告。
实习题目打字游戏。
院系信息学院。
指导老师。提交时间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 通过编写一定规模...