用汇编语言实现闪烁文字.docx
《用汇编语言实现闪烁文字.docx》由会员分享,可在线阅读,更多相关《用汇编语言实现闪烁文字.docx(16页珍藏版)》请在冰豆网上搜索。
用汇编语言实现闪烁文字
1.设计任务
用汇编语言实现闪烁文字的效果
2.原理
2.1题目功能分析
〔1〕屏幕提示输入字符串;
〔2〕输入完成后,字符动画显示颜色变化;
〔3〕单击“Q〞或“q〞键退出程序。
2.2算法说明
〔1〕屏幕提示输入字符串主要运用中断INT21H的0AH功能;
〔2〕颜色变化那么通过INT10H的09H功能循环调用实现;
〔3〕退出功能通过将输入‘Q’和‘q’与其ASCII比拟,跳转到退出程序;而退出程序主要通过INT21H的4CH功能实现。
2.3.流程图
NN
Y
图1
字符串闪烁流程图
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;
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颜色变化功能实现
颜色变化功能实现相当于对字符串属性定义,表现出颜色差异,然后循环调用并插入延时。
以下程序效果是三种颜色闪烁,其中aaa1表示白色,aaa2表示黑色,aaa3表示绿色,aaa4表示红色,aaa5表示紫色。
往复调用彩色和黑色,在各种颜色变换之间插入黑色即可实现彩色连续闪烁的效果。
具体程序如下:
shanshuo:
;
callaaa1;white
calldelay1
callaaa2;black
calldelay1
callaaa3;white
calldelay1
callaaa2;black
calldelay1
callaaa4;white
calldelay1
callaaa2;black
calldelay1
callaaa5;white
calldelay1
callaaa2;black
calldelay1
MOVAH,08h;Q,q键退出
INT21H
cmpAL,'Q'
jeexit
cmpAL,'q'
jeexit
jmpshanshuo
3.3退出功能实现
退出功能通过将输入‘Q’和‘q’与其ASCII比拟,跳转到退出程序;
movah,08h;q键退出
int21H
cmpAL,'Q'
jeexit
cmpAL,'q'
jeexit
exit:
movah,4ch
int21h
3.4完整程序
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;
jmpshansuo
shansuo:
;
callaaa1;white
calldelay1
callaaa2;black
calldelay1
callaaa3;white
calldelay1
callaaa2;black
calldelay1
callaaa4;white
calldelay1
callaaa2;black
calldelay1
callaaa5;white
calldelay1
callaaa2;black
calldelay1
MOVAH,08h;q键退出
INT21H
cmpAL,'Q'
jeexit
cmpAL,'q'
jeexit
mpshansuo
exit:
movah,4ch
int21h
aaa1procnear;white
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa1:
movdh,8;dhhangdllie;行列
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,07h;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
aa1
ret
aaa1endp
aaa2procnear;black
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa2:
movdh,8;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,00h;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
aa2
ret
aaa2endp
aaa3procnear;green
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa3:
movdh,8;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,02h;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
aa3
ret
aaa3endp;颜色闪烁
aaa4procnear;red
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa4:
movdh,8;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0ch;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
aa4
ret
aaa4endp;颜色闪烁
aaa5procnear;prople
MOVSI,OFFSETbuff1
movdi,0
movdl,20
aa5:
movdh,8;dhhangdllie
incdl
movah,2
int10h;置光标位置
movah,09;9号功能
incdi
moval,[si]
incsi
movbh,0;显示页
movbl,0dh;color
movcx,01;字符重复一次
int10h
cmpdi,0ch
aa5
ret
aaa5endp;颜色闪烁
delay1procnear
pushcx
pushbx
movbx,1fffh
wait4:
movcx,0ffffh
wait5:
loopwait5
decbx
jnzwait4
popbx
popcx
ret
delay1endp
delay2procnear
pushcx
pushbx
movbx,0ffh
wait2:
movcx,0ffffh
wait3:
loopwait3
decbx
jnzwait2
popbx
popcx
ret
delay2endp;字符串向右移动完毕
end:
codeends
endstart
4.程序运行结果
4.1提示并输入字符串,按回车完毕
输入完没有按回车
4.2彩色闪烁测试
输入完成后,文字会按照“红-黑-紫-白-黑-绿-黑-红-黑-紫-黑〞的顺序变换颜色,实现彩色闪烁。
红色闪烁效果
紫色闪烁效果
白色闪烁效果
绿色闪烁效果
黑色闪烁效果
5.心得体会
微型计算机技术作为我们的主要专业课之一,虽然在大三开学初我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,对我们实际生活没什么用,但在这次课程设计后我改变了对这门课的想法。
虽然只有短短的一个星期,但在这一个星期里收获颇多,通过做闪烁文字的课题,我更加深入的了解了这一个学期所学的微机技术这门课。
稳固了课本上的知识同时也学会了很多课本上没有的。
理论与实际相结合,将书本上的东西运用到实际生活当中,真正的做到了融会贯穿。
记得在一个星期前刚拿到这个课题的时候,感觉很难,毕竟是第一次接触这个设计,对汇编语言不熟悉,掌握的知识完全不能把这个课程设计做好,因此,在开场的几天都是上网找一些相关的知识,学一些相关的函数和功能,比方汇编语音对颜色的设置,以及颜色的切换。
等等,平时在书本里学的都是一条条的指令,并没有真正做到理解,这次做课程设计通过教师和同学的帮助,真正理解了每条指令的含义,同时也知道了只有平时多看程序,多动手调试,才能真正学好这门课。
通过这次课程设计使我对汇编语言有了更加深入的学习,通过几天的设计,我掌握了DOIS和BOIS各个功能调用的同时,还对子程序有了更深的理解。
通过这次设计我还对计算机产生了浓厚的兴趣,在学到知识的同时也开阔了我的视野,真是收益匪浅。
我也认识到了汇编语言的精妙,认识了它的重要性,汇编作为一种低级语言,与计算机硬件严密相关,他能解决很多高级语言不能解决的问题,所以掌握汇编语言的设计是非常重要的!
6.参考文献
[1]彭虎等编著.微机原理与接口技术〔第二版〕.:
电子工业,2021
[2]沈美明,温东禅.IBM-PC汇编语句程序设计〔第2版〕.:
清华大学,2001
[3]任向明,卢惠林.汇编语言程序设计实用教程.:
清华大学,2021
[4]马力妮.80x86汇编语言程序设计.:
机械工业,2004
[5]艾德才.Pentium系列微型计算机原理与接口技术.:
高等教育,2000