[计算机软件及应用]汇编打字游戏定时统计响铃.doc

上传人:sccc 文档编号:4561890 上传时间:2023-04-27 格式:DOC 页数:33 大小:305.18KB
返回 下载 相关 举报
[计算机软件及应用]汇编打字游戏定时统计响铃.doc_第1页
第1页 / 共33页
[计算机软件及应用]汇编打字游戏定时统计响铃.doc_第2页
第2页 / 共33页
[计算机软件及应用]汇编打字游戏定时统计响铃.doc_第3页
第3页 / 共33页
[计算机软件及应用]汇编打字游戏定时统计响铃.doc_第4页
第4页 / 共33页
[计算机软件及应用]汇编打字游戏定时统计响铃.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《[计算机软件及应用]汇编打字游戏定时统计响铃.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]汇编打字游戏定时统计响铃.doc(33页珍藏版)》请在三一办公上搜索。

1、 汇编语言程序设计报告 学院名称: 计算机工程学院 专 业: 计算机应用(师范) 课程名称: 汇编程序设计 班 级: 姓 名: 学 号: 2012 年 11 月目 录1摘要32绪论43概要设计64详细设计105调试过程描述176实验结论及心得体会227参考文献248附录241.摘要:随着计算机的不断发展更新,在各个领域的应用中占有举足轻重的地位。微机原理与接口技术作为计算机科学领域的基础知识,尽管计算机科学高速发展,但基本原理依然不变,学习并能掌握好微机原理与接口技术这门知识是非常重要的,通过对这门知识的了解可以简单的编写一些日常生活中经典的控制程序。 本次课程设计是设计一个键盘打字游戏,通过

2、汇编语言的编程实现通过键盘来控制游戏的一分钟计时、随机产生字母、比较正确错误(发现错误,响铃提醒),最后统计分数。要完成以上功能,不仅要有强大的理论的知识作为铺垫,还必须要有理论与实际相结合的能力。就编程而言,用到子程序调用,采用dos和bios功能中断等。经过耐心调试和老师的细心指导,已完成以上全部功能。With the continuous development of the computer science, it has played a decisive role position in various fields. Microcomputer principle and int

3、erface technology as computer science is the field of basic knowledge of computer science, despite rapid development, but the basic principles remain unchanged. Learning and mastering the microcomputer principle and interface technology knowledge is very important, based on this knowledge can simply

4、 write some of the daily life of the classical control program.The curriculum design is to design a keyboard typing games, the assembly language programming through the keyboard to control the games minutes, randomly generated letters, correct error ( error detection, ring to remind ), the final sco

5、res of statistics.To complete the function, not only have a strong theoretical knowledge as the foundation, but also must have the ability to combine theory with practice. Programming, used subroutine calls, using the DOS and BIOS functions. After a patient the debugging and the teachers careful gui

6、dance, has completed all of the above functions.2.绪论:设计要求及目的2.1主要任务要求完成一个打字练习程序,即在规定的时间(一分钟)内按下屏幕上显示的字母,字母就消失,否则会产生响铃进行报错,提醒用户再次输入,输入正确记一分,输入错误减去总分一分,最后时间到统计最后得分。(当程序运行时,出现主菜单界面,敲任意键进入游戏,出现由26个字母随机产生在屏幕中央,并开始计时,在键盘上敲入该字母,如果输入正确,字母消失,产生新的随机字母,直至时间结束)2.2设计目的 (1)通过温故所学微机原理知识设计程序,加强汇编语言编程的能力 (2)掌握汇编语言的中

7、断调用功能的应用,能用汇编语言调用各种中断调用功能,并由此实现对硬件的控制 (3)检验所学知识的不足,查漏补缺,为以后的深入学习打下基础。 (4)理论联系实际,培养自己的动手能力。 2.3汇编软件MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行的汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发。 MASM版本至今在不断的更新,目前的最新版本为11,推荐使用新版本进行开发。 MASM

8、5.0 是最常用的汇编连接软件,其简单操作为 输入.asm文件将其连接为.obj文件,用link得到.exe文件Masm for windows 集成实验环境是从事一线教学的大学教师针对汇编语言初学者的特点开发的一个简单易用的汇编语言学习与实验软件,支持32位与4位的WINDOWS 7,支持DOS的16/32位汇编程序和Windows下的32汇编程序(并提供调试通过的35个WINDOWS汇编程序实例源代码),它具有错误信息自动定位、关键字实时帮助并且在帮助中动画演示汇编指令的执行过程、语法着色、无限次撤消与恢复、WORD式的查找、替换、定位、支持中文、长文件名等功能。 2.4工作安排 自己独立

9、完成,不懂的部分请教老师、同学,翻阅书籍、上网查询资料。 2.5主要思想程序首先定义一个函数调用int 21h mov ah ,09来显示字符串,ds:dx定义字符串位置来使用一个主界面使整个程序更加美观。游戏主程序调用BIOS int 10 的9号功能实现对目标文本的颜色和定位。游戏程序用int 1Ah,mov ah,0的调用系统时间,提取开始或结束时间的方法来做计时器,用int 21h mov ah,2的方法在屏幕中央输出随机字母,游戏主程序可以用int 16h mov ah,01(非阻塞中断)从键盘读取输入的字符。用cmp指令对输入的文本和目标文本进行比较,错误的话,利用int 21h

10、mov dl,7 mov AH,2或call bell 来做响铃提醒 ,并扣除得分。最用统计得分,显示输入输出结果,以及总分。 2.6本篇论文其它部分介绍在接下来的文章中,概要设计部分会进行简单的程序设计流程及代码介绍,详细设计部分会进行详细的代码分析,重要部分的设计过程的阐述。调试过程描述中,会就自己在编写程序的过程中产生的问题、疑问,解决的方法、过程,进行详细的介绍。结论部分,会将最后展现最终的结果,以及本次实验的收获与感受。附录部分会附上自己的源代码。3概要设计:3.1程序流程图初始化清屏开始菜单键盘输入随机产生字母判断时间退出游戏界面,输出得分Y NY键盘输入判断对错 Y N3.2 D

11、OS中断与BIOS中断及功能调用(1)DOS专用中断是指INT22H、INT23H、INT24H三个中断。(2)DOS可调用中断是指INT20H、INT21H、INT25H、INT26H、INT27H、INT2FH六个中断。这六个中断都直接供用户直接调用。(3)BIOS中断功能调用表(部分) 3.3主程序实现的功能 要求完成一个打字练习程序,即在规定的时间(一分钟)内按下屏幕上显示的字母,字母就消失,否则会产生响铃进行报错,提醒用户再次输入,输入正确记一分,输入错误减去总分一分,最后时间到统计最后得分。(当程序运行时,出现主菜单界面,敲任意键进入游戏,出现由26个字母随机产生在屏幕中央,并开始

12、计时,在键盘上敲入该字母,如果输入正确,字母消失,产生新的随机字母,直至时间结束)3.4重要模块的功能(1)清屏程序 clear_screen在进入开似乎界面,以及进入游戏,每一次出现随机数时,与置光CURSOR_RESET组合使用,确定固定的界面模式,调用此程序,使得程序更加明了,界面更加整洁,并且方便阅读。(2)取随机数 rand_word通过C语言的使用头文件time.h, 和rand() 的函数来产生随机数的思想方法,我想到在汇编中产生随机数,也可以和时间相联系。通过int 1AH,mov ah,0的中断,提取系统时间。利用变化最快的秒数除以26,加上A的ASC码来产生随机字母。放入D

13、L,利用int 21H,MOV AH,2的中断显示在屏幕上。MOV AH,0 ;读时钟中断值 CH:CL=时:分。DH:DL=秒:1|100秒 INT 1AH ;读时钟计数器值到DX MOV AX,DX ;将DX的值放进AX AND AX,255 ;屏蔽高8位 留下最快变化的秒数 MOV DL,26 ;用MOD(26)产生余数 DIV DL ;除26,产生025余数 MOV DL,AH ;DL中放余数 ADD DL,41H ;加A的码值 MOV AH,2 ;输出产生的随机字母 INT21的2号中断,显示DL里的字符 INT 21H(3)计时一分钟我想到可以通过循环不断使用提取系统时间,将提取的

14、时间进行不断对比,直到计时一分钟结束。使用 MOV AH,2CH INT 21H来通过bios调用获取bios时间,将取到的时间的时、分、秒分别放进STARTTIME的存储空间内。再加上一分钟,不断比较结束时间。 注意时分秒的比较具有零界情况,当为23时、59分等时候取药特别注意,所以有一定的必须的比较方法。MOV AH,2CH INT 21H ;通过bios调用获取bios时间 MOV STARTTIME,CH MOV STARTTIME+1,CL MOV STARTTIME+2,DH INC CLCMP CL,60JB GTS_0MOV CL,0INC CHGTS_0: MOV ENDTI

15、ME,CH MOV ENDTIME+1,CL MOV ENDTIME+2,DH (4)统计得分COUTRIGHT,COUNTERRO,COUNTSCORE在数段,定义Right用来记录正确输入的个数,ERRO用来记录错误输入的个数,SCORE用来统计最后得分。在比较输入是否正确的同时,统计个数,最后计算得到得分。注意,在结束界面时,显示得分,需要进行ASC码的转换。ConvertBCD PROC NEAR ;寄存器al作为参数,返回值是ah和al AAM ;把AL中不大于100的数的十位移至ah,个位一直al ADD AH,30H ADD AL,30H RETConvertBCD ENDP ;

16、转换子函数4详细设计:4.1重要部分程序实现的功能定义的数据段用9个长语句呈现屏幕格式。Right用来记录正确输入的个数,ERRO用来记录错误输入的个数,SCORE用来统计最后得分。STARTTIME,ENDTIME分别记录开始与结束时间,通过比较开始与结束时间来确定一分钟的计时。FLAG用来标记时间是否已满一分钟。最后使用OFFSET和MOV AH,9 和INT 21H组合,提取并显示数据点内容 DATAS SEGMENTINSTRUCTION1 db *$ INSTRUCTION2 db *please into the word which appear in the screen*$

17、INSTRUCTION3 db *author:Miss YangZI*$ INSTRUCTION4 db *press any key to start and you will have 60s*$ INSTRUCTION5 db *TIME*OVER*$ INSTRUCTION6 db RIGHT INPUT:$ INSTRUCTION7 db ERRO INPUT:$ INSTRUCTION8 db YOUR SCORE:$ INSTRUCTION9 db *press*Enter*to*exit*$ RIGHT DB 0 ERRO DB 0 SCORE DB 0 STARTTIME

18、DB 0,0,0 ENDTIME DB 0,0,0 FLAG DB 0DATAS ENDS清屏程序 在清屏子程序中,调用的BIOS 的 10 号中断:功能号:06H 功能: 初始化屏幕或滚屏 入口参数:AH=06H向上滚屏 AL= 滚动的函数 BH=空白区域的缺省 (CH、CL)=窗口的左上角位置(Y 坐标,X 坐标) (DH、DL)=窗口的左上角位置(Y 坐标,X 坐标) 出口参数:无 利用该功能,设置 AL 的值为 0(清窗口),BH 的值为00001010b 设置为绿色高亮,(CH、CL)=(0,0),(DH、DL)=(79,24)即图形能够显示在这个区域之内。AH=06/07 都可以起

19、到清屏的作用,不同的是,前者是向上滚屏,后者 是向下滚屏,即 06H 表示清屏时从下向上清理,07H 表示清屏时从上向下清理。clear_screen proc near ;清屏子程序 ;设置清屏属性 mov ah,6 ;INT 10的6号中断:屏幕初始化 mov al,0 ;初始化窗口 mov bh,00001010b ;bh为字体和背景颜色00001010绿色高亮 mov cx,0;左上角的行、列号 mov dx,184fh;右上角的行、列号 int 10h;调用中断clear_screen endp清屏程序用的是INT 10H mov ah,6的中断方式,并且需要利用栈来保护现场,在AL

20、中存储的是页码,bh中设置字体和背景颜色,CX,DX中分别存储行号、列号。响铃程序此处我使用的调用BELL的方法,经过老师指导,也可以简单得利用MOV AH,2,MOV DL,7 INT 21H的方法直接调用响铃。;保护现场 push ax push dx mov dx,cx ;发声的时间长短 in al,61h;键盘输入,将键盘输入的位置送入 and al,11111100B;置IF TF为0TRIG: xor al,2 ;与2(00000010)异或,放入AL out 61h,al mov cx,bxDELAY: loop delay;延时调用,确保响铃 dec dx ;DX初始化在主程序

21、中,用于控制循环次数, jne TRIG;恢复现场 pop dx pop ax ret BELL ENDP提取开始时间、结束时间,并且比较时间,是否到时用MOV AH,2CH INT 21H 获取bios时间,经过循环比较时间是否到时。使用 MOV AH,2CH INT 21H来通过bios调用,获取bios时间,将取到的时间的时、分、秒分别放进STARTTIME的存储空间内。再加上一分钟,不断比较结束时间。 注意时分秒的比较具有零界情况,当为23时、59分等时候取药特别注意,所以有一定的必须的比较方法。GETTIMESTARTTIME proc near PUSH AX PUSH BX PU

22、SH CX PUSH DX MOV AH,2CH INT 21H ;通过bios调用获取bios时间 MOV STARTTIME,CH MOV STARTTIME+1,CL MOV STARTTIME+2,DH INC CLCMP CL,60JB GTS_0MOV CL,0INC CHGTS_0: MOV ENDTIME,CH MOV ENDTIME+1,CL MOV ENDTIME+2,DH POP DX POP CX POP BX POP AXretGETTIMESTARTTIME ENDPTIME_TEST PROC NEARPUSH AXPUSH BXPUSH CXPUSH DX MO

23、V AH,2CH INT 21H ;通过bios调用获取bios时间CMP CL,ENDTIME+1JNZTT_EX0CMP DH,ENDTIME+2JB TT_EX0MOVFLAG,1JMP TT_EXTT_EX0:MOVFLAG,0TT_EX:POP DXPOP CXPOP BXPOP AXRETTIME_TEST ENDP键盘输入:从键盘缓冲区提取键盘输入,并且比较。在使用阻塞中断还是使用非阻塞中断的问题上,要有清晰的判断。在本程序设计中,由于我们使用的是不断判断时间的方法,所以我们要使用非阻塞中断的int16H,mov ah,1的取键盘缓冲区的中断方式,否则会在等待键盘输入时,停住,不

24、在比较时间。但是使用非阻塞要注意清除键盘缓冲区,保证下一次输入的正确。每一次等待输入都会产生一个循环,在循环的同时,产生时间比较。rand_input: CALL TIME_TEST CMP FLAG,1 JZ OVER MOV AH,1 INT 16H JZ rand_input CMP AL,DL;比较是否输入正确 JNZ ERRONEXT ADD RIGHT,1 ADD SCORE,1 MOV AH,0 ;清空键盘缓冲 INT 16h JMP rand_word输出分数,并配合convertBCD转化为十进制数从键盘缓冲区提取键盘输入后,进行比较,统计得分,正确、错误分别记入RIGHT、

25、WRONG空间,调用COUTRIGHT,将RIGHT放入AL,进行ASC码转换以后,使用INT 21H,MOV AH,2号中断,将得分输出。COUTRIGHT PROC NEAR PUSH AX PUSH BX PUSH CXPUSH DX MOV AL,RIGHT CALL ConvertBCD MOV BX,AX MOV DL,BH MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H POP DX POP CX POP BX POP AXRETCOUTRIGHT ENDPCOUTSCORE PROC NEAR PUSH AX PUSH BX PUSH C

26、X PUSH DX MOV AL,SCORE CALL ConvertBCD MOV BX,AX MOV DL,BH MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H POP DX POP CX POP BX POP AXRETCOUTSCORE ENDPCOUTERRO PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AL,ERRO CALL ConvertBCD MOV BX,AX MOV DL,BH MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H POP DX POP

27、 CX POP BX POP AXRETCOUTERRO ENDPConvertBCD PROC NEAR ;寄存器al作为参数,返回值是ah和al AAM ;把AL中不大于100的数的十位移至ah,个位一直al ADD AH,30H ADD AL,30H RETConvertBCD ENDP ;转换子函数5.调试过程5.1 汇编调试方法DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 DEBUG的主要命令 (1)显示存储单元的命令D(DUMP),格式为: _Daddress或_Drange (2)输入命令E(ENTER),有两种格

28、式如下:第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为: -E address list 第二种格式则是采用逐个单元相继修改的方法。命令格式为: -E address (3)运行命令G,其格式为: -G=address1address2address3 其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。 跟踪命令T(Trace),有两种格式: (4)逐条指令跟踪 -T =address 从指定地址起执行一条指令后停下来,显示所有寄存器内容

29、及标志位的值。如未指定地址则从当前的CS:IP开始执行。 多条指令跟踪 -T =addressvalue 从指定地址起执行n条指令后停下来,n由value指定。 (5)汇编命令A(Assemble),其格式为: -Aaddress 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。 (6)反汇编命令U(Unassemble)有两种格式。 从指定地址开始,反汇编32个字节,其格式为: -U (7)退出DEBUG命令Q(Quit),其格式为: -Q 5.2

30、 调试过程中的部分难点、主要问题1.寄存器的使用中,在调用程序部分,首先要注意保护现场。2. 调用时钟,取BIOS时间,通过时间变化,得到随机字母。3.输出得分,要考虑ASC码和十进制数的转换。ConvertBCD PROC NEAR ;寄存器al作为参数,返回值是ah和al AAM ;把AL中不大于100的数的十位移至ah,个位一直al ADD AH,30H ADD AL,30H RETConvertBCD ENDP ;转换子函数4.灵活使用寄存器,在COUTSCORE PROC NEAR的子程序调用中,MOV AL,SCORE CALL ConvertBCD MOV BX,AX MOV D

31、L,BH MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H注意用BX做中间寄存器。5.通过取系统时间,对时、分、秒的读取,并通过循环不断取结束时间来控判断结束。我认为应当画好流程图,帮助思考问题,对编写程序很有帮助。6. 在使用阻塞中断还是使用非阻塞中断的问题上,要有清晰的判断。在本程序设计中,由于我们使用的是不断判断时间的方法,所以我们要使用非阻塞中断的int16H,mov ah,1的取键盘缓冲区的中断方式,否则会在等待键盘输入时,停住,不在比较时间。但是使用非阻塞要注意清除键盘缓冲区,保证下一次输入的正确。5.3最后结果用MASM FOR WINDOW

32、S软件进行程序的汇编,编译成目标文件,生成可执行文件,运行,进入运行界面,即主菜单如图。敲空格键,进入随机产生字母界面,并开始计时输入正确后,产生新的随机字母。一分钟后,根据正确和错误的个数,统计分数6.实验的结论及心得体会通过这四周的汇编程序设计实验,首先让我了解到,即使是一个非常简单的程序,它所包含的知识点也是很多的,我们必须把书上的知识点弄明白、不能好高骛远。对于汇编程序设计,它不像我们以前学的高级语言一样通俗易懂,所以我必须花更多的时间去苦心钻研。要想要写出一个完整健全的程序,还必须要有一个清晰的思路以及一个完整的算法去实现它,要是一开始思路不正确,即使能够运行,也存在着大问题。最重要

33、的是考虑到程序的运行顺序的特点以及可实现任意跳转的功能外,把握好整个程序的思路和执行流程,为了能更好的让一个程序实现完整的功能。一开始写汇编程序,实在是难以下手。根本不知道第一步应该做什么。这个时候,我去查找相关的资料,去图书馆翻看相应的书籍,看是否有相类似的课题出现,上网查找资料,下载很多小程序程序去了解它的思路,了解每一步的含义,走近程序,看很多的程序,并加入自己的思考、想法,并加以贯通,将自己在课堂上学到的东西结合实际,在摸索中不断积累经验。在写我的这个打字游戏的程序中,起初我翻看到一些有关的小程序,但是发现它们的打字游戏并没有我想的打字游戏那么有难度,他们只是对固定的一行字母进行打字、

34、对比,与我的一分钟内完成随机打字的游戏相比,要简单很多。所以,我很快就能看懂这些程序,但是我在想怎么才能做出我想要的、我自己的程序呢?于是我查找了很多关于随机产生字母,定时计数器、判断对错、统计分数、响铃的程序。老师说过,同一个题目,一百个人写会有一百种程序,因为每个人都有自己的思路,通过分析他们的程序,我觉得自己也应该有自己的程序,于是我便用自己的理解,开始写自己的程序。回想起,当我通过时钟中断做好随机产生字母的时候,我整整开心了一个晚上的,因为这是属于我的程序!而在这之后我又遇到各种各样的问题了,在解决了一个又一个看似很小的问题上,我花费了大量的时间去研究、去寻找答案,当我找到了问题的解决

35、方法之后,我会非常非常地开心,那种成功的喜悦感无法用言语去表达的。完成这个程序还让我懂得了不要逃避,因为碰到问题、解决问题,做到“不抛弃、不放弃”才是进步的过程。就像我一开始的想法是利用阻塞中断编写键盘输入,这样就导致了在比较时间上,存在着bug,如果不按键,就不能比较时间,这就导致这个程序就是不符合要求的。通过老师的提点,已经精心指导,最终通过循环与非阻塞中断解决了此问题,同时非阻塞中断还存在着对键盘缓冲的清空的问题,由于一开始这个问题并没有被想到,就导致了程序运行看似哪里都对,但是总是运行不对的情况。在老师发现这一问题,让我修改的情况下,我修改了好几天,晚上断电后、一直将自己和另一个舍友的

36、电脑调试到没有电,也都没有一点头绪。我想到了放弃。第二天一大早,我就找到老师,告诉老师,能不能换个规则,这个问题对于我可能太难了。而老师立刻教育了我,他说不要遇到问题就选择逃避,解决问题才是进步的开始。我也想对啊,如果就为了这么小的一个问题就放弃了,换了其他的规则,即使也是“打字游戏”,也将是一个不完整的、绝对不会令自己满意的一个程序。可能也由于一个月的汇编设计经验,以及已经编出几百行代码的信心,所以我重振旗鼓,绝不放弃,通过翻阅资料,上网寻找,最终在答辩的那天早上,让我想到了这个问题的存在,并加以解决。这次实验,是一次让我到目前的大学学习过程中最有成就感的一次实验,在最终完成这个实验的时候,

37、我几乎都是热泪满眶,更是让我增加了对计算机编程的热爱。对我来说,这次实验是对我的汇编这门课程能力上的提升,以前只会看着课本上的概念、题目去理解汇编,很容易就忘记,而这一次的亲身实践,让我受益匪浅、激发了我对汇编,乃至计算机编程的无限兴趣。挑战自我,不抛弃不放弃,我们可以更好!7参考文献1.IBM-PC汇编语言程序设计沈美明 温冬婵 2.IBM-PC汇编语言程序设计实验教程沈美明 温冬婵 张赤红3.IBM PC DOS 3.30用户指南&用户参考手册&用户技术手册 廖萃淇4.IBM PC DOS 3.X版本技术参考手册夏东涛 朱芒大译5.DOS 6问题精解与命令参考手册(美)索查等著6.PC中断

38、大全:BIOS, DOS及第三方调用的程序员参考资料 (美)布朗, 凯尔著; 张小朋等译 7.操作系统原理DOS篇 张昆苍 清华大学出版社8.附录:DATAS SEGMENTINSTRUCTION1 db *$ INSTRUCTION2 db *please into the word which appear in the screen*$ INSTRUCTION3 db *author:Miss YangZI*$ INSTRUCTION4 db *press any key to start and you will have 60s*$ INSTRUCTION5 db *TIME*OVE

39、R*$ INSTRUCTION6 db RIGHT INPUT:$ INSTRUCTION7 db ERRO INPUT:$ INSTRUCTION8 db YOUR SCORE:$ INSTRUCTION9 db *press*Enter*to*exit*$ RIGHT DB 0 ERRO DB 0 SCORE DB 0 STARTTIME DB 0,0,0 ENDTIME DB 0,0,0 FLAG DB 0DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSstart:MOV AX,DATAS ;将DS指向DATAMOV DS,AX;此处输入代码段代码call clear_screen ;设置初始化屏幕属性;显示游戏规则mov ah,2 ;置光标位置 功能号2号功能,置光标 mov bh,0 ; 页号 mov dh,5 ; 行号 mov dl,14 ; 列号 int 10h MOV DX,OFFSET INSTRUCTION1;输出INSTRUCTION字符串信息 取 MOV AH,9 INT 21H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号