字符串动画显示汇编语言程序设计.docx
- 文档编号:27887787
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:31
- 大小:176.80KB
字符串动画显示汇编语言程序设计.docx
《字符串动画显示汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《字符串动画显示汇编语言程序设计.docx(31页珍藏版)》请在冰豆网上搜索。
字符串动画显示汇编语言程序设计
字符串动画显示汇编语言程序设计
1总体方案论证
1.1题目功能分析
(1)屏幕提示输入字符串;
(2)输入完成后,字符动画显示,显示方式可为:
从无到有,从左到右,从上到下,大小写变化、颜色变化等;
(3)可连续显示或定时显示,直至单击“Q”或“q”键退出程序。
1.2算法说明
(1)屏幕提示输入字符串主要运用中断INT21H的0AH功能;
(2)在确定光标位置后,通过循环改变其行列数值来达到左右上下移动功能;
大小写变化则通过将输入字符与‘a’和‘z’比较,若为小写字母,则减去20H,否则不变;
颜色变化则通过INT10H的09H功能循环调用实现;
(3)退出功能通过将输入‘Q’和‘q’与其ASC
比较,跳转到退出程序;而退出程序主要通过INT21H的4CH功能实现。
2流程图设计及说明
2.1主程序流程图设计
图2-1字符串动画总流程图
2.2分布具体功能实现流程图设计
2.2.1字符串右移
2.2.2字符串下移
2.2.3字符串闪烁
3软件设计关键问题或程序段落说明
3.1提示输入字符串显示功能实现
屏幕提示输入字符串主要运用中断INT21H的0AH功能,输入后回车则完成字符串在特定位置的显示。
另外,在此段程序中,还通过用空字符串的逐个显示来完成字符从无到有的功能实现。
leadx,buf
movah,0ah
int21h
movbx,2;多字符输入,回车结束,有效内容自第三个始。
movdi,0
B1:
moval,buf[bx]
cmpal,13;是否是回车?
jeAG1
movbuff1[di],al
incbx
incdi
jmpB1
AG1:
movah,0
moval,2
int10h;黑白文本
OTHER:
movcx,0ffffh;
AG:
movdh,7;hang
movdl,35;lie
movah,2
movbh,0;页号为0
int10h;置光标位置
leadx,buff1
movah,9
int21h;显示字符串
movdh,7
movdl,35
movah,2
movbh,0
int10h;置光标位置
leadx,buff2
movah,9
int21h;
subcx,1;
jnzAG;不等于转移
3.2向右、向下移动功能实现
如流程图可知,向下和向右移动,程序基本相同,只不过一个改变的是行,另一个改变的是列,以下以向右移动为例。
主要通过INT10H调用,且循环操作一定次数实现。
其中,在下一次输出时,为了清除前一个位置的输出,用空字符串替代。
另外,通过延时控制移动速度。
程序如下:
moval,3
movah,0
int10h;16色文本
movdl,0;字符串向右移动,给出起始列
bbb2:
MOVSI,OFFSETbuff1
movdi,0
bbb1:
movdh,7;dhhangdllie
incdl
movah,2
int10h;置光标位置2号置光标位置9号指定输出,每次显示一个
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0eh;color
movcx,01;显示字符的次数
int10h
cmpdi,0fh;立即数大小取决于字符串大小
jbbbb1
calldelay1
subdl,0fh;设置列
movSI,OFFSETbuff2
movdi,0
ccc1:
movdh,7;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0eh;color
movcx,01;字符重复一次
int10h
cmpdi,0fh
jbccc1
calldelay2
;movah,07
;int21h首先在一个位置输出然后输出空白覆盖掉在输出下一个位置
cmpdl,25
jnbxiangxia;在这里跳出右移,转到向下
subdl,0dh
jmpbbb2
3.3字符串大小写变化实现
因为在ASC
表中大小写相差20H,所以通过将输入字符与‘a’和‘z’比较,若为小写字母,则减去20H,否则不变。
程序如下:
daxiaoxie:
movdl,7
movdh,35
MOVSI,OFFSETbuff1
movdi,0
a1:
moval,[SI]
cmpal,'$'
jeshansuo
cmpal,'a'
jbnext
cmpal,'z'
janext
subal,20h
mov[SI],al
next:
incSI
jmpa1
3.4颜色变化功能实现
颜色变化功能实现相当于对字符串属性定义,表现出颜色差别,然后循环调用并插入延时。
以下程序效果是三种颜色闪烁,其中aaa1表示黄色,aaa2表示绿色,aaa3表示红色。
具体程序如下:
shansuo:
;三种颜色闪烁
callaaa1
calldelay1
callaaa2
calldelay1;内部转换后还是用BIOS10h9号功能调用
callaaa3
calldelay1
jmpshansuo
3.5退出功能实现
退出功能通过将输入‘Q’和‘q’与其ASC
比较,跳转到退出程序;而退出程序主要通过INT21H的4CH功能实现。
movah,08h;q键退出
int21H
cmpAL,'Q'
jeexit
cmpAL,'q'
jeexit
exit:
movah,4ch
int21h
4调试说明、结果记录及分析
4.1调试说明
所谓程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。
这是保证计算机信息系统正确性的必不可少的步骤。
编完计算机程序,必须送入计算机中测试。
调试过程中出现很多问题。
很多次,程序更改后得不到目标文件,主要原因是编程过程中不够细心,而且没有整体把握。
例如,有段名重复的错误,还有对调用不熟悉造成编程过程很痛苦。
4.2结果记录与分析
4.2.1提示输入字符串
以下是在运行程序后窗口出现的界面,提示输入字符串以及按‘Q’或‘q’退出。
如图3.1:
图3.1提示输入字符串
4.2.2输入后显示字符串
以下是输入字符串后按回车前显示的界面。
如图3.2:
图3.2输入字符串
4.2.3在特定位置从无到有显示
以下是按完回车键后依照程序设定位置,光标先跳到第七行、第三十五列,然后逐个字符循环显示字符串的界面对比。
如图3.3:
图3.3字符串从无到有
4.2.4在特定位置向右移动
以下是字符串从第七行、第零列开始右移的对比界面。
如图3.4:
图3.4字符串右移
4.2.5在特定位置向下移动
以下是字符串从第七行、第零列开始下移的对比界面。
如图3.5:
图3.5字符串下移
4.2.6小写变成大写加闪烁
以下是字符串中所有小写字母变成大写后进行黄、绿、红依次变化现象对比界面。
如图3.6:
图3.6字符串颜色变化
5课程设计收获及心得
学完《微机原理与接口技术》,本以为自己学到的东西挺多,直到课程设计开始,才深刻了解到自己似乎只了解个皮毛。
作为微原中的核心,汇编语言的程序设计在课程学习中只有一章,而且书本上的例题与这次课程设计任务相比,难度不大。
几乎整整一周的微原课程设计结束,对于我,感受颇深,收获颇多。
除了一些以前学过的指令,最深的感触是对中断INT21H和INT10H中一些常用功能的运用。
经过此次课程设计,我通过自己查资料、自己设计编程到最后完成功能实现,最终的成就感比平时更大,因为我感受到了学以致用,将理论用于实际的效果。
在以后的学习中,我会继续保持这样良好的态度对待任何学习,不论是课程设计还是实习,抑或只是平时课程学习,我将为了提高自身实践能力而有目的的学习与收获,而不仅仅是为了应付考试或者拿到学位证。
6参考文献
[1]彭虎等编著.微机原理与接口技术(第二版).北京:
电子工业出版社,2008
[2]沈美明,温东禅.IBM-PC汇编语句程序设计(第2版).北京:
清华大学出版社,2001
[3]任向明,卢惠林.汇编语言程序设计实用教程.北京:
清华大学出版社,2009
[4]马力妮.80x86汇编语言程序设计.北京:
机械工业出版社,2004
[5]艾德才.Pentium系列微型计算机原理与接口技术.北京:
高等教育出版社,2000
附录:
程序清单
datasegment
buff1db'$'
buff2db'$'
bufdb100dup('$')
buff3db'pleaseinputastring!
',13,10,'$'
buff4db'PressQorqtoexit!
',13,10,'$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
leadx,buff3;显示提示信息
movah,09h
int21h
leadx,buff4;显示提示信息
movah,09h
int21h
leadx,buf
movah,0ah
int21h
movbx,2;多字符输入,回车结束,有效内容自第三个始。
movdi,0
B1:
moval,buf[bx]
cmpal,13;是否是回车?
jeAG1
movbuff1[di],al
incbx
incdi
jmpB1
AG1:
movah,0
moval,2
int10h;黑白文本
OTHER:
movcx,0ffffh;
AG:
movdh,7;hang
movdl,35;lie
movah,2
movbh,0;页号为0
int10h;置光标位置
leadx,buff1
movah,9
int21h;显示字符串
movdh,7
movdl,35
movah,2
movbh,0
int10h;置光标位置
leadx,buff2
movah,9
int21h;
subcx,1;
jnzAG;不等于转移
;*********************************************************
moval,3
movah,0
int10h;16色文本
movdl,0;字符串向右移动,给出起始列
bbb2:
MOVSI,OFFSETbuff1
movdi,0
bbb1:
movdh,7;dhhangdllie
incdl
movah,2
int10h;置光标位置2号置光标位置9号指定输出,每次显示一个
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0eh;color
movcx,01;显示字符的次数
int10h
cmpdi,0fh;立即数大小取决于字符串大小
jbbbb1
calldelay1
;*********************************************************
subdl,0fh;设置列
MOVSI,OFFSETbuff2
movdi,0
ccc1:
movdh,7;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0eh;color
movcx,01;字符重复一次
int10h
cmpdi,0fh
jbccc1
calldelay2
;movah,07
;int21h首先在一个位置输出然后输出空白覆盖掉在输出下一个位置
cmpdl,25
jnbxiangxia;在这里跳出右移,转到向下
subdl,0dh
jmpbbb2
xiangxia:
;字符串向下移动
movdl,0
movdh,7;dhhangdllie
ddd2:
MOVSI,OFFSETbuff1
movdi,0
eee1:
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0ah;color
movcx,01;字符重复一次
int10h
cmpdi,0fh
jbeee1
calldelay1
subdl,0fh;列回到原处,输出空白覆盖
MOVSI,OFFSETbuff2
movdi,0
fff1:
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0eh;color
movcx,01;字符重复一次
int10h
cmpdi,0fh
jbfff1
calldelay2
cmpdh,13;从第7行下移到13行退出到大小写转换
jnbdaxiaoxie
incdh
subdl,0fh
jmpddd2;字符串向下移动结束
daxiaoxie:
movdl,7
movdh,35
MOVSI,OFFSETbuff1
movdi,0
a1:
moval,[SI]
cmpal,'$'
jeshansuo
cmpal,'a'
jbnext
cmpal,'z'
janext
subal,20h
mov[SI],al
next:
incSI
jmpa1
shansuo:
;三种颜色闪烁
callaaa1
calldelay1
callaaa2
calldelay1;内部转换后还是用BIOS10h9号功能调用
callaaa3
calldelay1
MOVAH,08h;q键退出
INT21H
cmpAL,'Q'
jeexit
cmpAL,'q'
jeexit
jmpshansuo
exit:
movah,4ch
int21h
;*********************************************************
aaa1procnear;黄色
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa1:
movdh,20;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0eh;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
jbaa1
ret
aaa1endp
;******************************************************
aaa2procnear;绿色
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa2:
movdh,20;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0ah;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
jbaa2
ret
aaa2endp
;********************************************************
aaa3procnear;红色
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa3:
movdh,20;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,05h;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
jbaa3
ret
aaa3endp;三种颜色闪烁
;**********************************************************
delay1procnear
pushcx
pushbx
movbx,1fffh
wait4:
movcx,0ffffh
wait5:
loopwait5
decbx
jnzwait4
popbx
popcx
ret
delay1endp
;延迟1比延迟二长
;*********************************************************
delay2procnear
pushcx
pushbx
movbx,0ffh
wait2:
movcx,0ffffh
wait3:
loopwait3
decbx
jnzwait2
popbx
popcx
ret
delay2endp;字符串向右移动结束
codeends
endstart
本科生课程设计成绩评定表
姓名
张丹
性别
女
专业、班级
自动化专业、自动化0805班
课程设计题目:
字符串动画显示汇编语言程序设计
课程设计答辩或质疑记录:
成绩评定依据:
详见成绩评分表
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
成绩评分表
项目
评分标准
得分
课
程
设
计
说
明
书
撰
写
60分
方案
论证
10分
能正确分析设计内容,算法选择合理,并有详细的说明、论证。
10≥X≥8
能分析设计内容,算法选择满足设计要求,有简单说明
7≥X≥4
设计方案不太满足设计内容及要求,无说明
3≥X≥0
流程图
设计
10分
流程设计正确,并有详细的说明,流程图绘制规范
10≥X≥8
流程设计符合设计内容及要求,并有一定说明,流程图绘制正确
7≥X≥4
流程设计不太满足设计内容及要求,且无说明,流程图绘制不太正确
3≥X≥0
软件
设计
说明
10分
程序设计关键问题或段落有详细说明,程序代码正确
10≥X≥8
程序设计关键问题或段落有说明,程序代码基本正确
7≥X≥4
程序设计关键问题或段落基本无说明,程序代码不完整或不太满足设计要求
3≥X≥0
结果
分析
10分
能正确记录调试结果,并能分析结果,给出合理的建议
10≥X≥8
能记录调试结果,并加以分析
7≥X≥4
记录调试结果,但无分析
3≥X≥0
心得
体会
10分
基本上真实、客观地反映了本人课程设计的收获、心得
10≥X≥6
无感而发,空洞,套话。
5≥X≥0
报告
规范
10分
完全按照报告格式要求,内容充实、详细,完全符合规范
10≥X≥8
基本按报告格式要求,内容完整,基本符合规范
7≥X≥4
未按报告格式要求,不太符合规范
3≥X≥0
程序调试
10分
程序上机调试运行结果完全正确
10≥X≥8
程序上机调试运行结果基本满足设计要求
7≥X≥4
程序上机调试运行结果不太满足设计要求
3≥X≥0
设计答辩
10分
能详细完整地表述设计内容,并能正确回答问题
10≥X≥8
能完整地表述设计内容,并能回答相关问题
7≥X≥4
基本表述设计内容,但不能回答相关问题
3≥X≥0
难度分值
10分
一~三题:
7分四~七题:
8分
八~十二题:
9分十三~十七题:
10分
纪律及考勤
10分
按照课程设计进度安排完成课程设计任务,按时参加中期检查及答疑、程序演示及答辩环节。
缺席一次扣5分。
总评分数
优秀(100~90)
良好(89~80)
中等(79~70)
及格(69~60)
不及格(60以下)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 动画 显示 汇编语言 程序设计