赵亮汽车小鸟只改stack.docx

上传人:b****7 文档编号:10572261 上传时间:2023-02-21 格式:DOCX 页数:19 大小:339.55KB
下载 相关 举报
赵亮汽车小鸟只改stack.docx_第1页
第1页 / 共19页
赵亮汽车小鸟只改stack.docx_第2页
第2页 / 共19页
赵亮汽车小鸟只改stack.docx_第3页
第3页 / 共19页
赵亮汽车小鸟只改stack.docx_第4页
第4页 / 共19页
赵亮汽车小鸟只改stack.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

赵亮汽车小鸟只改stack.docx

《赵亮汽车小鸟只改stack.docx》由会员分享,可在线阅读,更多相关《赵亮汽车小鸟只改stack.docx(19页珍藏版)》请在冰豆网上搜索。

赵亮汽车小鸟只改stack.docx

赵亮汽车小鸟只改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。

第七章感想体会

这次微机原理课程设计历时一星期,在整整一周的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。

但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。

因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

在学习中要考虑到“学以致用”,不能过分强调课程的系统性和基本理论的完整性,而应该侧重于基本方法和应用实例。

从微机应用系统的应用环境和特点来看,微机系统如何与千变万化的外部设备、外部世界相连,如何与它们交换信息,是微机系统应用中的关键所在,培养一定的微机应用系统的分析能力和初步设计能力才是最终目的!

我认为以上是本人学习微机原理课程中的一些见解和体会。

再次感谢老师同学在此次实验过程中给予我的帮助和指导。

 

指导教师评语:

 

课程设计成绩:

指导教师签名:

年月日

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

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1