赵亮汽车小鸟只改stack.docx
《赵亮汽车小鸟只改stack.docx》由会员分享,可在线阅读,更多相关《赵亮汽车小鸟只改stack.docx(19页珍藏版)》请在冰豆网上搜索。
![赵亮汽车小鸟只改stack.docx](https://file1.bdocx.com/fileroot1/2023-2/21/e7765edb-589e-4b40-b02a-538abef0847c/e7765edb-589e-4b40-b02a-538abef0847c1.gif)
赵亮汽车小鸟只改stack
郑州航空工业管理学院
微机原理课程设计说明书
2010级电气工程及其自动化专业1006971班级
题目汽车小鸟动画
姓名赵亮
学号100697138
指导教师张臻
职称讲师
二0一0年十二月三十日
目录
第一章微机应用系统课程设计的目的意义
1.1设计目的
1.2课程在教学计划中的地位和作用
第二章摘要简介
第三章设计方案及原理介绍
3.1汽车小鸟动画的基本原理
3.2设计方案
3.3软件设计
第四章程序设计
4.1运用的子程序
4.2小鸟动画程序设计
第五章调试与运行
第六章参考文献
第七章感想体会
第一章微机应用系统课程设计的目的意义
1.1设计目的
通过课程设计进一步锻炼同学们在微型计算机应用方面的实际工作能力。
计算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际:
掌握这方面的知识更要强调解决实际问题的能力。
1.2课程在教学计划中的地位和作用
《微机应用系统设计与综合实验》课程是自动化专业本科生必修的一门技术基础课程。
通过该课程的学习使学生对微机系统有一个全面的了解、掌握常规芯片的使用方法、掌握简单微型计算机应用系统软硬的设计方法。
为了使我们微机应用课程设计目标更明确,要求更具体,学生收获更大,我们特编写课程设计任务书,学生可根据本人的爱好任选其中一个课题,要求独立完成课题,写出课程设计说明书,设计出电路原理图,说明工作原理,画出电路板图,编写程序及程序流程图。
希望同学认真阅读本任务书,认真查阅资料与上机调试,圆满完成课程设计。
第二章摘要简介
随着计算机的快速发展,用汇编语言来实现动画更简单,直接和便捷,它的目标代码简短,占用内存较少,执行速度较快,是高效的程序设计语言。
本文主要对汽车小鸟动画进行程序设计,并通过masm软件进行运行,通过输入不同的数字对程序的控制,采用段内调用子程序的方法来实现,使用了堆栈技术和中断技术,来实现按下数字1,小鸟飞过,按2,汽车开过,按3,退出程序,同时对汇编语言的基本原理解析。
本程序可在windows2000,windowsxp上运行。
所需要的工具软件为MASM2.0及以上版本,先生成.asm文件,再生成.exe的文件,然后运行。
关键词:
汽车小鸟动画,masm软件,中断技术,堆栈,子程序调用
第三章设计方案及原理介绍
一、汽车小鸟动画的基本原理
此程序主要是利用BIOS功能调用的10H中断类型实现的。
先利用其功能设置显示方式为320*200彩色图形方式,由于程序中没有做好的汽车小鸟图形,需要先编写小鸟和汽车的字符图形的子程序,采用段内调用子程序的方法来实现,使用了堆栈技术。
设计两个画面,按1,小鸟飞过,按2,汽车开过,按3,退出程序。
二、设计方案
根据基本原理设计思路拟定出设计方案。
先编写好小鸟和汽车的图形显示的子程序,以供之后段内调用子程序。
之后再编写小鸟飞过的子程序和汽车开过的子程序,利用转移指令,调用子程序以及中断程序和堆栈等功能来实现设计的功能。
三、软件设计
3.1汽车小鸟动画总体结构图
程序流程图如下图所示
第四章程序设计
4.1编写汽车小鸟图形的子程序
BIRD DB76H,10,0,0 ;小鸟的字符图形表
DB0C4H,07,0,1
DB76H,10,-2,2
DB0C4H,07,0,1
DB76H,10,-2,2
DB0C4H,07,0,1
DB76H,10,-2,2
DB0C4H,07,0,1
DB76H,10,2,-2
DB0C4H,07,0,1
DB76H,10,2,-2
DB0C4H,07,0,1
DB76H,10,2,-2
DB0C4H,07,0,1
CAR DB7 ;汽车的字符图形表
DB52H,7,0,0
DB0B1H,7,0,1
DB0DBH,7,0,1
DB0DBH,7,0,1
DB4FH,7,1,0
DB4FH,7,0,-3
DB2,7,-2,1
编写小鸟飞过和汽车开过的子程序
(1)小鸟飞过的子程序:
DISP:
CMPDL,80
JAEexit1
MOVAH,2 ;设置光标位置
INT10H
MOVAH,9 ;显示小鸟字符图形
MOVAL,[DI]
MOVBL,[DI+1]
INT10H
CALLDLY ;延时
MOVAH,9
MOVAL,''
MOVBL,04
INT10H
INCDL
ADDDI,2
DECSI
JNZDISP
JMPBEGIN
exit1:
RET
(2)汽车开过的子程序
QICHE PROCnear ;汽车子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,0
MOVAL,4
INT10H
MOVAH,0BH ;设置彩色组颜色为绿、红、黄
MOVBH,01
MOVBL,00
INT10H
CLEAR0,0,24,79,7 ;清屏宏调用
LEADI,CAR ;DI指向字符图形表
MOVDH,5 ;从第5行5列位置开始显示汽车
MOVDL,0
CALLMOVE_SHAPE
RET
4.2汽车小鸟动画程序
运行可执行程序CAR.exe,选择1,小鸟飞过;选择2,汽车开过;选择3,退出。
DATASEGMENT
INFO1DB0DH,0AH,'INPUT1,2,OR3:
(1:
bird,2:
car,3:
exit)$'
BUFADB200
DB?
DB200DUP(0)
BUFBDB200DUP(?
)
BIRDDB76H,10,0,0;小鸟的字符图形表
DB0C4H,07,0,1
DB76H,10,-2,2
DB0C4H,07,0,1
DB76H,10,-2,2
DB0C4H,07,0,1
DB76H,10,-2,2
DB0C4H,07,0,1
DB76H,10,2,-2
DB0C4H,07,0,1
DB76H,10,2,-2
DB0C4H,07,0,1
DB76H,10,2,-2
DB0C4H,07,0,1
CARDB7;小汽车的字符图形表
DB52H,7,0,0
DB0B1H,7,0,1
DB0DBH,7,0,1
DB0DBH,7,0,1
DB4FH,7,1,0
DB4FH,7,0,-3
DB2,7,-2,1
CHAR_CNTDW?
POINTERDW?
LINE_ONDB?
COL_ONDB?
DATAENDS
STACKSEGMENTSTACK
DB200DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAH,0;设置显示方式为320*200彩色图形方式
MOVAL,4
INT10H
LEADX,INFO1;在显示器上显示字符串提示信息
MOVAH,9
INT21H
MOVAH,0;从键盘读取字符到AL寄存器
INT16H
CMPAL,31H;比较AL是否等于1
JNEA
CALLXIAO
A:
CMPAL,32H;比较AL是否等于2
JNEB
CALLQICHE
B:
CMPAL,33H;比较AL是否等于3
JNESTART
MOVAH,4CH;终止当前程序并返回调用程序
INT21H
CLEARMACROPCH,PCL,PDH,PDL,PBH;清屏宏定义
MOVAH,0
MOVAL,4
INT10H
MOVAH,6;调用6号功能
MOVAL,0;设置整个屏幕为空白
MOVCH,PCH
MOVCL,PCL;窗口左上角(0行,0列)
MOVDH,PDH
MOVDL,PDL;窗口右下角(24行,79列)
MOVBH,PBH;正常属性显示
INT10H
ENDM
XIAOPROC;小鸟子程序
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVAH,0
MOVAL,4
INT10H
MOVAH,0BH;设置背景色
MOVBH,0
MOVBL,1
INT10H
MOVAH,0BH;设置彩色组
MOVBH,1
MOVBL,1
INT10H
CLEAR0,0,24,79,7
MOVAH,0FH;读当前显示状态
INT10H
MOVDH,10
MOVDL,0
BEGIN:
MOVSI,2
MOVCX,1
LEADI,BIRD;DI指向小鸟字符表的首字母
DISP:
CMPDL,80
JAEEXIT1
MOVAH,2;设置光标位置
INT10H
MOVAH,9;显示小鸟字符图形
MOVAL,[DI]
MOVBL,[DI+1]
INT10H
CALLDLY;延时
MOVAH,9
MOVAL,''
MOVBL,04
INT10H
INCDL
ADDDI,2
DECSI
JNZDISP
JMPBEGIN
EXIT1:
RET
XIAOENDP
DLYPROCNEAR;延时子程序
PUSHCX
PUSHDX
MOVDX,10000
DL1:
MOVCX,6801
DL2:
LOOPDL2
DECDX
JNZDL1
POPDX
POPCX
RET
DLYENDP
QICHEPROCNEAR;汽车子程序
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,0
MOVAL,4
INT10H
MOVAH,0BH;设置彩色组颜色为绿、红、黄
MOVBH,01
MOVBL,00
INT10H
CLEAR0,0,24,79,7;清屏宏调用
LEADI,CAR;DI指向字符图形表
MOVDH,5;从第5行5列位置开始显示汽车
MOVDL,0
CALLMOVE_SHAPE
RET
QICHEENDP
MOVE_SHAPEPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
MOVAH,0FH;取当前显示方式
INT10H
SUBCH,CH
MOVCL,[DI];CL放字符个数
INCDI;DI指向字符图形表中的第一个字符
MOVCHAR_CNT,CX
MOVPOINTER,DI
MOVLINE_ON,DH
MOVCOL_ON,DL
PLOT_NEXT:
ADDDH,[DI+2];改变行列坐标
ADDDL,[DI+3]
CMPDL,80;出屏否?
JBMOV_CRSR
POPDI
POPDX
POPCX
POPBX
POPAX
JMPEXIT2
MOV_CRSR:
MOVAH,2
INT10H
MOVAL,[DI];取字符值
MOVBL,[DI+1];取字符属性
PUSHCX
MOVCX,1
MOVAH,09;显示字符
INT10H
POPCX
ADDDI,4;DI指向下一个字符
LOOPPLOT_NEXT
CALLDLY
CALLERASE
JMPSHORTPLOT_NEXT
EXIT2:
RET
MOVE_SHAPEENDP
ERASEPROCNEAR
MOVCX,CHAR_CNT
MOVDI,POINTER
MOVDH,LINE_ON
MOVDL,COL_ON
ERASE_NEXT:
ADDDH,[DI+2]
ADDDL,[DI+3]
MOVAH,2
INT10H
MOVAL,[DI]
MOVBL,0
PUSHCX
MOVCX,1
MOVAH,9
INT10H
POPCX
ADDDI,4
LOOPERASE_NEXT
MOVCX,CHAR_CNT
MOVDI,POINTER
MOVDH,LINE_ON
INCCOL_ON
MOVDL,COL_ON
RET
ERASEENDP
CODEENDS
ENDSTART
第五章调试与运行
1.打开MASM软件,对代码进行粘贴保存
2.运行程序
当按1时,小鸟飞过
当按2时,汽车开过
按3时,退出程序
四、结论
在调试程序时,要注意每一个小细节,如注释忘加分号,指令书写错误等问题,有时会运行不了,要仔细检查错误。
另外,由于动画为全屏显示,无法截图,只好照下来进行截图,图片可能会不太清晰。
通过改变指令,也可以改变汽车和小鸟开始的位置。
这次课程设计让我巩固和加深了对微机原理与接口技术的理解,提高综合运用本课程所学知识的能力。
通过实际分析设计,调试程序,也掌握了微机原理与接口技术的基本规程和各个指令的使用。
第六章参考文献:
1.钱晓捷主编:
《微机原理与接口技术》,第4版,机械工业出版社,2008年1月出版;
2.沈美明等编著:
《80X86汇编语言程序设计》,清华大学出版社,2001年9月出版;
3.杨素行等编著:
《微型计算机系统原理及应用》,第2版,清华大学出版社,2004年2月出版;
4.WWW.UT365.COM。
第七章感想体会
这次微机原理课程设计历时一星期,在整整一周的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。
因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
在学习中要考虑到“学以致用”,不能过分强调课程的系统性和基本理论的完整性,而应该侧重于基本方法和应用实例。
从微机应用系统的应用环境和特点来看,微机系统如何与千变万化的外部设备、外部世界相连,如何与它们交换信息,是微机系统应用中的关键所在,培养一定的微机应用系统的分析能力和初步设计能力才是最终目的!
我认为以上是本人学习微机原理课程中的一些见解和体会。
再次感谢老师同学在此次实验过程中给予我的帮助和指导。
指导教师评语:
课程设计成绩:
指导教师签名:
年月日