汇编语言:猜数字游戏的设计与实现 联系客服

发布时间 : 星期四 文章汇编语言:猜数字游戏的设计与实现更新完毕开始阅读70546a3543323968011c92a2

武汉理工大学《汇编语言程序设计》课程设计说明书

猜数字游戏的设计与实现

1 需求说明或问题描述

1.1 问题描述

程序运行后自动产生一个1~100之间的随机整数,游戏开始,程序根据游戏者输入的数字与所需猜测数字进行比较,并给出响应,游戏者根据程序响应再猜数字,最后得到正确数字。

1.2 需求说明

程序应有操作提示,输入和输出,界面追求友好,最好是菜单式的界面。设计若干用例(测试数据),上级测试程序并分析(评价)所设计的程序。

2 设计说明

2.1 简要设计框图如下:

2.2 简要分析思想

首先通过指令在程序中产生随机数,由键盘输入的数字与其比较,如果大于随机数,则提示输入的数太大,请重新输入;如果小于随机数,则提示输入的数太小,请重新输入;如果等于随机数,则提示正确;如果输入的数不是十进制数,则直接退出。

3 详细的算法描述

3.1随机数的产生

1

武汉理工大学《汇编语言程序设计》课程设计说明书

通过查找各种资料知,随机数的产生也是一种算法,通过种子数据,计算出不同的随机数。但,此次试验,我通过对系统当前时间的提取来表示随机数,即用时间中的“秒”来作这个随机数。

指令为:

mov ah,2ch ;取系统时间,CH:CL=时间:分钟;DH=秒 int 21h

3.2 从键盘输入数据

如果仅用指令:mov ah,01h Int 21h

来从键盘读取数据,则只能取一个字符,即,只能读取一位数字;在试验中通过反复调试,可以对每次输入的数(存放于al中)与“回车”的ASCII比较,如果不是“回车”,则返回继续输入;如果是回车,则跳出,完成数据的输入。

每一次返回继续输入时,原来的al中的数据要以个位加入到bx中,即,bx=bx*10+al;这样可以保证输入的数据不会丢失。

3.3 数据的比较

用输入的数据(存放于bx中)与随机数(存放于a中:mov a,dx)比较;如果大于,则输出提示数据太大,请重新输入,并跳转到键盘输入数据指令;如果小于,则输出提示数据太小,请重新输入,并跳转到键盘输入数据指令;如果等于,则提示正确,并结束。

其中,小于跳转用jb;大于跳转用ja;等于用jz。

3.4 其他指令

回车换行指令:为了保持程序输出结果的工整性,多用回车换行指令:

MOV AH,02h MOV DL,0ah INT 21h MOV DL,0dh INT 21h

输出提示性语句指令:为使程序输出界面更互动化,常用提示性语句如:

MOV AH,9

MOV DX,OFFSET mess2 MOV 21h

退出语句:使用该语句退出整个程序:

MOV AH,4CH INT 21H

4 源程序与执行结果(含测试方法和测试结果)

4.1 源程序

2

武汉理工大学《汇编语言程序设计》课程设计说明书

data SEGMENT

mess1 db \input your number:$\

mess2 db \number is larger,please change your number:$\ mess3 db \number is smaller,please change your number:$\ mess4 db \the right number!!!$\ a dw ? data ENDS

code SEGMENT

assume cs:code,ds:data begin:

mov ax,data mov ds,ax

mov ah,9

mov dx,offset mess1 int 21h MOV AH,02h MOV DL,0ah INT 21h MOV DL,0dh INT 21h

mov ah,2ch ;取当前时间的秒为随机数 int 21h mov al,dh mov ah,0 mov a,ax

mov bx,0

l0:MOV AH,1 ;输入十进制数 INT 21h CMP AL,0dh JZ l4

cmp al,48 jb exit cmp al,57 ja exit

AND AL,0fh MOV AH,0 XCHG AX,BX MOV CX,10 MUL CX ADD BX,AX JMP l0 l4:

MOV AH,02h MOV DL,0ah INT 21h

MOV DL,0dh INT 21h cmp bx,a ;输入值与随机数比较 jb l1 ;小于 cmp bx,a ;大于 ja l2 cmp bx,a ;等于 jz l3

l1:mov ah,9 mov dx,offset mess3 int 21h MOV AH,02h MOV DL,0ah INT 21h MOV DL,0dh INT 21h mov ax,0 mov bx,0 jmp l0

l2:mov ah,9 mov dx,offset mess2 int 21h MOV AH,02h MOV DL,0ah INT 21h MOV DL,0dh INT 21h mov ax,0

3

武汉理工大学《汇编语言程序设计》课程设计说明书

mov bx,0

jmp l0

l3:mov ah,9

mov dx,offset mess4 int 21h

exit:MOV AH,02h MOV DL,0ah INT 21h

MOV DL,0dh INT 21h mov ah,4ch int 21h code ends end begin

4.2 执行结果

4.2.1 执行方法:…>masm 01.asm …>Link 01

…>01

4.2.2 结果: 结果1:(正确)

G:\\masm>01

Please input your number: 55

Your number is larger, please change your number: 25

Your number is smaller, please change your number: 40

Your number is larger, please change your number: 30

Your number is smaller, please change your number: 35

Your number is smaller, please change your number: 37

That's the right number!!! 结果2:(输入错误) G:\\masm>01

4