




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北水利水电大学课程设计华北水利水电大学North China University of Water Resources and Electric Power微 机 原 理 课 程 设 计题目吃豆子 学 院 电力学院 专 业 自动化 姓 名 学 号 同组搭档 指导老师 王亭岭 目 录摘 要1Abstract1一、 设计要求1二、 设计分析11 BIOS功能调用12 字符串显示2三、 软件设计21 程序的流程图22 根据流程图编写相应的汇编源程序5四、 程序调试及结果分析10五、 设计总结131 设计的不足132 课设收获14六、 致谢14七、 附录14I(微机原理与接口技术课设吃豆子说明书)摘 要21世纪计算机已经普及并且已经商讨到国民经济和社会生活的各个领域,极大地改变着人们的工作和生活方式,并转化为推动社会进步的巨大生产力,而微机原理与接口技术是学习和使用微型计算机类的基础。关键词:BIOS功能调用(Microcomputer Principle and Interface Technology Course Eat Beans Instructions)AbstractIn the 21st century, the computer has spread and has been negotiating to national economy and social life in various fields, greatly changed the way of peoples work and life, and transformed to promote social progress by the enormous productivity, and microcomputer principle and interface technology is learning and using micro meter computer class based. Key words: BIOS function call 1、 设计要求本课设通过在计算机屏幕上输出显示字符串和豆子*,然后通过读取键盘输入,判断是否输入为b,若是,则开始程序并显示嘴C,通过读取键盘判断是否为w、a、s、d、q、r,通过w、a、s、d控制嘴C的前进方向,通过q退出程序,通过r重新开始程序。2、 设计分析1 BIOS功能调用BIOS常驻ROM,独立于DOS,可与任何操作系统一起工作。它的主要功能是驱动系统所配置的外部设备,如磁盘驱动器、显示器、打印机及异步通讯接口等。通过INT 10HINT 1AH向用户提供服务程序的入口,使用户无需对硬件有深入了解,就可完成对I/O设备的控制与操作。BIOS的中断调用与DOS功能调用类似。本课设主要使用BIOS功能的INT10H的00H设置显示方式、02H设置光标位置、03H功能查询光标形状和位置、0AH在光标处写字符与INT 16H的00H读取键值功能,INT 21H的02H显示输出、09H显示字符串功能。2 字符串显示程序开始需要显示提示信息和豆子*,采用文本显示方式在屏幕显示,通过调用INT 21H的09H功能显示,并通过INT 21H的02H功能输出回车和换行,实现字符串在屏幕上的有序排列。3、 软件设计1 程序的流程图 程序的主程序一直读取键盘的输入,当检测到键盘输入b时,在屏幕的第4行第15列写下嘴C,若没有b输入则一直循环等待键盘输入,直到b输入后才执行后面的程序。键盘输入b后,然后继续读取键盘输入是否为asdwrq其中的一个,若是则跳到相应程序段执行对应程序,若不是,职责一直循环等待键盘输入。将上下左右方向的移动设计成小程序,当检测到相应的按键按下时,跳转到相应程序段执行对应程序。起流程图为:第 31 页 NN N YY NN Y N N Y N N Y N N N Y N N Y N 图3-1 程序流程图其中的左移、右移、上移、下移程序的基本思路为:等待键盘输入,并判断是w、a、s、d的哪一种然后执行相应的操作程序。当按下a时,嘴C左移一列,并判断列数是否小于1,若小于则将行数减1,列数置为40,然后判断键盘输入,若不小于则继续判断键盘输入。当按下d时,嘴C右移一列,并判断列数是否大于40,若大于则将行数加1,列数置为0,然后判断键盘输入,若不大于则继续判断键盘输入。当按下w时,嘴C上移一行,并判断行数是否小于4,若小于则将列数加1,行数置为8,然后判断键盘输入,若不小于则继续判断键盘输入。当按下s时,嘴C下移一行,并判断行数是否大于8,若大于则将列数减1,行数置为4,然后判断键盘输入,若不小于则继续判断键盘输入。以左移程序为例,其对应流程图为: N Y N YN Y图3-2 左移程序流程图2 根据流程图编写相应的汇编源程序根据主程序的流程图,可得主程序中的哥部分程序定义待显示的信息: STR_1 DB $ STR_2 DB PRESS a,w,s,d KEY THE MOUTH CAN EAT BEANS $ STR_3 DB PRESS DIRECTION KEY TO CONTROL DIRECTION$ STR_4 DB PRESS q TO QUIT OR r TO REFRESH $ BUF1 DB *$ BUF2 DB *$ BUF3 DB *$ BUF4 DB *$ BUF5 DB *$在屏幕上显示信息: MOV AH,0 MOV AL,02H INT 10H LEA DX,STR_1 CALL SHOW LEA DX,STR_2 CALL SHOW LEA DX,STR_3 CALL SHOW LEA DX,STR_4 CALL SHOW LEA DX,BUF1 CALL SHOW LEA DX,BUF2 CALL SHOW LEA DX,BUF3 CALL SHOW LEA DX,BUF4 CALL SHOW LEA DX,BUF5 CALL SHOW读取键盘输入,判断程序是否开始:A1: MOV AH,0H INT 16H CMP AL,62H MOV DL,14 MOV DH,4 JZ M JMP A1读取键盘输入,执行相应程序段:M: MOV AH,2 INT 10H CALL WC MOV AH,0 INT 16H CMP AL,61H JZ M1 CMP AL,64H JZ M2 CMP AL,77H JZ M3 CMP AL,73H JZ M4 CMP AL,71H JZ Q CMP AL,72H JZ START JMP MM1: CALL WZ CALL WS JMP MLM2: CALL WZ CALL WS JMP MR M3: CALL WZ CALL WS JMP MU M4: CALL WZ CALL WS JMP MD其中,SHOW为显示子程序SHOW PROC MOV AH,9INT 21H MOV DL,10MOV AH,2 INT 21H MOV DL,13MOV AH,2INT 21HRETSHOW ENDPWZ为读取当前坐标位置子程序WZ PROCMOV AH,03HINT 10HRETWZ ENDPWC为写C子程序WC PROCMOV CX,1MOV AL,43H MOV AH,10 INT 10H RETWC ENDPWZ为写空子程序WS PROCMOV CX,1MOV AL,0MOV AH,0AHINT 10HRET WS ENDP左移的程序为:ML: DEC DL CMP DL,0 JA T DEC DH MOV DL,41 CMP DH,1 JB B JMP TB: MOV DH,8T: JMP M 右移的程序为:MR: INC DL CMP DL,42 JB T1 INC DH MOV DL,0 CMP DH,8 JA B1 JMP T1B1: MOV DH,1T1: JMP M上移的程序为:MU: DEC DH CMP DH,0 JA T2 INC DL MOV DH,8 CMP DL,41 JA B2 JMP T2B2: MOV DL,1T2: JMP M下移的程序为:MD: INC DH CMP DH,9 JB T3 DEC DL MOV DH,1 CMP DL,1 JB B3 JMP T3B3: MOV DL,42T3: JMP M4、 程序调试及结果分析当源程序编写完成后,需要对源程序进行调试来检查错误和检验是否能够实现设计的目的功能。利用DOSBOX软件对程序的调试过程图5-1 程序编译连接图从图中可以看出,程序中不存在错误,继续运行程序图5-2 程序运行开始界面程序开始界面显示了数据段定义的提示信息和豆子*,光标不移动,在等待键盘的输入,当输入b以外的其他字符时,光标位置都不发生变化,当输入b时,光标跳转到4行15列并在当前光标出显示嘴C。图5-3 键盘输入b后此时继续等待键盘输入,并判断是w、a、s、d、q、r的哪一种然后执行相应的操作程序。图5-4 键盘输入w后当键盘输入为r时,程序重新加载图5-5 键盘输入r后当键盘输入q时,系统退出图5-6 键盘输入q后5、 设计总结1 设计的不足吃豆子程序通过实时读取键盘的输入来控制嘴C的移动来吃掉豆子,通过实时判断行数和列数是否超出设定边界来实现换行和换列,进而实现吃掉全部的豆子。程序虽然能够完成功能,但是程序还有很大的不足:豆子的位置固定,不能够随机产生;界面不够美观;实现的功能单一,不能增加应用的趣味性。2 课设收获在这次的课程设计中,通过实践操作,加深了对汇编语言的理解,增强了汇编语言的使用能力,对如何正确的使用汇编语言有了整体的了解和把握。汇编语言虽然是门低级语言,解决问题的难度有限,但是它与计算机硬件的紧密关系使得它有着独特的优点。汇编语言程序设计虽然是一门低级语言的程序设计,但是它与高级语言程序有相通之处:算法是实现功能的根本,但是算法又依赖于硬件的基础,所以高级语言程序的基本思想大都来源于低级的程序语言。学习汇编语言不能单纯的学习理论,只有与硬件相结合进行具体的操作才能加深理解和运用。通过这次的课设,使我对汇编语言的指令和BIOS功能有了更多的理解,汇编语言不是复杂的操作语言,只是有很强的逻辑性和结构性,对数据的的操作要求严格,程序间调用时要注意数据的保护和恢复。同时,汇编语言中各个寄存器的功能和在指令中所承担的作用也因指令的不同发生变化,要求我们注意。课程设计就是按照要求设计出满足的程序代码,是一个小工程,通过这次课设大概了解了一般的软件工程的流程:分析要求画出程序来流程图,按照流程图设计各部分的程序,将各个部分程序整合优化,程序调试检查、优化,书写程序的相关文档。程序的执行要高效,因此对程序的结构和代码长度就有要求,程序代码编写完成后要进行结构的优化和代码的精简,去掉重复冗余的代码,合理的排布代码结构布局,使得程序执行更加的高效和满足要求。这些对我是一个很重大的进步。6、 致谢我也要感谢我的指导老师,在炎炎夏日里给我们解答困惑,帮助我们解决困难,同时也要感谢我的搭档能和我合作完成我们这个构想,虽然最后实现的功能不能完全的符合我们的预期,但是我们尽自己的力量,用自己的努力和智慧完成了我们的成果。还要感谢其他同学给予我的帮助。7、 附录STACK SEGMENT STACK DB 500 DUP(0) STACK ENDS DATA SEGMENT STR_1 DB $ STR_2 DB PRESS a,w,s,d KEY THE MOUTH CAN EAT BEANS $ STR_3 DB PRESS DIRECTION KEY TO CONTROL DIRECTION$ STR_4 DB PRESS q TO QUIT OR r TO REFRESH $ BUF1 DB *$ ;设置为8行*42列 BUF2 DB *$ BUF3 DB *$ BUF4 DB *$ BUF5 DB *$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AH,0 MOV AL,02H INT 10H ;设置显示方式,AL=2为显示单色文本 LEA DX,STR_1 ;定义输出提示语 CALL SHOW LEA DX,STR_2 CALL SHOW LEA DX,STR_3 CALL SHOW LEA DX,STR_4 CALL SHOW LEA DX,BUF1 ;输出豆子和嘴C CALL SHOW LEA DX,BUF2 CALL SHOW LEA DX,BUF3 CALL SHOW LEA DX,BUF4 CALL SHOW LEA DX,BUF5 CALL SHOWA1: MOV AH,0H ;判断开始 INT 16H CMP AL,62H ;判断b MOV DL,14 MOV DH,4 JZ M JMP A1;循环判断 M: MOV AH,2 ;设置光标位置 INT 10H CALL WC;写一C MOV AH,0 INT 16H ;读取键值 CMP AL,61H ;a JZ M1 CMP AL,64H ;d JZ M2 CMP AL,77H ;w JZ M3 CMP AL,73H ;s JZ M4 CMP AL,71H ;q JZ Q CMP AL,72H;r JZ START JMP MQ:;退出程序 MOV AH,4CH INT 21HM1: CALL WZ;读取当前光标位置 CALL WS;写一个空 JMP ML;左移程序M2: CALL WZ CALL WS JMP MR M3: CALL WZ CALL WS JMP MU M4: CALL WZ CALL WS JMP MDML:;左移程序 DEC DL CMP DL,0 JA T DEC DH MOV DL,41 CMP DH,1 JB B JMP TB: MOV DH,8T: JMP M MR:;右移程序 INC DL CMP DL,42 JB T1 INC DH MOV DL,0 CMP DH,8 JA B1 JMP T1B1: MOV DH,1T1: JMP MMU:;上移程序 DEC DH CMP DH,0 JA T2 INC DL MOV DH,8 CMP DL,41 JA B2 JMP T2B2: MOV DL,1T2: JMP MMD:;下移程序 INC DH CMP DH,9 JB T3 DEC DL MOV DH,1 CMP DL,1 JB B3 JMP T3B3: MOV DL,42T3: JMP MWZ PROC;读取当前光标位置子程序 MOV AH,03H INT 10H RETWZ ENDPWC PROC;写C子程序 MOV CX,1 MOV AL,43H ;43H为C的ASCII码 MOV AH,10 INT 10H RETWC ENDPWS PROC;写空子程序 MOV CX,1 MOV AL,0 MOV AH,0AH INT 10H RET WS ENDPSHOW PROC ;显示子程序 MOV AH,9 INT 21H MOV DL,10 MOV AH,2 INT 21H MOV DL,13 MOV AH,2 INT 21H RET SHOW ENDPCODE ENDSEND START已经实现在屏幕上随机显示一个豆子*,但不知怎么关联在一起,程序如下:DSEG SEGMENTMESS DB YOU ARE FILED!PRESS Q TO QUIT OR R TO RESTART$CHOSE DB 100 DUP(?)LEN DB $-MESS;取DB的长度DSEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV AH,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中电建(云浮)新材料有限公司招聘1人年薪20万50万笔试题库历年考点版附带答案详解
- 2025年文化娱乐行业数字化转型与IP价值挖掘研究报告
- 2025年航空航天行业无人机市场应用前景研究报告
- 2025年口腔颌面外科手术风险评估与处理模拟考试答案及解析
- 2025年燃料电池行业燃料电池技术应用前景展望报告
- 2025年出行服务行业出行需求与交通服务研究报告
- 2025年建筑行业绿色建筑设计与可持续建筑发展研究报告
- 2025年环保产业行业环保技术应用案例研究报告
- 2025年化妆护肤行业绿色无害美妆产业发展策略研究报告
- 2025年环保产业行业绿色技术与可持续发展研究报告
- 2024-2025学年北师大版九年级数学上册第一次月考测试卷及答案
- 小学语文课程与教第二章:小学语文课程教材
- 苏教版一年级上册科学素材期末复习知识点总结
- 废铅酸电池中回收高纯度金属铅和α-PbO新工艺及其电化学性能研究
- 2024年高考数学一模试题分类汇编:立体几何(原卷版)
- 露天停车场施工方案
- 山东省青岛第三十九中学2023-2024学年九年级上学期月考数学试卷(10月份) (月考)
- HR如何筹划年终奖?(10大经典个税筹划案例)汇编
- GB/T 43063-2023集成电路CMOS图像传感器测试方法
- 作文格子纸-word版本
- 抵押还款协议-1
评论
0/150
提交评论