1、用汇编语言实现闪烁文字1.设计任务用汇编语言实现闪烁文字的效果2.原理2.1题目功能分析1屏幕提示输入字符串;2输入完成后,字符动画显示颜色变化;3单击“Q或“q键退出程序。2.2算法说明1屏幕提示输入字符串主要运用中断INT 21H的0A H功能;2颜色变化那么通过INT 10H的09H功能循环调用实现;3退出功能通过将输入Q和q与其ASCII比拟,跳转到退出程序;而退出程序主要通过INT 21H的4C H功能实现。 2.3.流程图 N N Y图1字符串闪烁流程图3.程序说明3.1提示输入字符串显示功能实现屏幕提示输入字符串主要运用中断INT 21H的0A H功能,输入后回车那么完成字符串在
2、特定位置的显示。lea dx,buf mov ah,0ah int 21h mov bx,2 ; mov di,0B1: mov al,bufbxcmpal,13 ;是否是回车?je AG1mov buff1di,al inc bx inc di jmp B1AG1: mov ah,0 mov al,2 int 10h;OTHER: mov cx,0ffffh;AG: mov dh,7 ;hang mov dl,35 ;lie mov ah,2 mov bh,0 ; int 10h ; lea dx,buff1 mov ah,9 int 21h ; mov dh,7 mov dl,35 mov
3、 ah,2 mov bh,0 int 10h ; lea dx,buff2 mov ah,9 int 21h; sub cx,1 ; jnz AG ;3.2颜色变化功能实现 颜色变化功能实现相当于对字符串属性定义,表现出颜色差异,然后循环调用并插入延时。以下程序效果是三种颜色闪烁,其中aaa1表示白色,aaa2表示黑色,aaa3表示绿色,aaa4表示红色,aaa5表示紫色。往复调用彩色和黑色,在各种颜色变换之间插入黑色即可实现彩色连续闪烁的效果。具体程序如下:shanshuo: ; call aaa1 ;white call delay1 call aaa2;black call delay1
4、 call aaa3 ;white call delay1 call aaa2;black call delay1 call aaa4 ;white call delay1 call aaa2;black call delay1 call aaa5 ;white call delay1 call aaa2;black call delay1 MOV AH,08h;Q,q键退出 INT 21H cmp AL,Q je exit cmp AL,q je exit jmp shanshuo3.3退出功能实现 退出功能通过将输入Q和q与其ASCII比拟,跳转到退出程序; mov ah,08h;q键退出
5、int 21H cmp AL,Q je exit cmp AL,qje exit exit: mov ah,4chint 21h 3.4完整程序data segmentbuff1 db $ buff2 db $buf db 100 dup($)buff3 db please input a string !,13,10,$buff4 db Press Q or q to exit!,13,10,$data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax lea dx,buff3;显示提示信息 mov ah,0
6、9h int 21h lea dx,buff4;显示提示信息 mov ah,09hint 21h lea dx,buf mov ah,0ah int 21h mov bx,2 ;多字符输入,回车完毕,有效内容自第三个始。 mov di,0B1: mov al,bufbx cmp al,13 ;是否是回车? je AG1 mov buff1di,al inc bx inc di jmp B1AG1: mov ah,0 mov al,2 int 10h;黑白文本OTHER: mov cx,0ffffh; jmp shansuo shansuo: ; call aaa1 ;white call de
7、lay1 call aaa2;black call delay1 call aaa3 ;white call delay1 call aaa2;black call delay1 call aaa4 ;white call delay1 call aaa2;black call delay1 call aaa5 ;white call delay1 call aaa2;black call delay1 MOV AH,08h;q键退出 INT 21H cmp AL,Q je exit cmp AL,qje exit mp shansuoexit: mov ah,4ch int 21h aaa1
8、 proc near ;white MOV SI,OFFSET buff1 mov di,0 mov dl,20aa1: mov dh,8 ;dh hang dl lie;行 列 inc dl mov ah,2 int 10h ;置光标位置 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,07h ;color mov cx,01 ;字符重复一次 int 10h cmp di,0ch aa1 retaaa1 endpaaa2 proc near ;blackMOV SI,OFFSET buff1mov di,0mov dl
9、,20aa2: mov dh,8 ;dh hang dl lieinc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,siinc simov bh,0 ;显示页mov bl,00h ;colormov cx,01 ;字符重复一次int 10hcmp di,0ch aa2retaaa2 endpaaa3 proc near ;greenMOV SI,OFFSET buff1mov di,0mov dl,20aa3: mov dh,8 ;dh hang dl lieinc dlmov ah,2int 10h ;置光标位置mov ah,09
10、;9号功能inc dimov al,siinc simov bh,0 ;显示页mov bl,02h ;colormov cx,01 ;字符重复一次int 10hcmp di,0ch aa3retaaa3 endp ;颜色闪烁aaa4 proc near ;redMOV SI,OFFSET buff1mov di,0mov dl,20aa4: mov dh,8 ;dh hang dl lieinc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,siinc simov bh,0 ;显示页mov bl,0ch ;colormov cx,01
11、;字符重复一次int 10hcmp di,0ch aa4retaaa4 endp ;颜色闪烁aaa5 proc near ;propleMOV SI,OFFSET buff1mov di,0mov dl,20aa5: mov dh,8 ;dh hang dl lieinc dlmov ah,2int 10h ;置光标位置mov ah,09 ;9号功能inc dimov al,siinc simov bh,0 ;显示页mov bl,0dh ;colormov cx,01 ;字符重复一次int 10hcmp di,0ch aa5retaaa5 endp ;颜色闪烁delay1 proc nearp
12、ush cxpush bxmov bx,1fffhwait4: mov cx,0ffffhwait5: loop wait5dec bxjnz wait4pop bxpop cxretdelay1 endpdelay2 proc nearpush cxpush bxmov bx,0ffhwait2: mov cx,0ffffhwait3: loop wait3dec bxjnz wait2pop bxpop cxretdelay2 endp ;字符串向右移动完毕end:code endsend start4.程序运行结果4.1提示并输入字符串,按回车完毕输入完没有按回车4.2彩色闪烁测试输入完
13、成后,文字会按照“红-黑-紫-白-黑-绿-黑-红-黑-紫-黑的顺序变换颜色,实现彩色闪烁。红色闪烁效果紫色闪烁效果白色闪烁效果绿色闪烁效果黑色闪烁效果5.心得体会微型计算机技术作为我们的主要专业课之一, 虽然在大三开学初我对这门课并没有什么兴趣, 觉得那些程序枯燥乏味,对我们实际生活没什么用,但在这次课程设计后我改变了对这门课的想法。虽然只有短短的一个星期,但在这一个星期里收获颇多,通过做闪烁文字的课题,我更加深入的了解了这一个学期所学的微机技术这门课。稳固了课本上的知识同时也学会了很多课本上没有的。理论与实际相结合,将书本上的东西运用到实际生活当中,真正的做到了融会贯穿。记得在一个星期前刚拿
14、到这个课题的时候,感觉很难,毕竟是第一次接触这个设计,对汇编语言不熟悉,掌握的知识完全不能把这个课程设计做好,因此,在开场的几天都是上网找一些相关的知识,学一些相关的函数和功能,比方汇编语音对颜色的设置,以及颜色的切换。等等,平时在书本里学的都是一条条的指令,并没有真正做到理解,这次做课程设计通过教师和同学的帮助,真正理解了每条指令的含义,同时也知道了只有平时多看程序,多动手调试,才能真正学好这门课。通过这次课程设计使我对汇编语言有了更加深入的学习,通过几天的设计,我掌握了DOIS和BOIS各个功能调用的同时,还对子程序有了更深的理解。通过这次设计我还对计算机产生了浓厚的兴趣,在学到知识的同时也开阔了我的视野,真是收益匪浅。我也认识到了汇编语言的精妙,认识了它的重要性,汇编作为一种低级语言,与计算机硬件严密相关,他能解决很多高级语言不能解决的问题,所以掌握汇编语言的设计是非常重要的!6.参考文献1 彭虎等编著微机原理与接口技术第二版:电子工业,20212 沈美明,温东禅IBM-PC汇编语句程序设计第2版:清华大学,20013 任向明,卢惠林汇编语言程序设计实用教程:清华大学,20214 马力妮80x86汇编语言程序设计:机械工业,20045 艾德才Pentium系列微型计算机原理与接口技术:高等教育,2000
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1