微机原理与接口技术课程设计动画程序设计.docx

上传人:b****1 文档编号:23214767 上传时间:2023-05-15 格式:DOCX 页数:16 大小:69.61KB
下载 相关 举报
微机原理与接口技术课程设计动画程序设计.docx_第1页
第1页 / 共16页
微机原理与接口技术课程设计动画程序设计.docx_第2页
第2页 / 共16页
微机原理与接口技术课程设计动画程序设计.docx_第3页
第3页 / 共16页
微机原理与接口技术课程设计动画程序设计.docx_第4页
第4页 / 共16页
微机原理与接口技术课程设计动画程序设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术课程设计动画程序设计.docx

《微机原理与接口技术课程设计动画程序设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计动画程序设计.docx(16页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术课程设计动画程序设计.docx

微机原理与接口技术课程设计动画程序设计

微机原理与接口技术

课程设计

 

设计课题:

动画程序设计

班级:

学号:

姓名:

指导教师:

 

2013年1月15日

 

一、设计题目

动画程序设计

二、设计内容

1、主要内容:

利用BIOS系统功能调用,进行简单的动画设计。

利用BIOS中断的10号、21号功能,进行简单的动画设计,并根据以下提示信息进行选择:

(1)小鸟从屏幕飞过。

(2)汽车按水平方向从屏幕上开过去。

(3)退出。

2、基本功能:

(1)清屏宏定义

观察程序流程图,在显示小鸟图形,汽车图形时,要先清屏,所以在编写程序使用到宏,因为宏定义只需在汇编语言原程序中定义一次,便可以多次反复调用。

调用时只需要一条宏指令即可。

程序中的清屏定义为:

CLEARMACROpch,pcl,pdh,pdl,pbh

MOVAH,0

MOVAL,02H

INT10H

MOVAL,0

MOVCH,pch

MOVCL,pcl

MOVDH,pdh

MOVDL,pdl

MOVBH,pbh

INT10H

ENDM

宏指令名为CLEAR,定义了五个形式参数,分别为:

pch,pcl,pdh,pdl,pbh,把pch,pcl的值分别传给窗口左上角行号、列号,pdh,pdl的值分别传给窗口右下角行号、列号,pbh的值则传给窗口底部卷入行属性。

利用已经定义好的宏,清屏时可以宏调用。

宏调用语句为:

CLEAR0,0,24,79,7

(2)子程序设计

在接受键盘输入后,判断AL的值,如果是“1”就调用小鸟子程序,如果是“2”就调用汽车子程序,如果是“3”就结束退出。

在小鸟子程序中又嵌套了延时子程序,在汽车子程序中又嵌套了多个子程序。

(3)显示小鸟字符图形

程序中利用BIOS系统功能中10H中断的09号功能进行小鸟字符图形的显示,程序段如下:

MOVAH,9

MOVAL,76H

MOVBL,10

INT10H

要是小鸟字符图形显示的更清晰,则需要延时。

循环指令LOOP,当CX不为零时,执行循环转移分支;当CX为零时,退出循环。

延时子程序为:

DLYPROCNEAR

PUSHCX

PUSHDX

MOVDX,10000

DL1:

MOVCX,6801

DL2:

LOOPDL2

DECDX

JNZDL1

POPDX

POPCX

RET

DLYENDP

上述子程序用两层循环实现延时,内循环实现单位时间延时,外循环次数由寄存器DX决定。

(4)显示汽车字符图形

因为汽车是多字符显示,所以在子程序中还嵌套了显示汽车图形和清屏两个子程序。

MOVCH,0

MOVCL,[DI]

INCDI

MOVCHAR,CX

MOVPOINTER,DI

MOVLINE,DH

MOVCOL,DL

此段程序把CH的值设为了0,又因为CL中存放字符的个数,所以CL=6,DI指向字符图形表中的第一个字符。

三、设计原理及方案

1、设计原理图:

 

图3-1主程序

 

图3-2小鸟子程序图3-3汽车子程序

2、设计方案:

在屏幕上显示动画的效果可以按以下五步进行:

(1)在屏幕上显示图形

ASCII码表,选择“V”来显示小鸟,“V”的ASCII码为76H,查表选择彩色文本模式下的IRGB组合成的通用颜色,选择亮绿色,色号为10。

显示汽车时用多字符图形显示,用6个字符组合来显示汽车,ASCII码分别为52H、0B1H、0DBH、0DBH、4FH、4FH,显示属性为白色,即色号为7。

在设置字符显示位置时,是通过两两字符间的相对坐标来实现的。

(2)延时一个时间周期,这样图形更清晰。

这里要用到延时子程序及其调用。

(3)消除图形

在进行小鸟清屏时,可使用清屏宏调用,只需在程序前面进行清屏宏定义。

而在进行汽车的清屏时,由于汽车是由对字符图形显示的,所以不采用清屏宏调用,而是通过修改字符显示属性来进行清屏。

(4)改变图形的行、列坐标。

因为要求小鸟从屏幕飞过,所以小鸟的飞行路径不是水平也不是垂直的,所以要同时改变字符的行、列坐标;而汽车从左至右行驶,所以只需要改变汽车的列坐标。

(5)返回第一步,重复上述过程。

利用BIOS系统功能中10H中断的06号功能进行清屏,循环调用09号功能显示字符图形;延迟一段时间后,再循环调用09号功能,设置BL寄存器的值为0(黑底黑字显符图形),以达到擦除图形的效果;改变行、列坐标,调用02号功能设置光标位置,重复上述过程。

利用DOS中断的01号和02号子功能来完成键盘接收,结果显示。

四、汇编源程序代码

DATASEGMENT

INFO1DB0DH,0AH,'INPUT1,2,OR3:

(1:

bird,2:

car,3:

exit)$'

BUFADB200

DB?

DB200DUP(0)

BUFBDB200DUP(?

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

CHARDW?

POINTERDW?

LINEDB?

COLDB?

DATAENDS

STACKSEGMENTSTACK

DB200DUP(0)

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAH,0;设置显示方式为80*25的黑白文体

MOVAL,02H

INT10H

LEADX,INFO1;在显示器上显示字符串提示信息

MOVAH,9

INT21H

MOVAH,1;从键盘读取字符到AL寄存器

INT21H

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,02H

INT10H

MOVAH,6;调用6号功能

MOVAL,0;设置整个屏幕为空白

MOVCH,pch

MOVCL,pcl;窗口左上角行列数

MOVDH,pdh

MOVDL,pdl;窗口左上角行列数

MOVBH,pbh;正常属性显示

INT10H

ENDM

BIRDPROC;小鸟子程序

MOVAX,DATA

MOVDS,AX

MOVAH,0

MOVAL,02H

INT10H

CLEAR0,0,24,79,7;清屏宏调用

MOVAH,0FH;读当前显示状态

INT10H

MOVDH,10

MOVDL,0

BEGIN:

MOVSI,2

MOVCX,1

DISP:

CMPDL,80

JAEEXIT1

MOVAH,2

INT10H

MOVAH,9

MOVAL,76H

MOVBL,10

INT10H

CALLDLY;延时

MOVAH,9

MOVAL,''

INT10H

INCDL

DECSI

JNZDISP

JMPBEGIN

EXIT1:

RET

BIRDENDP

QINGPROCNEAR

MOVAH,6

MOVAL,0

MOVCX,0

MOVDH,24

MOVDL,79

MOVBH,7

INT10H

RET

QINGENDP

DLYPROCNEAR;延时子程序

PUSHCX

PUSHDX

MOVDX,10000

DL1:

MOVCX,6801

DL2:

LOOPDL2

DECDX

JNZDL1

POPDX

POPCX

RET

DLYENDP

QICHEPROCNEAR;汽车子程序

MOVAH,0

MOVAL,02

INT10H

CLEAR0,0,24,79,7;清屏宏调用

LEADI,CAR;DI指向字符图形表

MOVDH,5;从第5行0列位置开始显示汽车

MOVDL,0

CALLMOVE

RET

QICHEENDP

MOVEPROCNEAR

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHDI

MOVAH,0FH;取当前显示方式

INT10H

MOVCH,0

MOVCL,[DI];CL放字符个数

INCDI;DI指向字符图形表

MOVCHAR,CX

MOVPOINTER,DI

MOVLINE,DH

MOVCOL,DL

PLOT_NEXT:

ADDDH,[DI+2];改变行列坐标

ADDDL,[DI+3]

CMPDL,80;是否出屏

JBMOV_CRSR

POPDI

POPDX

POPCX

POPBX

POPAX

RET

MOV_CRSR:

MOVAH,2

INT10H

MOVAL,[DI];取字符值

MOVBL,[DI+1];取字符属性

MOVAH,09;显示字符

INT10H

ADDDI,4;DI指向下一个字符

LOOPPLOT_NEXT

CALLDLY

CALLERASE

JMPSHORTPLOT_NEXT

MOVEENDP

ERASEPROCNEAR

MOVCX,CHAR

MOVDI,POINTER

MOVDH,LINE

MOVDL,COL

ERASE_NEXT:

ADDDH,[DI+2];修改光标的行坐标

ADDDL,[DI+3];修改光标的列坐标

MOVAH,2

INT10H;设置光标位置

MOVAL,[DI]

MOVBL,0;设置字符属性为0,为黑色

PUSHCX

MOVCX,1;设置字符显示次数为1

MOVAH,9

INT10H

POPCX

ADDDI,4;指向下一个要用来擦除的字符

LOOPERASE_NEXT

MOVCX,CHAR

MOVDI,POINTER

MOVDH,LINE

INCCOL

MOVDL,COL

RET

ERASEENDP

CODEENDS

ENDSTART

 

五、实施结果

1、初始界面,如图5-2所示:

图5-1

 

2、输入1,小鸟从屏幕飞过界面,如图5-2所示:

图5-2

 

3、输入2,汽车按水平方向从屏幕上开过去界面,如图5-3所示:

图5-3

 

4、输入3,退出界面,如图5-4所示:

图5-4

 

六、课程设计体会

看到本次微机原理与接口技术课程设计的课题后,我首先从12个课题中选择了一个我比较感兴趣的课题——动画程序设计。

确定这个课题之后,我便仔细研究了老师在指导书中给出的设计思路,然后查阅相关书籍,上网查找各种资料,初步确定了设计方案,对整个程序的流程有了大概的顺序,对程序先实现什么再实现什么有了一个初步计划。

因为小车使用多字符图形组合来显示,所以首先定义出小车的字符图形表。

然后就是在运行程序是要用键盘输入指令1、2、3,以显示不同的运行结果,此时就要对从键盘输入信息和在显示器上显示信息进行定义。

因为在显示小鸟图形和汽车图形时,要先清屏,所以在编写程序要进行清屏宏定义以供调用。

接下来就编写小鸟子程序,为使小鸟字符图形显示的更清晰,则需要编写延时子程序。

最后一大块,便是编写汽车子程序。

得出完整程序后,便在计算机上运行,初次运行时程序中出现了六处错误。

有两处比较明显的相同错误,单引号不慎写成了双引号,改正后运行便还剩四处错误。

根据计算机提示的错误行数,很容易找到了第三处错误,英文字母EXIT在输入时写成了EXT。

第四处错误是MOVPOINTER,DI中,POINTER和DI之间的“,”写成了“.”。

最后一处错误也是最严重的一处错误,把段寄存器CS当成了目的操作数,修改方式是:

用其他通用寄存器代替。

通过本次微机原理与接口技术课程设计,培养了我各方面的能力。

我更好的学会了把课堂上的理论知识运用到实践中,通过解决实际问题,不断地找出自己所学知识中的薄弱环节。

使课堂上学习的理论知识得到了进一步的优化、补充,使自己所学知识变得更加完善。

通过对程序的不断调试修改,不但使自己的知识面有所拓宽,同时也提高了自己敢于动手、善于动手的能力和独立的分析问题、解决问题的能力,也使自己对微机原理与接口技术这门课程的学习兴趣有所增加,为以后更好的学习这门课程,以及与本课程有关的相关课程打下了坚实的基础。

七、参考文献

《微型计算机系统原理及应用》,周明德,清华大学出版社。

《微型计算机技术及应用》,戴梅萼、史嘉权,清华大学出版社。

《8086微型计算机组成、原理及接口》,顾滨,机械工业出版社。

 

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

当前位置:首页 > 高中教育 > 数学

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

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