微机原理吃豆子序.docx

上传人:b****1 文档编号:10767952 上传时间:2023-05-27 格式:DOCX 页数:18 大小:331.18KB
下载 相关 举报
微机原理吃豆子序.docx_第1页
第1页 / 共18页
微机原理吃豆子序.docx_第2页
第2页 / 共18页
微机原理吃豆子序.docx_第3页
第3页 / 共18页
微机原理吃豆子序.docx_第4页
第4页 / 共18页
微机原理吃豆子序.docx_第5页
第5页 / 共18页
微机原理吃豆子序.docx_第6页
第6页 / 共18页
微机原理吃豆子序.docx_第7页
第7页 / 共18页
微机原理吃豆子序.docx_第8页
第8页 / 共18页
微机原理吃豆子序.docx_第9页
第9页 / 共18页
微机原理吃豆子序.docx_第10页
第10页 / 共18页
微机原理吃豆子序.docx_第11页
第11页 / 共18页
微机原理吃豆子序.docx_第12页
第12页 / 共18页
微机原理吃豆子序.docx_第13页
第13页 / 共18页
微机原理吃豆子序.docx_第14页
第14页 / 共18页
微机原理吃豆子序.docx_第15页
第15页 / 共18页
微机原理吃豆子序.docx_第16页
第16页 / 共18页
微机原理吃豆子序.docx_第17页
第17页 / 共18页
微机原理吃豆子序.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理吃豆子序.docx

《微机原理吃豆子序.docx》由会员分享,可在线阅读,更多相关《微机原理吃豆子序.docx(18页珍藏版)》请在冰点文库上搜索。

微机原理吃豆子序.docx

微机原理吃豆子序

 

**大学计算机科学与技术学院

微机原理课程设计

报告书

 

课题名吃豆子程序

 

班级

姓  名

指导教师

日期

 

一、设计目的···································1

二、设计内容···································1

三、设计要求···································1

四、主要仪器设备及软件·························2

五、设计原理···································2

六、程序流程图·································3

七、程序代码···································3

八、程序及硬件系统调试情况·····················9

九、设计总结与体会·····························11

十、参考文献···································12

 

一、设计目的

1)、课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。

它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。

2)、通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。

让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。

通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。

3)、通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。

 

二、设计内容

题目:

吃豆子程序

 

三、设计要求

要求:

在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击空格,“嘴巴”开始从左到右逐行或者在键盘控制下开始“吃豆子”,一直到“豆子”被吃完停止或者单击空格暂停。

(功能实现型★)(键盘交互型★★)

注:

针对于此,我们小组制定了自己更多的想法

初始条件:

在屏幕上显示多行“豆子”(用.表示),“豆子”随机分布,用一个“嘴巴”(用字符“C”表示)吃“豆子”,程序运行时,单击上下左右键,“嘴巴”开始逐个“吃豆子”,一直到“豆子”被吃完停止或者单击P键暂停:

按Q键退出程序。

完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

(1)设计任务及要求分析

(2)方案比较及认证说明

(3)系统原理阐述

(4)软件设计课题需要说明:

软件思想,流程图,源程序及注释

(5)调试记录及结果分析

(6)总结

四、主要仪器设备及软件

PC机、MASM汇编软件及仿真等。

 

五、设计原理

对于这个题目我们的设计思路是:

在屏幕上显示多行“豆子”(用“.”表示),用一个“嘴巴”(用字符“C”表示),程序运行时,单击上下左右键,“嘴巴”开始逐个“吃豆子”,一直到“豆子”被吃完停止或者单击P键暂停:

按Q键退出程序。

主要运用DOS调用及BIOS调用得到相关的程序得到的,在程序数据段定义一段再调用DOS中断显示豆子,用字符“C”表示嘴巴。

用“.”表示豆子;先在屏幕上要布满豆子“.”,也就是豆子;然后字符“C”每走一步,此时豆子也要在相应的位

主要程序调用命令及格式:

1.int21H中断

AH=02H功能调用,用来在屏幕上显示一个字符。

AH=9,功能调用,用来在屏幕上显示一个字符串。

AH=4CH功能调用,用来结束当前程序,返回DOS系统。

2.int10H中断

AH=0功能调用,用来设置显示模式。

AH=2功能调用,用来设置光标位置。

AH=10功能调用,用来显示字符。

3、int16H中断

0号功能调用

0号功能调用用于检查是否有输入字符。

如果有,通过AH返回字符的扫描码,通过AL返回字符的ASCII。

但是方向键没有ASCII码,故需要利用AH返回扫描码,本程序中扫描码分别是4BH,4DH,50H,48H.

15号功能调用,用来读取当前显示模式。

六、程序流程图

七、程序代码

通过将几个单元电路的程序组合起来,再通过程序的调试得到了总的源程序,具体程序如下图所示:

STACKSEGMENTSTACK

DB200DUP(0)

STACKENDS

DATASEGMENT

STR_1DB'PRESSDIRECTIONKEYTHEMOUSECANEATBEANS$'

STR_2DB'PRESSDIRECTIONKEYTOCONTROLDIRECTION$'

STR_3DB'PRESSQTOQUITORPTOPAUSE$'

BUF1DB'.................$';设置为5行*40列

BUF2DB'................................$'

BUF3DB'................................$'

BUF4DB'.................................$'

BUF5DB'................$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,0

MOVAL,2

INT10H;设置显示方式

LEADX,STR_1;定义输出提示语

MOVAH,9

INT21H;显示提示语

MOVDL,10

MOVAH,2

INT21H;回车

MOVDL,13

MOVAH,2

INT21H;换行

LEADX,STR_2

MOVAH,9

INT21H

MOVDL,10

MOVAH,2

INT21H

MOVDL,13

MOVAH,2

INT21H

LEADX,STR_3

MOVAH,9

INT21H

MOVDL,10

MOVAH,2

INT21H

MOVDL,13

MOVAH,2

INT21H

LEADX,BUF1;输出“豆子”和“嘴”共有5行

MOVAH,9

INT21H

MOVDL,10

MOVAH,2

INT21H

MOVDL,13

MOVAH,2

INT21H

LEADX,BUF2

MOVAH,9

INT21H

MOVDL,10

MOVAH,2

INT21H

MOVDL,13

MOVAH,2

INT21H

LEADX,BUF3

MOVAH,9

INT21H

MOVDL,10

MOVAH,2

INT21H

MOVDL,13

MOVAH,2

INT21H

LEADX,BUF4

MOVAH,9

INT21H

MOVDL,10

MOVAH,2

INT21H

MOVDL,13

MOVAH,2

INT21H

LEADX,BUF5

MOVAH,9

INT21H

MOVDL,10

MOVAH,2

INT21H

MOVDL,13

MOVAH,2

INT21H

MOVAH,15

INT10H;读当前显示状态

MOVCX,1

MOVDX,050FH;设定光标在5行15列

ALL:

MOVAH,0;判断开始

INT16H

CMPAL,53H;判断“S”

JEL0

JNEALL;判断等待

L0:

CALLCONTINUE;调用COUNTINUE子程序

CONTINUEPROC;吃豆子子程序

NEXT:

MOVAH,2

INT10H;设置光标位置,上面设置的

MOVAL,63H;63H为c的ASCII码

MOVAH,10

INT10H;显示c

CALLDELAY;调用延时

M:

MOVAH,0

INT16H

CMPAH,4BH

JEM1

CMPAH,4DH

JEM2

CMPAH,48H

JEM3

CMPAH,50H

JEM4

CMPAL,51H

JEA

CMPAL,50H

JEA1

JMPA12

M1:

CALLDIRL;调用DIRL子程序

JMPA12

M2:

CALLDIRR;调用DIRR子程序

JMPA12

M3:

CALLDIRU;调用DIRU子程序

JMPA12

M4:

CALLDIRD调用DIRD子程序

JMPA12

A12:

MOVAH,10

MOVAL,0

INT10H;在当前位置输入空格

CMPDL,40;列数为40

JALR

CMPDL,1

JBLL

CMPDH,3

JBLU

CMPDH,7

JALD

JMPNEXT

LR:

INCDH

MOVDL,0

JMPNEXT

LL:

INCDH

MOVDL,39

JMPNEXT

LU:

INCDL

MOVDH,7

JMPNEXT

LD:

INCDL

MOVDH,3

JMPNEXT

RET

CONTINUEENDP

A1:

CALLPAUSES;调用PAUSES子程序

A2:

MOVAH,0

INT16H

CMPAL,51H;判断是否为Q,退出

JNEA2

A:

MOVAH,4CH

INT21H

DELAYPROC;延时子程序

PUSHCX;保护寄存器CX,DX

PUSHDX

MOVDX,9999;设置延时时间10ms

DL500:

MOVCX,9999

DL10MS:

LOOPDL10MS

DECDX

JNZDL500

POPDX;恢复寄存器CX,DX

POPCX

RET

DELAYENDP

PAUSESPROC;暂停子程序

MOVAH,2

INT10H;设置光标位置,DH为行号,DL为列号

MOVAL,50H;“C”的ASCII码为63H

MOVAH,10

INT10H

P:

MOVAH,0

INT16H;检查是否有输入,并通过AH返回扫描

;码,AL返回ASCII码

CMPAH,4BH

JZP1

CMPAH,4DH

JZP1

CMPAH,50H

JZP1

CMPAH,48H

JZP1

CMPAL,'S'

JZP1

CMPAL,'Q'

JZA

JMPP

P1:

CALLCONTINUE;调用COUNTINUE子程序

RET

PAUSESENDP

DIRLPROC;向左子程序

MOVAH,10

MOVAL,'c'

INT10H

DECDL

MOVAH,10

MOVAL,0

INT10H

RET

DIRLENDP

DIRRPROC;向右子程序

MOVAH,10

MOVAL,'c';输入字符的ASCII码

INT10H;在当前位置写字符

INCDL

MOVAH,10

MOVAL,0;输入字符的ASCII码,0表示空格

INT10H;在当前位置写字符

RET

DIRRENDP

DIRUPROC;向上子程序

MOVAH,10

MOVAL,'c'

INT10H

DECDH

MOVAH,10

MOVAL,0

INT10H

RET

DIRUENDP

DIRDPROC;向下子程序

MOVAH,10

MOVAL,'c'

INT10H

INCDH

MOVAH,10

MOVAL,0

INT10H

RET

DIRDENDP

CODEENDS

ENDSTART

八、程序及硬件系统调试情况

首先在D盘masm5下新建一个asm文件1234.asm,把吃豆子程序代码写入1234.asm中,然后打开DOS命令窗口,按照下图方式,对程序进行编译,无警告和错误之后,在masm5文件夹中生成1234.obj文件,再用link链接,链接无误后,在masm5文件夹中生成1234.exe文件,执行1234.exe文件;按下‘S’键开始程序。

单击上下左右键,“嘴巴”开始沿各个方向逐个“吃豆子”,一直到“豆子”被吃完停止或者单击P键暂停,此时再按’P‘键或者方向键可以继续吃豆子。

按Q键退出程序。

九、设计总结与体会

这次的课程设计,我们的课设题目是吃豆子程序,起初拿到题目感觉这个题目比较有意思,我们讨论了一下,感觉应该比较简单,但是我们真正开始动手开始做的时候,才发现有很多问题,主要是对汇编知识的代码部分不能灵活运用,也对好多代码理解的不是很透彻,所以我们上网查了资料。

起初我们用emu8086软件来运行,总是有些错误,我们逐个找出原因,改写程序,最终得出结果,后来看到老师给的模板要用MASM汇编软件,于是我们就按照老师上课给我们讲的步骤在dos命令下运行该程序,但是由于对masm的不理解,我们只是在C盘新建了一个masm5文件夹,所以总是弄不出来,然后我们上网查了下,原来在masm5文件夹里少了一些东西,于是我就下载了那些东西放在了masm5文件夹里,最后运行程序一遍就成功了,后来我把这个经验告诉了好多班里的同学,并把那些masm5文件夹里需要东西拷给了他们。

程序搞定后,接下来还有很多的东西要做,于是我们分工,杨树林和齐晓庆做设计思路,我做流程图,开始做的流程图不是很正确,因为我做的是程序中用字符串、调用,最后结束,经过团队商讨,原来这不是老师要的那种,最终画出我们需要的流程图,最后我改正了,画出了上述流程图(总感觉有些太简陋、简洁)。

最终在我们的共同努力下,我们完成了吃豆子程序的课程设计,并做成文档。

程序虽然做完了,但是也有些不足,例如,第一次按空格键游戏暂停后,再按空格键程序就结束了;用dos运行后,第一次按空格键游戏暂停后,再按空格键还要在输入程序的exe文件,又重新开始。

但毕竟老师给的要求就只是“豆子被吃完停止或者单击空格暂停”,后面没做要求了。

当然吃豆子程序还能继续做一下延伸,例如,按上下左右键可以上下左右吃豆子,或者按某一个键可以重新开始程序,另一个键可以结束程序,所以我们课外时间可以做一做这些,毕竟很有意思,而且做出来之后很有成就感。

为期一个星期的课程设计对我们来说,真可谓受益匪浅,体会颇深。

从最开始查找资料,到设计思路的比较,流程图的绘制,编写相关的程序,运行、调试程序。

这也让我体会到了课程设计的任何环节无论大小,都需要有我们每一个人有认真严谨的求知态度。

当然也少不了我们默契的配合。

经过这次课程设计,我发现我们现在学习的知识远远不够,遇到的很多问题还需要通过自学以及向同学们请教学习。

另外,这次课程设计让我懂得了,编写一个好的程序并不是注重怎样写代码,而是要注重编程思想,还有就是团队合作精神,合理的分工才得以完成这次课程设计,最终经过三个人的审核完成了这份课程设计报告。

十、参考文献

[1]沈美明,温东婵。

IBM-PC汇编语言程序设计。

北京:

清华大学出版社,2001

[2]宋彩莉等编.《汇编语言程序设计学习指导》,2007年出版,西安交通大学版

[3]东阳生等编.《宏汇编语言MASM5实用大全》,1993年出版,科学出版社

[4]求伯君等编.《新编深入DOS编程》,1994年6月版,学苑出版社

[5]周佩玲,彭虎,傅忠谦。

微机原理与接口技术。

北京:

电子工业出版社,2007

[6]王玉良,吴晓非。

微机原理与接口技术。

北京邮电大学出版,2009

[7]王晓虹,毕于深。

汇编语言。

北京:

清华大学出版社,2006

[8]刘丽莉。

汇编语言程序设计。

北京:

北京大学出版社,2010

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2