汇编语言课程设计

发布 2022-10-01 07:23:28 阅读 8149

学号: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年。课程设计的主要目的是提高实践能力,包括对硬件的理解分析能力和汇编语言的编程能力。与其他课程不同的是,本课程对硬件有较高的依赖性,因此课程设计的灵活性受到了一...