如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
PAGE\*MERGEFORMAT392020年4月19日微机原理课程设计老虎机文档仅供参考,不当之处,请联系改正。老虎机模拟程序摘要本次课程设计要求设计一个能够模拟实现老虎机游戏的程序,程序不断产生3个1到7的随机数,使用三个键分别控制老虎机的启动、暂停和结束,根据暂停后得到数字确定获奖信息。本程序采用汇编语言,基于8086平台实现。老虎机的启动、暂停和结束分别能够使用键盘上三个不同键R,S,ESC来控制,经过读写端口实现键值的输入和显示数字的输出;老虎机滚筒上的随机数,经过读取端口和获得BIOS系统累加时数来实现;老虎机的图形界面,兼有欢迎信息和提示信息,经过输出字符串来显示。最终实现了能够产生随机数,而且经过键盘控制启动、暂停和退出,有友善图形界面的老虎机模拟程序。关键字:老虎机;8086;汇编语言;随机数;图形界面设计任务分析与方案选择1.1任务分析本次课程设计需要模拟老虎机进行摇奖,有以下几个需求:(1)随机数。老虎机三个滚筒上出现范围为1到7的随机数。随机数能够经过读取端口或者获取BIOS系统累加时数获取[1]。(2)使用三个不同的键来控制老虎机的启动、暂停和结束。由R键控制老虎机启动,S键控制老虎机暂停,ESC控制老虎机退出。而且在按到其它无关键时,不影响程序运行。(3)与获奖数字比较。老虎机一共三位数,直接依次判断比较。(4)较为完整的运行界面。经过输出,在屏幕上显示欢迎信息、使用老虎机的方法、中奖号码、老虎机现在的状态、随机数出现的方框。1.2方案选择1.2.1系统硬件设计选择老虎机的三位随机数要求数据各位同时传送,符合8255可编程并行接口的特点,因此选用8255芯片。8255A工作于方式0,而且使用74LS138译码器实现8255A的片选电路,经过键盘输入控制信号,显示器显示老虎机的界面。1.2.2软件设计选择老虎机需要获取三位随机数,本次使用了两种方法获得随机数,一个是经过读取端口获得随机数,另一个是利用INT1AH,AH=0获取BIOS系统累加时数。要经过键盘上三个不同按键控制老虎机的启动、暂停和结束,调用21号中断的08h功能能够实现无回显的键盘输入。确定号码是否中奖直接经过逐位比较进行判断。图形界面调用10h中断进行设置[2]。软件设计的编写和调试在emu8086上完成,最终的运行与改进在MasmforWindows集成实验环境共享版上完成。详细设计2.1理论分析与计算本次设计最核心的内容就是产生随机数,利用读取端口或者获取BIOS系统累加时数都能够得到随机数,可是得到的随机数范围并不是在1到7之间的,因此需要将得到的随机数模7后加上1,即可得到1到7之间的随机数。得到随机数之后,还需要判断它是否为一个中奖号码。经过观察能够得知,中奖号码有两种类型,一种是三个数字完全相同,另一种是三个数字呈依次加一递增,能够使用LOOP来判断,可是由于数字很少,只有三位,因此能够直接将该随机数的每一位与获奖数字的每一位进行比较。2.2算法设计图1主要流程本次设计的主要部分流程图1所示。用户在点击R或者r键之后,老虎机的滚筒就开始转动,状态显示为RUNNING,而且产生3个范围在1到7之间的随机数,分别依次存放在num的第零、第一、第二个位置。按下S或者s键,随机数停止改变,暂停,进入判断是否中奖的环节。随机数的获取,能够利用INT1AH,AH=0获取BIOS系统累加时数来实现,然而如果只使用这一种方法,得到的三位随机数将是完全相同的,因此经过查阅相关资料,最终本程序采用了两种不同的方式获取随机数,一个就是利用INT1AH,AH=0获取BIOS系统累加时数,另一个则是经过读取端口获得随机数。本程序中,rand1和rand2是读取端口获得随机数,由于读取的端口不同,获得的随机数也不同;rand3是获取BIOS系统累加时数获取随机数。;读取端口获得随机数rand1procnearpushcxpushdxpushaxmovax,0h;间隔定时器out43h,al;经过端口43hinal,40h;读取端口获得随机数inal,40h;随机数在al中movbl,7divblmovbl,ahaddbl,1addbl,30hpopaxpopdxpopcxretrand1endp;获取bios系统累加时数rand3procnearpushcxpushdxpushaxmovah,0;读计数器值int1ahmovax,dxandah,3;更随机movdl,7divdlmovbl,ahaddbl,1addbl,30hpopaxpopdxpopcxretrand3endp两种获