微机原理优秀课程设计老虎机.docx
《微机原理优秀课程设计老虎机.docx》由会员分享,可在线阅读,更多相关《微机原理优秀课程设计老虎机.docx(29页珍藏版)》请在咨信网上搜索。
1、老虎机模拟程序摘要此次课程设计要求设计一个能够模拟实现老虎机游戏程序,程序不停产生3个1到7随机数,使用三个键分别控制老虎机开启、暂停和结束,依据暂停后得到数字确定获奖信息。本程序采取汇编语言,基于8086平台实现。老虎机开启、暂停和结束分别能够使用键盘上三个不一样键R,S,ESC来控制,经过读写端口实现键值输入和显示数字输出;老虎机滚筒上随机数,经过读取端口和取得BIOS系统累加时数来实现;老虎机图形界面,兼有欢迎信息和提醒信息,经过输出字符串来显示。最终实现了能够产生随机数,而且经过键盘控制开启、暂停和退出,有友善图形界面老虎机模拟程序。关键字:老虎机;8086;汇编语言;随机数;图形界面
2、1. 设计任务分析和方案选择1.1任务分析此次课程设计需要模拟老虎机进行摇奖,有以下多个需求:(1)随机数。老虎机三个滚筒上出现范围为1到7随机数。随机数能够经过读取端口或获取BIOS系统累加时数获取1。(2)使用三个不一样键来控制老虎机开启、暂停和结束。由R键控制老虎机开启,S键控制老虎机暂停,ESC控制老虎机退出。而且在按到其它无关键时,不影响程序运行。(3)和获奖数字比较。老虎机一共三位数,直接依次判定比较。(4)较为完整运行界面。经过输出,在屏幕上显示欢迎信息、使用老虎机方法、中奖号码、老虎机现在状态、随机数出现方框。1.2方案选择1.2.1系统硬件设计选择老虎机三位随机数要求数据各位
3、同时传送,符合8255可编程并行接口特点,所以选择8255芯片。8255A工作于方法0,而且使用74LS138译码器实现8255A片选电路,经过键盘输入控制信号,显示器显示老虎机界面。1.2.2软件设计选择老虎机需要获取三位随机数,此次使用了两种方法取得随机数,一个是经过读取端口取得随机数,另一个是利用INT 1AH, AH = 0获取BIOS系统累加时数。要经过键盘上三个不一样按键控制老虎机开启、暂停和结束,调用21号中止08h功效能够实现无回显键盘输入。确定号码是否中奖直接经过逐位比较进行判定。图形界面调用10h中止进行设置2。软件设计编写和调试在emu8086上完成,最终运行和改善在Ma
4、sm for Windows集成试验环境共享版上完成。2. 具体设计2.1理论分析和计算此次设计最关键内容就是产生随机数,利用读取端口或获取BIOS系统累加时数全部能够得到随机数,不过得到随机数范围并不是在1到7之间,所以需要将得到随机数模7后加上1,即可得到1到7之间随机数。得到随机数以后,还需要判定它是否为一个中奖号码。经过观察能够得悉,中奖号码有两种类型,一个是三个数字完全相同,另一个是三个数字呈依次加一递增,能够使用LOOP来判定,不过因为数字极少,只有三位,所以能够直接将该随机数每一位和获奖数字每一位进行比较。2.2算法设计图1 关键步骤此次设计关键部分步骤图1所表示。用户在点击R或
5、r键以后,老虎机滚筒就开始转动,状态显示为RUNNING,而且产生3个范围在1到7之间随机数,分别依次存放在num第零、第一、第二个位置。按下S或s键,随机数停止改变,暂停,进入判定是否中奖步骤。随机数获取,能够利用INT 1AH, AH = 0获取BIOS系统累加时数来实现,然而假如只使用这一个方法,得到三位随机数将是完全相同,所以经过查阅相关资料,最终本程序采取了两种不一样方法获取随机数,一个就是利用INT 1AH, AH = 0获取BIOS系统累加时数,另一个则是经过读取端口取得随机数。本程序中,rand1和rand2是读取端口取得随机数,因为读取端口不一样,取得随机数也不一样;rand
6、3是获取BIOS系统累加时数获取随机数。;读取端口取得随机数rand1 proc near push cx push dx push ax mov ax, 0h ;间隔定时器 out 43h, al ;经过端口43h in al, 40h ;读取端口取得随机数 in al, 40h;随机数在al中 mov bl, 7 div bl mov bl, ah add bl, 1 add bl, 30h pop ax pop dx pop cx retrand1 endp;获取bios系统累加时数rand3 proc near push cx push dx push ax mov ah, 0 ; 读
7、计数器值 int 1ah mov ax, dx and ah, 3 ; 更随机 mov dl, 7 div dl mov bl, ah add bl, 1 add bl, 30h pop ax pop dx pop cx retrand3 endp两种获取随机数代码图2a和图2b所表示:图2a 经过读取端口获取随机数 图2b 获取bios系统累加时数图3 判定是否中奖获取随机数程序暂停以后,需要判定得到随机数是否为中奖号码。中奖号码分为两种,一个是三个数字完全相同,另一个是三个数字依次递增1。因为中奖号码只有三位数字,所以直接使用CMP判定,不用LOOP循环。判定中奖过程图3所表示,首先判定第
8、一个数是否和第二个数相等,假如相等继续判定第二个数和第三个是否相等,假如不等,那么没有中奖,不然中奖。假如第一个数和第二个数不等,判定第一个数是否比第二个数小1,假如不是,则没有中奖,不然继续判定第二个数是否比第三个数小1,假如是,则中奖,若不是,则没有中奖。在判定完成后,假如没有中奖,程序将会在屏幕上显示信息,告诉玩家没有中奖;假如中奖,依据界面上已经有中奖号码展示,屏幕上将会提醒玩家取得几等奖,在玩家选择重新开始后,屏幕上中奖信息将被会清空。2.3软件设计整体步骤图图4所表示:图4 整体步骤整个程序能够分为四个板块:(1)界面显示。经过改变背景和字体颜色,将整个界面分为了多个部分,分别有:
9、欢迎界面、状态显示界面、中奖号码显示、中奖情况、随机号码显示。在欢迎界面中,打印了欢迎信息和提醒信息;状态显示界面显示程序现在状态是运行中还是暂停;中奖号码显示界面告诉玩家,哪些号码是有奖号码,分别对应几等奖;中奖情况在一次摇奖结束程序暂停时出现,用来显示玩家是否中奖;随机号码界面就是老虎机滚筒,上面显示三位1到7随机数。(2)获取随机数。因为有老虎机有三位数,范围为1到7,假如只用一个rand函数,出现随机数是完全相同,所以此次设计里三个随机数函数rand1、rand2和rand3。分别用读取端口取得随机数和获取BIOS系统累加时数取得随机数,再经过除以7得到0到6之间余数加一,取得1到7之
10、间随机数。(3)判定是否中奖。随机得到数字保留在num中,只有三个数字,能够不用LOOP而直接依次判定是否满足三位数相同或三位数依次加一条件,假如满足,就根据游戏设定输出中奖信息,没有中奖就输出未中奖信息。(4)延时板块3。能够在程序中加入delay函数来改变滚筒中随机数出现速度,该函数是经过循环来程序运行速度减慢,调整delayax和cx大小即可调整老虎机旋转速度快慢,也能够不使用该板块。setpos macro row, col push ax push bx push dx mov ah, 02h ;调用10中止2号子程序 mov bh, 0 mov dh, row ;设置光标所在行 m
11、ov dl, col ;设置光标所在列 int 10h pop dx pop bx pop axendm在程序中,数次出现需要在某个特定位置输出字符,所以需要设置光标位置,为了能够方便地设置光标位置,查阅资料后,在程序中使用了一个宏,调用第10h号中止2号子程序用来置光标位置,图5所表示。图5 设置光标位置这段代码中,将AX、BX、DX压入栈,在程序结尾弹出栈,是因为在宏中这三个寄存器值会发生改变,所以将它们压入栈后确保了在这段代码运行结束后,AX、BX、DX值不会被改变,不影响主程序运行。8086CPU74LS138译码器8255A芯片显示器键盘2.4硬件电路设计图6 硬件电路框图硬件电路框
12、图图6所表示,关键使用了五种元器件,分别是:(1)8086处理器,工作在最小模式,控制实施每条指令。(2)74LS138译码器,片选电路,用于取得片选信号。(3)8255A芯片,工作在方法0,也就是基础输入输出方法,PC口连接到键盘接口,经过键盘读入控制信号;PA口和PB口连接到显示器,在显示器上进行输出显示。(4)显示器,显示目前老虎机界面状态。(5)键盘,键入控制信号,控制老虎机状态。3. 系统调试和效果分析图7 开始界面(1)玩家刚进入程序时界面图7所表示,屏幕上显示欢迎信息,欢迎玩家并介绍该游戏名称;操作说明,帮助玩家愈加快地了解怎样操作,方便玩家使用;状态栏,显示游戏目前状态;中奖号
13、码板块,公布有奖号码;摇号区,显示玩家目前数字,最初进入游戏时为空。图8 运行中(2)按下R或r键以后,老虎机开始运行,界面图8所表示,状态栏显示目前状态RUNNING,同时玩家摇奖区中三位范围为1到7随机数不停改变。图9 未能获奖(3)RUNNING状态下按下S或s键暂停后,老虎机进入暂停状态,状态栏显示目前状态为STOP,摇奖区三个数字暂停滚动,依据摇奖区目前静止时得到数字和上方获奖数字比较后,判定出目前数字并未获奖,屏幕上显示信息告诉玩家未获奖,图9所表示。图10 三个数相同获奖(4)RUNNING状态下按下S或s键暂停后,老虎机进入暂停状态,状态栏显示目前状态为STOP,摇奖区三个数字
14、暂停滚动,依据目前静止时得到数字判定是否中奖,若三个数字相同,则根据中奖号码栏目显示次序,确定取得几等奖,并显示获奖情况,图10所表示。图11 三个数依次加一递增获奖(5)RUNNING状态下按下S或s键暂停后,老虎机进入暂停状态,状态栏显示目前状态为STOP,摇奖区三个数字暂停滚动,依据目前静止时得到数字判定是否中奖,若三个依次递增1,则根据中奖号码栏目显示次序,确定取得几等奖,并显示获奖情况,图11所表示。图12 结束退出界面(6)按下ESC后,程序图12所表示,界面上显示退出提醒语句语句,提醒玩家再按下任意键以后即可退出程序。4. 问题处理(1)界面设置:最开始只能使用在字符串前面补充空
15、格方法来使字符出现在指定位置,很不便于操作,以后经过查阅资料,使用了一个宏定义,来设置光标位置,相当于C语言中能够传输参数函数,每次传输行和列两个参数,即可将字符串输出在指定位置。而且为了使界面愈加美观,需要将一些地方设置成有颜色矩形框;在输出界面时候,最开始只能一行一行输出,代码十分冗长,在查资料后了解到在一段字符串后加上0dh,0ah,就能够将字符串换行。(2)读入字符:21号中止01H功效,是带回显键盘输入,然而在此次设计当中,输入了字符以后不需要显示出来,这么显得愈加美观,所以使用了21号中止08H功效,这是无回显键盘输入。在程序运行中,假如按下了并非S键其它键,程序就会一直运行,再按
16、下S键也不能暂停,为了处理这个问题,调用了INT 21H0CH功效,清除输入缓冲区。(3)在使用jz跳转时候,出现错误:jz是短跳转指令,jmp为长跳转指令,所以先jz跳转到一个较近标签处,再从这个标签jmp到需要地方。(4)随机数:假如只经过获取BIOS相同累加时数来获取随机数,得到三位数相同,所以查阅资料了解到了另一个获取随机数方法,经过读取端口取得随机数,读取两个不一样端口取得随机数也不一样,所以三位随机数就能成功得到。参考文件1 杨永生,王立红.汇编语言程序设计M.北京:清华大学出版社,2 鲍远慧.8088/8086汇编语言中宏编制和使用J.智能计算机和应用,(3):20-213 王义
17、.汇编语言程序设计关键点和技巧J.中国西部科技,(29):32-33stack segment dw 64 dup(0)stack endsdata segment title1 db *, 0dh, 0ah db * *, 0dh, 0ah db * Simulation Of Slot Machine *, 0dh, 0ah db * *, 0dh, 0ah db * WELCOME TO THE GAME, AND GOOD LUCK *, 0dh, 0ah db * *, 0dh, 0ah db * Press R to start, S to stop, ESC to exit *,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 优秀 课程设计 老虎机
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。