汇编语言猜数字课程设计.docx

上传人:b****8 文档编号:10543692 上传时间:2023-02-21 格式:DOCX 页数:15 大小:54.30KB
下载 相关 举报
汇编语言猜数字课程设计.docx_第1页
第1页 / 共15页
汇编语言猜数字课程设计.docx_第2页
第2页 / 共15页
汇编语言猜数字课程设计.docx_第3页
第3页 / 共15页
汇编语言猜数字课程设计.docx_第4页
第4页 / 共15页
汇编语言猜数字课程设计.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

汇编语言猜数字课程设计.docx

《汇编语言猜数字课程设计.docx》由会员分享,可在线阅读,更多相关《汇编语言猜数字课程设计.docx(15页珍藏版)》请在冰豆网上搜索。

汇编语言猜数字课程设计.docx

汇编语言猜数字课程设计

汇编语言

课程设计

 

题目:

专业班级:

姓名:

_______

学号:

摘要

随着计算机技术的普及及其向其他学科的快速渗透浅显的计算机技术已经普遍不能适应当今的形势,这在就业以及进入新的工作方面,就更加突出。

汇编语言是一种面向CPU指令系统的程序语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址。

本程序<<猜数字游戏>>主要由汇编语言相关知识编写而成。

关键词:

汇编语言;猜数字;指令系统;游戏

 

Abstract

Withthepopularityofcomputertechnologyandtherapidpenetrationofotherdisciplinesplaincomputertechnologyhasgenerallynotadapttotoday'ssituation,whichinemploymentandaccesstothenewwork,themoreprominent.CPU-orientedassemblylanguageisalanguageinstructionprogram,whichusesthesystemtorepresentthemnemonicinstructionopcodesandoperands,saidoperandaddresswithsymbolicaddresses.

Thisprogramismainlyguessinggamewritteninassemblylanguageknowledgetogether.

Keywords:

assemblylanguage;guessing;instruction;games

 

目录

1.概述1

1.1题目描述1

1.2功能简介1

2.系统总体设计1

2.1系统总体分析1

2.2程序设计流程图2

3.详细的算法描述3

3.1随机数的产生3

3.2从键盘输入数据3

3.3数据的比较3

3.4其他指令3

4.调试分析4

4.1运行方法4

4.2程序运行界面4

4.2.1程序开始界面4

4.2.2程序进行比较5

4.2.3.得出结果5

5.使用说明6

6.总结7

参考文献8

致谢9

源程序10

1.概述

1.1题目描述

设计一个猜数字的游戏,程序运行后自动产生一个1~100之间的随机整数。

游戏开始后,程序根据游戏者输入的数字与所需猜测数字进行比较并给出响应,游戏者根据程序给出的响应再次猜数字,最后得到正确数字。

程序应有相应的操作、输入和输出提示。

1.2功能简介

本程序作为一个猜字游戏软件,以QASM作为软件开发环境,利用随机函数通过数字比较,编程实现了一个在DOS下运行的猜数字游戏软件。

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

2.系统总体设计

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

根据需求分析的结果,本系统至少有以下模块:

产生随机数模块、输入模块、比较模块、提示模块。

2.1系统总体分析

该课程设计的特点在于程序运行后产生随机数的过程比较巧妙。

它是调用了BIOS功能调用的1AH号中断,读取系统时钟。

然后进行除法运算得到余数,再进行加法运算得到符合要求的随机数。

此课程设计的另外一个特点是定义了多个子程序,将各功能模块化,便于在调试过程中查找错误和修改,不会影响其他模块。

各模块功能说明如下:

产生随机数模块的主要功能是程序运行后自动产生一个1~100之间的随机整数。

输入模块的主要功能是实现从键盘输入用户所猜测的数据。

比较模块的主要功能是用输入的数据与随机数比较。

提示模块的主要功能是经过比较后提示用户输入数据与随机数的差距。

2.2程序设计流程图

根据上述分析,该系统的程序流程图如下图所示:

图2.1程序设计流程图

3.详细的算法描述

3.1随机数的产生

通过查找各种资料知,随机数的产生也是一种算法,通过种子数据,计算出不同的随机数。

但,此次试验,我通过对系统当前时间的提取来表示随机数,即用时间中的“秒”来作这个随机数。

指令为:

movah,2ch;取系统时间,CH:

CL=时间:

分钟;DH=秒

int21h

3.2从键盘输入数据

如果仅用指令:

movah,01h

Int21h

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

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

3.3数据的比较

用输入的数据(存放于bx中)与随机数(存放于a中:

mova,dx)比较;如果大于,则输出提示数据太大,请重新输入,并跳转到键盘输入数据指令;如果小于,则输出提示数据太小,请重新输入,并跳转到键盘输入数据指令;如果等于,则提示正确,并结束。

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

3.4其他指令

回车换行指令:

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

MOVAH,02h

MOVDL,0ah

INT21h

MOVDL,0dh

INT21h

输出提示性语句指令:

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

MOVAH,9

MOVDX,OFFSETmess2

MOV21h

退出语句:

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

MOVAH,4CH

INT21H

4.调试分析

4.1运行方法

…>masm01.asm

…>Link01

…>01

4.2程序运行界面

4.2.1程序开始界面

1)本程序的运行环境为DOS操作系统。

2)进入演示程序后,即显示主菜单界面。

3)程序启动后产生随机数,系统给出提示要求用户输入数据,如图所示:

图4.1程序开始界面

4.2.2程序进行比较

由键盘输入的数字与随机数比较,如果大于随机数,则提示输入的数太大,请重新输入;如果小于随机数,则提示输入的数太小,请重新输入;如果输入的数不是十进制数,则直接退出,如图所示:

图4.2程序比较提示界面

4.2.3.得出结果

PLEASEINPUTYOURNUMBER:

13

YOURNUMBERISSMALLER,PLEASECHANGEYOURNUMBER:

30

YOURNUMBERISSMALLER,PLEASECHANGEYOURNUMBER:

50

YOURNUMBERISSMALLER,PLEASECHANGEYOURNUMBER:

60

YOURNUMBERISLARGER,PLEASECHANGEYOURNUMBER:

55

YOURNUMBERISLARGER,PLEASECHANGEYOURNUMBER:

51

YOURNUMBERISSMALLER,PLEASECHANGEYOURNUMBER:

52

YOURNUMBERISSMALLER,PLEASECHANGEYOURNUMBER:

53

THAT’Stherightnumber!

!

!

用户输入的数字与随机数比较,当与随机数相等时输出THAT’Stherightnumber!

!

!

如图所示:

图4.3程序得出结果界面

5.使用说明

1)程序经过汇编、链接运行后,屏幕上将显示猜数字游戏的主菜单。

如下如下示:

   Please input your number:

玩家在键盘输入数字开始游戏。

2)在一次游戏中,玩家只能输入数字,若输入字母或符号,则自行退出游戏。

如果玩家猜中数字,则游戏给出提示信息“That's the right number!

!

!

3)如果玩家再一次游戏结束后想接着玩,则需重新运行游戏,如果玩家不想接着玩,则直接关闭就可退出游戏。

6.总结

通过这次课程设计,我重温了本学期所学的知识,认识到了自己在学习方面的缺陷和不足。

我个人认为本次试验的最大难点就是产生随机数,然而通过查询,发现汇编中产生随机数的命令都很复杂,并且有些命令是我没有见过的,经过多次考虑,还是选择了使用秒针随机选中的数据作为随机数。

这或许是一个特点,也是一个不足!

通过这次的课程设计,让我重温了一遍汇编语言的知识。

重新熟悉了各种汇编指令。

特别是对于算法思想有了一定的提高,各种汇编指令的小技巧,数据各种各样的操作指令序列让我感觉到,汇编语言也能够越学越让人沉入,容易让人感到成功的喜悦!

虽然程序已经写完,但是还是遗憾不能够弄懂真正的随机数是怎样产生的;另外,也因为这个程序小了点,所以没有用子程序的方法,我想如果加大程序,还是用子程序的方法会显得条理更加清楚明白。

 

参考文献

[1]钱晓捷.汇编语言程序设计[M].北京:

电子工业出版社,2012.6.

[2]沈美明温冬婵等.IBM-PC汇编语言程序设计[M].北京.清华大学出版社,2001.8。

[3] 詹仕华等.汇编语言程序设计[M].北京:

中国电力出版社,2008.2. 

[4]詹仕华等.汇编语言程序设计习题解答及课程实验、设计辅导[M].北京:

中国电力出版社,2008.2. 

[5]王爽.汇编语言[M]. 北京:

清华大学出版社2003.5. 

[6]曹加恒等.新一代汇编语言课程设计[M].北京:

高等教育出版社,2003.6. 

[7]杨路明等.汇编语言程序设计[M].长沙:

中南大学出版社,2005.8.

致谢

在本次课程设计中,我非常感谢在我遇到问题时耐心给我讲解和解决问题的老师和同学们。

在老师的帮助下我不但完成了课程设计,而且也学到了很多知识,让我掌握了学习方法。

同学之间的帮助,相互鼓励,以及相互探讨,给了我很大的信心,以及跨越式的进步。

在课程设计即将完成之际,回顾紧张但又充实的制作过程,我在此向所有关心我的及帮助我的老师和同学们致以最真诚的感谢。

 

源程序:

dataSEGMENT

mess1db"Pleaseinputyournumber:

$"

mess2db"Yournumberislarger,pleasechangeyournumber:

$"

mess3db"Yournumberissmaller,pleasechangeyournumber:

$"

mess4db"That'stherightnumber!

!

!

$"

adw?

dataENDS

codeSEGMENT

assumecs:

code,ds:

data

begin:

movax,data

movds,ax

movah,9

int21h

MOVAH,02h

MOVDL,0ah

INT21h

MOVDL,0dh

INT21h

movah,2ch;取当前时间的秒为随机数

int21h

moval,dh

mova,ax

movbx,0

l0:

MOVAH,1;输入十进制数

INT21h

CMPAL,0dh

JZl4

cmpal,48

jbexit

cmpal,57

jaexit

ANDAL,0fh

MOVAH,0

XCHGAX,BX

MOVCX,10

MULCX

ADDBX,AX

JMPl0

l4:

MOVAH,02h

MOVDL,0ah

INT21h

MOVDL,0dh

INT21h

cmpbx,a;输入值与随机数比较

jbl1;小于

cmpbx,a;大于

jal2

cmpbx,a;等于

jzl3

l1:

movah,9

movdx,offsetmess3

int21h

MOVAH,02h

MOVDL,0ah

INT21h

MOVDL,0dh

INT21h

movax,0

movbx,0

l2:

movah,9

movdx,offsetmess2

int21h

MOVAH,02h

MOVDL,0ah

INT21h

MOVDL,0dh

INT21h

movax,0

movbx,0

jmpl0

movdx,offsetmess4

int21h

exit:

MOVAH,02h

MOVDL,0ah

INT21h

MOVDL,0dh

INT21h

movah,4ch

int21h

codeends

endbegin

 

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

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1