学号:01211103402 18
课程设计。打字游戏的设计与实现。
一.设计内容(1)功能菜单由“开始”、“速度调整”、“统计成绩”和“结束”等组成。
2)游戏开始后,出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失,并得分;按esc键返回主界面;按空格键暂停;按“enter”退出。
二.设计原理。
本次设计用的汇编语言基本知识如下:
汇编语言程序结构。
主体程序结构框架。
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 《参数》
endm本次设计主要用到算术指令,逻辑指令,控制转移指令等。
如loop指令,用于循环执行某条或者某块指令集直到默认的参数(cx)为零,退出循环,执行loop循环下的下一条指令。
jmp无条件跳转指令,跳转到一个指定的标号位置。
条件转移指令jz / jnz 、 je / jne等等,用于判断相应的标志位是否满足条件,若满足则跳转,不满足就继续往下一条指令执行。
cmp比较指令,用于比较两个数的大小,设置标志位,通常和条件跳转指令关联用。
call 调用指令,用于调用子程序。
int中断指令,用于中断操作。
三. 总体分析。
程序功能分析。
本次设计的是打字游戏,因此,在屏幕落下字母,输入字母,并且判断输入字母和落下来的字母是否相同,如果相同,则字母消失,否则字母下落到屏幕底部消失。
其具体功能如下:
1.按回车键以慢速度进入游戏,esc键退出。
2.按1进入速度选择界面。
3.若进入速度设置界面,输入1或2,表示速度为慢或快。
4.游戏中按esc退回主菜单。
5.游戏过程中按space键暂停,再次按space键继续进行游。
init_game macro op1,op2,op3,op4,op5,op6
mov cx,00h
mov dh,op1
mov dl,op2
op6:mov ah,02h
mov bh,00h
int 10h
push cx
mov ah,0ah
mov al,op3
mov bh,00h
mov cx,01h
int 10h
pop cx
inc cx
inc op4
cmp cx,op5
jne op6
endmclear_screen macro op1,op2,op3,op4 ;清屏宏定义。
mov ah,06h
mov al,00h
mov bh,07h
mov ch,op1
mov cl,op2
mov dh,op3
mov dl,op4
int 10h
mov ah,02h
mov bh,00h
mov dh,00h
mov dl,00h
int 10h
endmmenu macro op1,op2,op3 ;菜单显示宏定义。
mov ah,02h
mov bh,00h
mov dh,op1
mov dl,op2
int 10h
mov ah,09h
lea dx,op3
int 21h
endmdata segment
zk dbwelcome to play
no db "date:2014/6/18$"
meg db "press enter key to begin...
meg1 db "when a letter is dropping,please hit it!$"
meg2 db "press space key to pause!$"
meg3 db "press esc key to return main interface!$"
meg4 db "press 'enter' to exit when playing game!$"
meg5 db "game over continue? y/n$"
meg6 db "press speed. score$"
meg7 db "select the level:$"
meg8 db ""
meg9 db ""
meg10 db "your score is:$"
meg11 db "your history score is:$"
speed dw 1800d,150d ;速度。
letters db "jwmilzoeucgpr**skntxhdyqfb"
db "iytpkwnxlsvxrmofzhgaebudjq"
db "nwimzoexrphysfqtvdcgljukda"
letter_counter db 0
position_flag db 78 dup(0)
present_position db 1
score db ?,0
data ends
stack segment para stack 'stack'
db 64 dup(0)
stack ends
code segment
main proc far
assume cs:code,ds:data,ss:stack
start: mov ax,data
mov ds,ax
mov letter_counter,00h
mov present_position,1
lea si,position_flag
mov ah,00h
mov cx,00h
init_postion_flag:
mov [si],ah
inc si
inc cx
cmp cx,78d
jne init_postion_flag
mov cx,00h
mov ah,01h
or ch,00010000b
int 10h
clear_screen 00d,00d,24d,79d
init_game 00d,00d,0ah,dl,80d,nextsign1
init_game 24d,00d,0ah,dl,80d,nextsign2
init_game 00d,00d,0ah,dh,25d,nextsign3
init_game 00d,79d,0ah,dh,25d,nextsign4
menu 05d,15d,zk菜单信息的宏调用。
menu 07h,15d,no
menu 09d,15d,meg
menu 11d,15d,meg1
menu 13d,15d,meg2
menu 15d,15d,meg3
menu 17d,15d,meg4
menu 18d,15d,meg6
jmp put
soundf proc near
push ax
push dx
mov dx,9fffh
in al,61h
and al,11111100b
trig:xor al,2
out 61h,al
mov cx,800h
delay:loop delay
dec dx
jne trig
pop dx
pop ax
retsoundf endp
put: mov ah,02h设置光标位置。
mov bh,00h
mov dh,22d
mov dl,33d
int 10h
mov ah,01h从键盘输入任意字符。
int 21h
cmp al,'1'
jz sccmp al,'2'
jnz pr
clear_screen 00d,00d,24d,79d
lea dx,meg11
mov ah,09h
int 21h
call print_score
mov ah,01h
int 21h
cmp al,13
jz l0l0:jmp start
pr:cmp al,13
jz easy
sc:clear_screen 01d,01d,23d,78d
menu 13d,15d,meg7
menu 14d,15d,meg8
menu 15d,15d,meg9
mov ah,1
int 21h
cmp al,31h
je easy
cmp al,32h
je hard
jmp sc
easy: mov ax,speed ;控制速度。
mov speed,ax
jmp begin
hard: mov ax,speed+2 ;控制速度。
mov speed,ax
jmp begin
begin: clear_screen 01d,01d,23d,78d ;清屏宏调用。
clear_screen 01d,01d,23d,78d
init_game 23d,01d,01h,dl,78d,nextsign5
mov ah,02h
mov bh,00h
mov dh,01h
mov dl,01h
int 10h
mov cx,00h
lea si,letters
jmp nextletter
ppp :jmp start
next:clear_screen 01d,01d,23d,78d ;是否下一轮。
menu 13d,15d,meg5
menu 14d,15d,meg10
call print_score
mov ah,01h
int 21h
cmp al,79h
je ppp
cmp dl,6eh
jmp exit
nextletter:
mov ah,02h显示字母。
mov dl,[si]
汇编语言课程设计
微机原理实践 课程设计报告。题目 汇编语言课程设计。专业 网络工程 班级 班 学号 姓名 指导教师 完成日期 2013年 1 月 6 日。一 课程设计目的。1 加深对汇编语言理论和基本知识的理解,掌握dos和bios系统功能调用,掌握运用汇编语言设计具有一定功能的软件的基本方法。2 通过编写一定规模...
汇编语言课程设计
汇。编。语。言。课。程。设。计。姓名 学号 专业班级 计科一班。指导老师 袁全清。一 课程题目。数字时钟,与计算机的时间同步显示。二 设计思想。程序原理 程序先调用系统时间,然后将返回的二进制数转化成ascii码,再通过dos显示功能显示出来,并通过循环不断刷新显示的时间。在二进制转化成ascii码...
汇编语言课程设计
课程设计报告。课程名称 汇编语言程序设计 课题名称系统时间显示 姓名阚鹏。班级 信息与计算科学082班 指导老师邢远秀老师。报告日期2010年。课程设计的主要目的是提高实践能力,包括对硬件的理解分析能力和汇编语言的编程能力。与其他课程不同的是,本课程对硬件有较高的依赖性,因此课程设计的灵活性受到了一...