版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言课程设计实验报告姓名:学号:学院:信息科学与工程学院班级:目录目录1前 言2第1章 系统分析3第2章 系统总体设计42.1 打字程序包括以下五个子程序:42.2 算法的整体设计思路42.3 程序的主要特点4第3章 详细设计53. 1主界面伪代码53. 2等级界面伪代码53.3游戏界面伪代码63. 4清屏子程序设计63.5密码程序设计73.6宏代码83.6.1在指定位置显示彩色字符串83.6.2显示背景93.6.3画横向边框的宏93.6.4画竖边框的宏103.7功能的进一步完善113.7.1完善代码一113.7.2完善代码二123.7.3完善代码三12第4章 软件使用说明书144.1密码
2、界面图:144.2主界面图:144.3等级选择界面:144.4游戏界面:15参考文献17致谢18源代码:19前 言随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。而汇编语言作为计算机专业大学生必修课,每个作为本专业的学生对汇编的理解和学习就显得尤为重要。汇编语言是计算机能够提供用户使用的最快而又最好最有效的与言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。打字游戏程序设
3、计课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。通过具体的问题分析、设计、调试、运行程序。在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。就这个程序具体而言:调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。第1章 系统分析实验目的:汇编语言实现打字游戏
4、基本功能: 1. 开始界面的提示信息:进入游戏,退出 2. 打字游戏:字母从屏幕上方下落,若用户在字母下落过程中输入正确字母,字母消失, 输入不正确,字母继续下落 3. 空格键退出游戏 程序运行图第2章 系统总体设计2.1 打字程序包括以下四个子程序:(1)主界面的显示模块;(2)打字练习模块;(3)设置速度模块;(4)清屏模块。其中的打字练习模块又分为以下三个子程序:(a)游戏界面模(b)功能模块2.2 算法的整体设计思路此程序涉及到宏和I/O中断的调用,通过对宏的定义和使用以及对I/O中断的使用,实现程序的相应功能。利用宏,实现各个界面的显示,采用中断,实现各个子程序的相互转换。其中最主要
5、的是打字程序:运行程序,打字界面中出现由26个字母组成的乱序行,这时其中会有任一字母落下,在键盘上输入该字母,字母消失,分数值加1,否则字母一直移动到屏幕底端,然后消失,生命值减1。当生命值减为零且未在字母下落到屏幕底端之前输入该下落字母时,打字练习结束,显示结束界面。2.3 程序的主要特点本程序最大的特点就是具有较好的人机交互功能。在主界面中,可以选择不同的游戏等级,能够根据自己的实际打字速度,选择相匹配的等级进行打字练习。第3章 详细设计3. 1主界面伪代码 系统的主界面主要是显示欢迎语,制作人,时间,速度选择等主界面信息。方便用户了解信息并进行选择操作。用户密码为“”。在用户输入正确的密
6、码之后即可进入游戏进入下一选择菜单。 STR1 DB Welcome to play chars,0AH,0DH, $ STR2 DB Made by liudaoqing,0AH,0DH, $ STR3 DB 2018/1/18 ,0AH,0DH, $ STR4 DB Please choose speeding,0AH,0DH, $ STR5 DB Please press Enter to cintinue. ,0AH,0DH, $ STRA DB ,0AH,0DH, $ STRB DB score: , i,0AH,0DH, $ STRC DB You choose: ,0AH,0DH
7、, $STRD DB hqfuvodepfdjygnhtrwgaerjrklubgsnyrsbntrsbngtrdjykuahtrgregfytjgfjytjktru, $ STRE DB RIGHT: , $ MES5 DB PLEASE ENTER YOUR PASSWORD :$ PASSWORD DB PASSWORD1 DB 6 DUP(?) 3. 2等级界面伪代码在主界面中选择2,进入等级界面的设置,其中有3个等级,代表不同的难易程度。用户可选则其中的任意一个级别,按Enter键表示确定并返回主界面,若用户输入的错误的等级,则一直等待,直到输入了正确的等级。以下是等级界面的伪代码:
8、 STR7 DB speed 1,0AH,0DH, $ STR8 DB speed 2,0AH,0DH, $ STR9 DB speed 3,0AH,0DH, $ STR0 DB Select the number among 1-3,0AH,0DH, $3.3游戏界面伪代码此伪代码显示的是进入打字界面的提示信息: ST1 DB RIGHT: Pause,0AH,0DH, $ ST2 DB E : Quit,0AH,0DH, $ ST8 DB Esc: Back,0AH,0DH, $ ST3 DB Function Meun,0AH,0DH, $ ST4 DB please input. ,0
9、AH,0DH, $ ST5 DB SPACE: Continue,0AH,0DH, $ ST6 DB Thank You ! ,0AH,0DH, $ ST10 DB ,0AH,0DH, $ ST9 DB VREY GOOD ! ,0AH,0DH, $ 3. 4清屏子程序设计BIOS功能调用中的INT 10H功能6能使屏幕内容上卷指定的行,这个功能需要设置4个参数,分别代表清屏区域的左上角的坐标和右下角的坐标。如果屏幕的其实行列不为(0,0)结束的行列不为(24,79),则屏幕上只有指定的一部分具有上卷的功能,这个屏幕伤的部分区域叫做窗口(window)像这样的窗口可以在屏幕上设置多个,这些窗口
10、都可以独立使用。如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口底部的新行被填为空格,其属性用BH寄存器决定。如果AL=0,则实现完成的工作是清楚屏幕的功能,它将按AL中的BH字符使指定的窗口为空白。以下是清除全屏幕的子程序: CLEAR PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6 MOV AL,0 ;blank screen MOV BH,7 MOV CH,0 ;左上角行号 MOV CL,0 ;左上角列号 MOV DH,24 ;右下角行号 MOV DL,79 ;右下角列号 INT 10H ;屏幕初始化或上卷 MOV DX,0
11、 ;行列号都为0 MOV AH,2 INT 10H ;置光标位置 DIS5 25D,B ;置背景色 背景 蓝 前景红 DIS5 25D,B ;置背景色 背景白色 前景红 DIS3 RET CLEAR ENDP 3.5密码程序设计 DIS1 MES5,5,15LEA BX,PASSWORD1MOV CX,6 INPUT:MOV AH,07HINT 21HMOV BX,ALINC BXMOV AH,02HMOV DL,*INT 21HLOOP INPUTCONTIUN:MOV AH,07HINT 21HCMP AL,0DHJNE CONTIUNMOV CX,6LEA SI,PASSWORDLEA
12、DI,PASSWORD1CHECK:MOV AL,SICMP AL,DIJNE STARTINC SIINC DILOOP CHECK 3.6宏代码3.6.1在指定位置显示彩色字符串DIS1 MACRO STRING1,Y,M MOV AH,2 MOV BH,0 ;页号 MOV DH,Y ;行标 MOV DL,M ;列标 INT 10H ;置光标位置 MOV AH,09H MOV DX,SEG STRING1 MOV DS,DX MOV DX,OFFSET STRING1 INT 21H ;显示字符串 ENDM3.6.2显示背景DIS5 MACRO S1,S2DIS2 MOV AH,6 MOV
13、 AL,0 ;blank screen MOV AL,s1 ;上卷25行 MOV BH,s2 ;绿色背景 红色前景 MOV CH,0 MOV CL,0 MOV DH,0 MOV DL,80 INT 10H ;屏幕初始化或上卷 DIS3 ENDM3.6.3画横向边框的宏DIS6 MACRO Z1,Z2,Z3,Z4 LOCAL C5 ; LOCAL为重复定义的定义符 DIS2MOV CX,Z1 ;循环次数 MOV DL,Z2 ;列 C5: MOV AH,2 MOV BH,Z3 ;页号 MOV DH,Z4 ;行 INT 10H ;置光标位置 PUSH DX MOV DL,2AH INT 21H ;输
14、出* POP DX INC DL ;列 +LOOP C5 DIS3 ENDM3.6.4画竖边框的宏DIS7 MACRO Q1,Q2,Q3,Q4 LOCAL F1 ; LOCAL为重复定义的定义符 DIS2 MOV CX,Q4 MOV DH,Q1 ;行 F1: MOV AH,2 MOV BH,Q2 MOV DL,Q3 ;列 INT 10H ;置光标位置 MOV DL,2AH INT 21H INC DH LOOP F1 DIS3 ENDM3.7功能的进一步完善3.7.1完善代码一修改界面背景属性;DIS5 25D,B ;置背景色 背景 蓝 前景红 DIS5 25D,B ;置背景色 背景 红 前景
15、白;显示背景DIS5 MACRO S1,S2 DIS2 MOV AH,6 MOV AL,0 ;blank screen MOV AL,s1 ;上卷25行 MOV BH,s2 ;绿色背景 红色前景 MOV CH,0 MOV CL,0 MOV DH,0 MOV DL,80 INT 10H ;屏幕初始化或上卷 DIS3 ENDM3.7.2完善代码二击中下落字母后,使其显示不同的颜色 MOV AH,2 MOV BH,0 INT 10H PUSH axPUSH bx mov ah ,9mov bh ,0mov cx,1mov al,simov bl,B ;字母击中后显示白色INT 10H pop axp
16、op bx call SLEEP1MOV AH,2 MOV BH,0PUSH DX MOV DL, MOV AH,02H INT 21H ;显示空格 覆盖字母 INT 10H ;置光标位置 POP DX3.7.3完善代码三当游戏分数达到某一数值时,显示“Very Good!” ST9 DB VREY GOOD ! ,0AH,0DH, $ CMP AL,30 ;击中30次显示jnz T DIS1 ST9 20,60 ;显示“VERY GOOD”第4章 使用说明书第4章 软件使用说明书4.1密码界面图: 运行程序,将会出现以上界面,这个功能是通过字符串的一个一个的比较实现的,输入错误后,要重新输入
17、,直到输入正确的密码。4.2主界面图:输入密码后,进入主界面; 第一行是密码行;第二行是欢迎语句;第三行是组员名字;第四行是演示代码的时间;第五行是提示语句。4.3等级选择界面:按ENTER键后,进入等级选择界面这是一个等级选择界面,有三个等级进行选择,分别代表不同的速度,速度一次递增,只能输入1-3,直到输入正确才能开始游戏。4.4游戏界面:选择等级后,进入游戏界面;界面的左边是功能菜单,可以进行功能的选择,暂停(空格键),退出(E),返回主界面(Esc);界面的中间是游戏区,当用击中下落的字母后,字母会变为白色,并有声音发出,表示用户击中字母;界面的右边是记分功能,可以显示用户的当前分数。
18、源代码:DIS1 MACRO STRING1,Y,M MOV AH,2 MOV BH,0 ;页号 MOV DH,Y ;行标 MOV DL,M ;列标 INT 10H ;置光标位置 MOV AH,09H MOV DX,SEG STRING1 MOV DS,DX MOV DX,OFFSET STRING1 INT 21H ;显示字符串 ENDM;宏进栈DIS2 MACRO PUSH AX PUSH BX PUSH CX PUSH DX ENDM;宏出栈 DIS3 MACRO POP DX POP CX POP BX POP AX ENDM;显示背景DIS5 MACRO S1,S2 DIS2 MOV
19、 AH,6 MOV AL,0 ;blank screen MOV AL,s1 ;上卷25行 MOV BH,s2 ;绿色背景 红色前景 MOV CH,0 MOV CL,0 MOV DH,0 MOV DL,80 INT 10H ;屏幕初始化或上卷 DIS3 ENDM;画横向边框的宏DIS6 MACRO Z1,Z2,Z3,Z4 LOCAL C5 ; LOCAL为重复定义的定义符 DIS2 MOV CX,Z1 ;循环次数 MOV DL,Z2 ;列 C5: MOV AH,2 MOV BH,Z3 ;页号 MOV DH,Z4 ;行 INT 10H ;置光标位置 PUSH DX MOV DL,2AH INT
20、21H ;输出* POP DX INC DL ;列 + LOOP C5 DIS3 ENDM;画竖边框的宏DIS7 MACRO Q1,Q2,Q3,Q4 LOCAL F1 ; LOCAL为重复定义的定义符 DIS2 MOV CX,Q4 MOV DH,Q1 ;行 F1: MOV AH,2 MOV BH,Q2 MOV DL,Q3 ;列 INT 10H ;置光标位置 MOV DL,2AH INT 21H INC DH LOOP F1 DIS3 ENDM;=DATAS SEGMENT STR1 DB Welcome to play chars,0AH,0DH, $ STR2 DB Made by liud
21、aoqing,0AH,0DH, $ STR3 DB 2018/1/18 ,0AH,0DH, $ STR4 DB Please choose speeding,0AH,0DH, $ STR5 DB Please press Enter to cintinue. ,0AH,0DH, $ STR7 DB speed 1,0AH,0DH, $ STR8 DB speed 2,0AH,0DH, $ STR9 DB speed 3,0AH,0DH, $ STR0 DB Select the number among 1-3,0AH,0DH, $ STRA DB ,0AH,0DH, $ STRB DB sc
22、ore: , i,0AH,0DH, $ STRC DB You choose: ,0AH,0DH, $ STRD DB hqfuvodepfdjygnhtrwgaerjrklubgsnyrsbntrsbngtrdjykuahtrgregfytjgfjytjktru, $ STRE DB RIGHT: , $MES5 DB PLEASE ENTER YOUR PASSWORD :$ PASSWORD DB PASSWORD1 DB 6 DUP(?) ST1 DB RIGHT: Pause,0AH,0DH, $ ST2 DB E : Quit,0AH,0DH, $ ST8 DB Esc: Back
23、,0AH,0DH, $ ST3 DB Function Meun,0AH,0DH, $ ST4 DB please input. ,0AH,0DH, $ ST5 DB SPACE: Continue,0AH,0DH, $ ST6 DB Thank You ! ,0AH,0DH, $ ST10 DB ,0AH,0DH, $ ST9 DB VREY GOOD ! ,0AH,0DH, $ LENTH EQU $-STRD ;STRD的长度 M DB 0 N DB ? A DB 0 ;速度1选择标志 B DB 0 ;速度2选择标志 V DB 0 ;速度3选择标志 DATAS ENDSSTACK1 SE
24、GMENT STACK DB 100 DUP (?)STACK1 ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACK1 START: MOV AX,DATAS MOV DS,AX CALL CLEAR ;调用清屏函数,清除dos界面;输入密码DIS1 MES5,5,15LEA BX,PASSWORD1MOV CX,6INPUT:MOV AH,07HINT 21HMOV BX,ALINC BXMOV AH,02HMOV DL,*INT 21HLOOP INPUTCONTIUN:MOV AH,07HINT 21HCMP AL,0DHJNE CON
25、TIUNMOV CX,6LEA SI,PASSWORDLEA DI,PASSWORD1CHECK:MOV AL,SICMP AL,DIJNE STARTINC SIINC DILOOP CHECK CALL DISPLAY1 ;显示主欢迎界面 AG: MOV A,0 MOV B,0 MOV V,0 ;只相应的速度标志为0 TH2: MOV AH,7 INT 21H ;无回显 键盘输入字符 CMP AL,0DH ;如果是回车,则继续 JNE TH2 ;否则继续输入;第二屏 TH1: CALL CLEAR ;调用清屏函数 DIS6 80,0,0,0 ;第一行 * DIS6 79,0,0,24 ;最
26、后一行 * 79 DIS7 1,0,0,23 ;左 DIS7 1,0,79,23 ;右 DIS1 STR4,10,25 ;宏调用显示欢迎界面及速度选择项 DIS1 STR7,12,30 DIS1 STR8,14,30 DIS1 STR9,16,30 DIS1 STR0,20,16 THD: MOV AH,7 INT 21H ;无回显 键盘输入字符 CMP AL,31H ;判断是否为1 JNE MODIFYA JMP THB ;是则转 ,JMP实现间接跳转 MODIFYA: CMP AL,32H ;判断是否为2 JNE MODIFYB JMP THC ;是则转 MODIFYB: CMP AL,3
27、3H ;判断是否为3 JNE THD ;不是则 重新输入 MOV V,1 ;速度3被选中的标志 JMP THA THB: MOV A,1 ;速度1被选中的标志 JMP THA THC: MOV B,1 ;速度2被选中的标志 THA: CALL CLEAR ;调用清屏函数 CALL PAINT ;调用函数画游戏边框 CALL FALL ;调用下落函数 JMP AG ; ESC 回到主界面 ;显示功能菜单函数DISPLAY1 PROC NEAR DIS1 STR1,10,25 DIS1 STR2,13,8 DIS1 STR3,16,31 DIS1 STR5,21,19 DIS6 80,0,0,0
28、;第一行 * DIS6 79,0,0,24 ;最后一行 * 79 DIS7 1,0,0,23 ;左 DIS7 1,0,79,23 ;右 RET DISPLAY1 ENDP;清屏函数,清除整个屏幕 CLEAR PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,6 MOV AL,0 ;blank screen MOV BH,7 MOV CH,0 ;左上角行号 MOV CL,0 ;左上角列号 MOV DH,24 ;右下角行号 MOV DL,79 ;右下角列号 INT 10H ;屏幕初始化或上卷 MOV DX,0 ;行列号都为0 MOV AH,2 INT
29、 10H ;置光标位置 ; DIS5 25D,B ;置背景色 背景 蓝 前景红 DIS5 25D,B ;置背景色 背景白色 前景红 DIS3 RET CLEAR ENDP;下落函数,核心子函数FALL PROC NEAR LEA SI,STRD ;传递将要下落的字母子串 T1: INC SI ;加1以便寻找下一个字母 CALL RANDOM ;获得随机数函数 MOV DL,AH ;获得随机数AH ADD DL,26 ;下落框起始列 DL+26 下落的起始位置 MOV DH,1 ;行 MOV CX,23 ;计数 AGA: MOV AH,2 MOV BH,0 INT 10H ;置光标位置 MOV AL,SI ;取下落字符 PUSH DX MOV DL,AL MOV AH,02H INT 21H ;显示DL中的字符串 SI 字母
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气候健康公平的医院管理
- 2026年肾小管浓缩功能减退诊疗试题及答案(肾内科版)
- 睡眠呼吸暂停与心血管疾病专家共识(完整版解读)
- T∕CATAGS 59-2022 通 用航空器纤维增强复合材料湿法制造工艺
- 安宁疗护医疗决策标准统一的法律意义
- 2026届云南省玉溪市一中高三全真化学试题模拟试卷(16)含解析
- 河北省唐山二中2026届高考化学试题必刷模拟卷含解析
- 水凝胶模拟ECM引导巨噬细胞M2极化促皮肤再生
- 采购合同付款方式补充协议
- 26年泛癌种基因检测应用指南
- 2026年心理咨询师通关测试卷含完整答案详解(夺冠)
- 倒班人员作息健康管理培训
- 2026河南兴豫惠民职业技能培训学校有限公司市场化招聘15人笔试参考题库及答案解析
- 9.3 LLDPE物质安全资料表-2
- 2023年广东交通职业技术学院单招综合素质模拟试题及答案解析
- YC/T 88.1-2006烟草机械喂料机第1部分:型式与基本参数
- LY/T 2422-2015薇甘菊防治技术规程
- 真空预压传统式与直排式介绍ghg课件
- 大功率商用电磁灶使用说明书
- 工业机器人编程与实操期末试题
- 初中化学中考其他-学案离子(物质)的检验鉴别
评论
0/150
提交评论