微机原理字符串动画显示.docx

上传人:b****2 文档编号:17113615 上传时间:2023-07-22 格式:DOCX 页数:25 大小:80.76KB
下载 相关 举报
微机原理字符串动画显示.docx_第1页
第1页 / 共25页
微机原理字符串动画显示.docx_第2页
第2页 / 共25页
微机原理字符串动画显示.docx_第3页
第3页 / 共25页
微机原理字符串动画显示.docx_第4页
第4页 / 共25页
微机原理字符串动画显示.docx_第5页
第5页 / 共25页
微机原理字符串动画显示.docx_第6页
第6页 / 共25页
微机原理字符串动画显示.docx_第7页
第7页 / 共25页
微机原理字符串动画显示.docx_第8页
第8页 / 共25页
微机原理字符串动画显示.docx_第9页
第9页 / 共25页
微机原理字符串动画显示.docx_第10页
第10页 / 共25页
微机原理字符串动画显示.docx_第11页
第11页 / 共25页
微机原理字符串动画显示.docx_第12页
第12页 / 共25页
微机原理字符串动画显示.docx_第13页
第13页 / 共25页
微机原理字符串动画显示.docx_第14页
第14页 / 共25页
微机原理字符串动画显示.docx_第15页
第15页 / 共25页
微机原理字符串动画显示.docx_第16页
第16页 / 共25页
微机原理字符串动画显示.docx_第17页
第17页 / 共25页
微机原理字符串动画显示.docx_第18页
第18页 / 共25页
微机原理字符串动画显示.docx_第19页
第19页 / 共25页
微机原理字符串动画显示.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理字符串动画显示.docx

《微机原理字符串动画显示.docx》由会员分享,可在线阅读,更多相关《微机原理字符串动画显示.docx(25页珍藏版)》请在冰点文库上搜索。

微机原理字符串动画显示.docx

微机原理字符串动画显示

 

微机原理课设报告

学生姓名:

常卫洪学号:

130704101

专业班级:

电子科学与技术131班

课程名称:

微型计算机原理及应用技术

学年学期:

2015-2016学年第1学期

指导教师:

赵艳

2015年12月

课程设计成绩评定表

学生姓名

常卫洪

学号

130704101

成绩

专业班级

电科131

起止时间

2015.12.20至2015.12.29

设计题目

字符串动画显示

课程设计态度:

端正□较端正□一般□较差□

课程设计纪律:

好□较好□一般□较差□

课程设计出勤情况:

好□较好□一般□较差□

课程设计任务完成情况:

优秀□好□一般□较差□

课程设计报告完成情况:

优秀□好□一般□较差□

动手能力:

强□较强□一般□较差□

团队精神:

好□较好□一般□较差□

创新意识:

强□较强□一般□较差□

 

指导教师:

年月日

 

一、设计目的--------------------------------------------4

二、设计任务与要求-------------------------------------4

三、小组分工--------------------------------------------4

四、实现方法--------------------------------------------4

五、功能效果展示---------------------------------------11

六、改进以及及建意-------------------------------------13

七、心得体会---------------------------------------------14

八、参考资料--------------------------------------------14

九、附源程序--------------------------------------------14

一、设计目的:

1、掌握汇编语言,会利用汇编语言编写一定功能的程序;

2、熟悉DOS环境以及在DOS下会调试编写好的汇编程序;

3、熟悉常用的DOS功能;

4、小组合作完成设计题目。

二、设计任务与要求

设计内容要求:

1、菜单

内容包括:

①输入字符串;②字符串动画显示;③退出。

2、输入字符串

选择该项后,可以输入一个字符串。

该字符串即为动画显示时所显示的字符串。

3、字符串动画显示

所示字符串在一矩形框内一半从左另一半从右向中间移动,当两半相遇时又分别向两边移动,直至遇到两侧的边框双重新向中间移动,重复上述过程直至按任意键,则停止字符串动画显示返回到主菜单。

4、在主菜单中选择退出项,则结束程序返回DOS。

3、进度及分工安排

1.进度安排

序号

设计内容

时间

1

查阅资料、确定设计思路

3天

2

设计实现、编写程序

3天

3

调试

1天

4

考核设计、写设计报告

2天

2.分工安排

序号

工作内容

成员

1

确定设计思路,画流程图

陈继贤

2

编写字符串移动程序段

张恒刘阳

3

编写菜单项,矩形框程序段

常卫洪陈继贤

4

程序汇总,调试

张恒田淑乾

4、实现方法

4.1MASM编译开发环境实现

MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm是Windows下开发汇编的利器。

它与windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM的开发人员必须在windows下进行开发。

MASM版本至今在不断的更新,目前的最新版本为10.0,推荐使用新版本进行开发。

MASM5.0是最常用的汇编连接软件其简单操作为输入asm文件将其连接为obj文件用link得到exe文件。

4.2算法实现

软中断:

DOS功能调用编写的程序中INT10H和INT21H软中断的应用。

如下表:

 

INT10H

功能号

功能

入口参数

出口参数

00H

设置显示模式

AL=0380*25彩色文本方式

0EH

显示字符

AL=字符

字符显示在屏幕上

INT21H

功能号

功能

入口参数

出口参数

09H

显示字符串

DS:

DX=缓冲区

0AH

输入字符串

DS:

DX=缓冲区

01H

键盘输入字符

AL=输入字符

INT16H

功能号

功能

入口参数

出口参数

00H

从键盘读字符

AL=字符码

AH=扫描码

矩形框代码:

186竖框编写   187右上角编写

      188右下角编写  200左下角编写

201左上角编写  205横框编写

总体流程:

设置三个选项分别对应选项标号。

将键盘输入的标号与1、2、3相比较以确定不同的程序块调用接口。

“1”输入字符串,即进入过程一;“2”动画显示所要求的字符串,即调用过程二;“3”返回DOS系统,即调用EXIT标号。

AL=2?

AL=3?

输出提示符

输入字符串以回车结束

输出矩形框并保持框内无字符数秒

输出提示符

输入字符

输出提示符

返回DOS

R?

Q?

开始

输出主菜单

输入字符(数字:

1、2、3)存AL

AL=1?

Y

N

N

Y

Y

Y

N

Y

N

4.3流程图

 

 

延时几秒,直到判断出矩形框完全出现

 

4.4部分程序

1.菜单程序

MENUDB5DUP(0AH)

DB31DUP(''),'MAINMENU',0DH,0AH

DB25DUP(''),201,21DUP(205),187,0DH,0AH

DB25DUP(''),186,'1.INPUTASTRING...',186,0DH,0AH

DB25DUP(''),186,'2.DISPLAYMODEL...',186,0DH,0AH

DB25DUP(''),186,'3.RETURNTODOS...',186,0DH,0AH

DB25DUP(''),200,21DUP(205),188,0DH,0AH

DB28DUP(''),'CHOICE(1,2,3):

$'

MESGDB0DH,0AH,0DH,0AH,9,'PRESSANYKEYTOEXIT...$'

CNT1DW0;前导空格长度

CNT2DW0;左半字符串长度

CNT3DW0;中间空格长度

CNT4DW0;右半字符串长度

CNT5DW0;末尾空格长度

LEFTDW0

STRDB21

DB0

BUFDB0DH,20DUP(0)

2.矩形框程序

LINE:

;矩形框

MOVDI,(18*80+10)*2

MOVAL,201;左上角

MOVAH,3;矩形框颜色

STOSW

MOVCX,60-2

MOVAL,'*';横框

REPSTOSW

MOVAL,187;右上角

STOSW

ADDDI,20*2

MOVAL,'|';竖框

STOSW

MOVLEFT,DI

MOVCX,60-2

MOVAL,20H;空格

REPSTOSW

MOVAL,'|';竖框

STOSW

ADDDI,20*2

MOVAL,200;左下角

STOSW

MOVCX,60-2

MOVAL,'*';横框

REPSTOSW

MOVAL,188;右下角

STOSW

RET

3.字符串移动程序

LEADX,MENU;MENU文件的主菜单将MENU的首地址给DX

MOVAH,9

INT21H

;显示字符串,DS:

DX串地址,即MENU,画出方框图

INPUT:

MOVAH,0

INT16H

;从键盘读一字符

CMPAL,'1';召唤第一步,输入一个字符串

JNZCP2结果不为零跳转及ZF=0

CALLSUB01;输入一个字符串

JMPINPUT

CP2:

CMPAL,'2';召唤第二步,字符串左右移动

JNZCP3

CALLSUB02;字符串左右移动

JMPAGAIN;返回到主菜单

CP3:

CMPAL,'3';返回DOS

JNZINPUT

LEADX,MESG

MOVAH,9

INT21H

MOVAH,1

INT21H

;接受字符

MOVAH,4CH

INT21H

;结束

DELAYPROC

PUSHCX

PUSHDX;保护现场

MOVDX,1000;第二轮循环次数

D1:

MOVCX,0FFFFH;第一轮循环次数

LOOP$

;若CX不等于零,跳转至当前代码地址的指令($=该指令在该代码段的偏移地址)

DECDX

JNZD1

POPDX

POPCX;现场还原

RET

DELAYENDP

SUB01:

MOVAX,0E0DH;0DH为本行开头,0EH输出

INT10H

MOVAL,0AH;0AH为下一行输出

INT10H

LEADX,STR;DX输入字符缓冲区首地址

MOVAH,0AH

INT21H;输入一个字符串中断

MOVAX,0E0AH;换行

INT10H

RET

SUB02:

CMPSTR+1,2;系统键入的字符个数

JNBY2

JMPQUIT

Y2:

CALLLINE;画矩形框

MOVDL,60-2;框内长度

MOVAL,STR+1;字符长度

SUBDL,AL

MOVDH,0;DH清零

MOVCNT3,DX

MOVBL,AL

INCAL

SHRAL,1;AL+1/2

CBW

MOVCNT2,AX;左半边

SUBBL,AL

MOVBH,0

MOVCNT4,BX;右半边

MOVBL,41

Y3:

MOVBP,ES

PUSHDS

POPES

MOVDI,1000H

MOVCX,CNT1

JCXZU1

MOVAL,20H

REPSTOSB

U1:

LEASI,BUF;

MOVCX,CNT2;

REPMOVSB;

MOVCX,CNT3

JCXZU2

MOVAL,20H

REPSTOSB

U2:

MOVCX,CNT4

REPMOVSB

MOVCX,CNT5

JCXZU3

MOVAL,20H

REPSTOSB

U3:

SHOW:

MOVES,BP

INCBL

MOVAH,BL;设置形式白底黑字

MOVSI,1000H

MOVDI,LEFT

MOVCX,60-2

PPP:

LODSB

STOSW

LOOPPPP

MOVAH,1

INT16H

JNZSSS;按任意键,返回主菜单

CALLDELAY

CMPCNT3,0

JNZKK1

HERE:

MOVAL,1000B

XORBYTEPTR[KK1+1],AL

XORBYTEPTR[KK1+5],AL

XORBYTEPTR[KK1+9],AL

XORBYTEPTR[KK2-3],AL

KK1:

INCCNT1

INCCNT5

DECCNT3

CMPCNT3,0

JZKK2

DECCNT3

KK2:

CMPCNT1,0

JZHERE

JMPY3

SSS:

MOVSTR+1,0

QUIT:

LEASI,CNT1

XORAX,AX

MOVCX,5

KK3:

MOV[SI],AX

INCSI

INCSI

LOOPKK3

XORDI,DI

MOVCX,80*25

MOVAX,720H

REPSTOSW;清全屏

RET

5、功能效果展示

1.调试

程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。

Debug是调试汇编语言程序的工具,它不仅能跟踪程序的运行,还可以显示修改内存与寄存器内容,以便在调试程序中检查程序,找错、改错。

2.编译成功

3.连接成功

4.进入程序主界面

5.开始校验

6.退出程序

六、改进意见及建议

本程序虽然已经完成了课程设计的全部要求,但是仍有不足之处,因为时间紧张和知识缺乏,所以程序不是很好。

例如:

有些程序可以很简单的完成,但是由于知识的问题只能很繁琐。

有很多限制,比如,限制字符串长度。

应该不能限制字符串长度。

七、心得体会

经过一周的课程设计练习,对计算机的语言和编程有了一定的了解和掌握,和一定的动手能力。

特别明白了凡事要注重细节,细节很重要。

稍有不慎程序就会出现错误。

比如:

少打一个空格或一个逗号或打错一个字母就不能运行。

本次课程设计使用了汇编语言中的INT10H,INT21H和INT1CH三个软中断服务程序。

INT10H是BIOS对屏幕及显示器所提供的服务程序,INT21H是DOSX系统功能的调用。

在本次课程设计是,我编写菜单程序和矩形框程序段。

从图书管理找了一本书,看了DOS和BIOS的很多指令,也让我收益匪浅。

通过本次课程设计,我将我以前学过的一些指令的运用更加的深刻,还有一些以前没学过的指令。

对于如何运用masm软件,比在微机原理实验时有了更深的理解。

就算一个字母输入错误都会导致最后程序运行不出来,更加锻炼了我的细心和认真。

遇到问题时,通过自己上网查资料,查课本,锻炼了自己动手的能力。

这也让我越来越深的认识到,不管以后工作还是学习都要仔细认真,查阅资料。

学习的过程大体就是:

先大体弄懂要学的那些知识,然后是自己进行练习,通过练习发现问题,然后是解决问题,这个自学的过程如此反复,每进行一次锻炼,自己的能力得到一次提升,进而一次次提高自己。

实践与理论相结合,才能更好的理解所学知识,今后我将努力将基础知识掌握牢固,争取在下一次课程设计中能够改善这次的不足,做出更好的设计,提高自己的能力。

多多动手,多多练习,理论联系实际,才能真正学会,学懂,学通,融会贯通。

最后,感谢指导老师和同组同学,他们在我完成这项课程设计中起到关键的作用,对微机原理这门课程有了更深刻的认识。

也正是全组同学的分工合作,全心配合,才能完成这项任务。

这次学习的过程也将对我今后的工作和学习起到指导作用。

八、参考资料

《微型计算机原理及应用技术》第2版机械工业出版社

九、附源程序

初始化程序:

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

MOVAX,CODE

MOVDS,AX

MOVAX,0B800H

;0B800H是文本模式下显存起始地址;

;0A000H是图形模式下显存起始地址;

;起始地址之后的一段内存数据决定了界面上显示的文字、图形、前背景色

MOVES,AX

CLD

AGAIN:

MOVAX,3

INT10H

;设置显示器模式为80×2516色

LEADX,MENU;MENU文件的主菜单将MENU的首地址给DX

MOVAH,9

INT21H

;显示字符串,DS:

DX串地址,即MENU,画出方框图

INPUT:

MOVAH,1

INT21h

;从键盘读一字符

CMPAL,'1';召唤第一步,输入一个字符串

JNECP2;结果不为零跳转及ZF=0

CALLSUB01;输入一个字符串

JMPINPUT

CP2:

CMPAL,'2';召唤第二步,字符串左右移动

JNZCP3

CALLSUB02;字符串左右移动

JMPAGAIN;返回到主菜单

CP3:

CMPAL,'3';返回DOS

JNZINPUT

LEADX,MESG

MOVAH,9

INT21H

MOVAH,1

INT21H

;接受字符

MOVAH,4CH

INT21H

;结束

DELAYPROC

PUSHCX

PUSHDX;保护现场

MOVDX,0100H;第二轮循环次数

D1:

MOVCX,08FFH;第一轮循环次数

LOOP$

;若CX不等于零,跳转至当前代码地址的指令($=该指令在该代码段的偏移地址)

DECDX

JNZD1

POPDX

POPCX;现场还原

RET

DELAYENDP

SUB01:

MOVAX,02H;0DH为本行开头,02H输出

INT21H

MOVDL,0AH;0AH为下一行输出

INT21H

LEADX,STR1;DX输入字符缓冲区首地址

MOVAH,0AH

INT21H;输入一个字符串中断

MOVAH,02H;0DH为本行开头,02H输出

MOVDL,0DH

INT21H

MOVDL,0AH;0AH为下一行输出

INT21H

;RET

SUB02:

CMPSTR+1,2;系统键入的字符个数

JNBY2

JMPQUIT

Y2:

CALLLINE;画矩形框

MOVDL,60-2;框内长度

MOVAL,STR1+1;字符长度

SUBDL,AL

MOVDH,0;DH清零

MOVCNT3,DX

MOVBL,AL

INCAL

SHRAL,1;AL+1/2

CBW

MOVCNT2,AX;左半边

SUBBL,AL

MOVBH,0

MOVCNT4,BX;右半边

MOVBL,41

Y3:

MOVBP,ES

PUSHDS

POPES

MOVDI,1000H

MOVCX,CNT1

JCXZU1

MOVAL,20H

REPSTOSB

U1:

LEASI,BUF;

MOVCX,CNT2;

REPMOVSB;

MOVCX,CNT3

JCXZU2

MOVAL,20H

REPSTOSB

U2:

MOVCX,CNT4

REPMOVSB

MOVCX,CNT5

JCXZU3

MOVAL,20H

REPSTOSB

U3:

SHOW:

MOVES,BP

INCBL

MOVAH,BL;设置形式白底黑字

MOVSI,1000H

MOVDI,LEFT

MOVCX,60-2

PPP:

LODSB

STOSW

LOOPPPP

MOVAH,1

INT16H

JNZSSS;按任意键,返回主菜单

CALLDELAY

CMPCNT3,0

JNZKK1

HERE:

MOVAL,1000B

XORBYTEPTR[KK1+1],AL

XORBYTEPTR[KK1+5],AL

XORBYTEPTR[KK1+9],AL

XORBYTEPTR[KK2-3],AL

KK1:

INCCNT1

INCCNT5

DECCNT3

CMPCNT3,0

JZKK2

DECCNT3

KK2:

CMPCNT1,0

JZHERE

JMPY3

SSS:

MOVSTR+1,0

QUIT:

LEASI,CNT1

XORAX,AX

MOVCX,5

KK3:

MOV[SI],AX

INCSI

INCSI

LOOPKK3

XORDI,DI

MOVCX,80*25

MOVAX,720H

REPSTOSW;清全屏

JMPAGAIN

LINE:

;矩形框

MOVDI,(18*80+10)*2

MOVAL,201;左上角

MOVAH,3;矩形框颜色

STOSW

MOVCX,60-2

MOVAL,'*';横框

REPSTOSW

MOVAL,187;右上角

STOSW

ADDDI,20*2

MOVAL,'|';竖框

STOSW

MOVLEFT,DI

MOVCX,60-2

MOVAL,20H;空格

REPSTOSW

MOVAL,'|';竖框

STOSW

ADDDI,20*2

MOVAL,200;左下角

STOSW

MOVCX,60-2

MOVAL,'*';横框

REPSTOSW

MOVAL,188;右下角

STOSW

RET

MENUDB5DUP(0AH)

DB31DUP(''),'MAINMENU',0DH,0AH

DB25DUP(''),201,21DUP(205),187,0DH,0AH

DB25DUP(''),186,'1.INPUTASTRING...',186,0DH,0AH

DB25DUP(''),186,'2.DISPLAYMODEL...',186,0DH,0AH

DB25DUP(''),186,'3.RETURNTODOS...',186,0DH,0AH

DB25DUP(''),200,21DUP(205),188,0DH,0AH

DB28DUP(''),'CHOICE(1,2,3):

$'

MESGDB0DH,0AH,0DH,0AH,9,'PRESSANYKEYTOEXIT...$'

CNT1DW0;前导空格长度

CNT2DW0;左半字符串长度

CNT3DW0;中间空格长度

CNT4DW0;右半字符串长度

CNT5DW0;末尾空格长度

LEFTDW0

STRDB21

DB0

BUFDB0DH,20DUP(0)

CODEENDS

ENDSTART

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

当前位置:首页 > 初中教育 > 语文

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

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