微机原理字符串动画显示.docx
《微机原理字符串动画显示.docx》由会员分享,可在线阅读,更多相关《微机原理字符串动画显示.docx(22页珍藏版)》请在冰豆网上搜索。
![微机原理字符串动画显示.docx](https://file1.bdocx.com/fileroot1/2022-11/17/8bea3f73-57dc-4aef-bce8-a4e3a6b3669b/8bea3f73-57dc-4aef-bce8-a4e3a6b3669b1.gif)
微机原理字符串动画显示
微机原理课设报告
学生姓名:
常卫洪学号:
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