汇编语言程序设计之根据输入改变屏幕颜色的代码
写在前面
该程序实现了“根据输入改变屏幕颜色”。其实这个程序本身没什么意思,纯粹只是将学习到的知识融合在了一起而已。程序本身过于繁琐了,写得并不是很好。以及这是我汇编实验课程的作业,如果大家有类似作业的话希望不要过度借鉴,本程序仅供参考和学习。
1.设计目的
1)体验并了解DOS界面下色彩显示;
2)了解并掌握INT10功能BIOS调用显示屏幕控制。
2.程序功能
①创建小屏;
②提示输入姓名;
③询问背景颜色并修改背景色;
④询问字体颜色并修改字体色;
⑤询问是否闪烁并修改闪烁;
⑥输出姓名及问候语。
3.源代码
stacksegmentstack db64dup(?) stackends datasegment buffdb50,?,50dup(?) nam0db'Whatisyourname?$' bkc0db'Whatisyourbackgroundcolor?$' bkc1db'->(inputRGB:0-7):$' fc0db'Whatisyourfontcolor?$' fc1db'->(inputRGB:0-7):$' tw0db'Doyouliketwinkle?$' tw1db'->(like:1dislike:0):$' hel0db'Hello!$' hel1db'WelcometoMASM!$' arrodb'->$' dataends codesegment assumecs:code,ds:data,ss:stack start:movax,data movds,ax;使ds指向data数据段 movah,6;初始化屏幕 moval,0 movch,0 movcl,0 movdh,24 movdl,79 movbh,7 int10h movbh,00001111b;黑底白字 callscroll callcursor movdx,offsetnam0 movah,9 int21h;输出字符串,提示输入姓名 movbh,10001111b callscroll callcursor movdx,offsetbuff movah,10 int21h;输入字符串至缓冲区 callscroll movbh,00001111b;闪烁黑底白字 callscroll callcursor movdx,offsetbkc0 movah,9 int21h;输出字符串,询问背景色 callscroll callcursor movdx,offsetbkc1 movah,9 int21h;输出字符串,提示输入格式 movbh,10001111b callscroll callcursor movdx,offsetarro movah,9 int21h;输出箭头 movah,1 int21h;输入背景色 subal,30h callscroll movcl,4 shlal,cl movbh,00001000b addbh,al;将bh的4-6位改为输入的背景色 callscroll callcursor movdx,offsetfc0 movah,9 int21h;输出字符串,询问字体色 callscroll callcursor movdx,offsetfc1 movah,9 int21h;输出字符串,提示输入格式 orbh,10000000b callscroll callcursor movdx,offsetarro movah,9 int21h;输出箭头 movah,1 int21h;输入字体色 subal,30h callscroll addbh,al;将bh的0-2位改为输入的字体色 andbh,01111111b callscroll callcursor movdx,offsettw0 movah,9 int21h;输出字符串,询问是否闪烁 callscroll callcursor movdx,offsettw1 movah,9 int21h;输出字符串,提示输入格式 orbh,10000000b callscroll callcursor movdx,offsetarro movah,9 int21h;输出箭头 movah,1 int21h;输入闪烁 subal,30h callscroll cmpal,1 jetwin andbh,01111111b;若闪烁,将bh的7位改为1 jmpa twin:orbh,10000000b;若不闪烁,将bh的7位改为0 a:callscroll callcursormid movdx,offsethel0 movah,9 int21h;输出问候 pushbx callscroll callcursormid movbl,buff+1;将输入的字符数存至bl addbl,2;将bl加2,使之指向最后一个字符的下一个字符 movbh,0;将bh置零 addbx,offsetbuff;将buff的偏移地址加到bx中 movbyteptr[bx],'!';在字符串最后写入'!' addbx,1;将bx加1,使之指向下一个字符 movbyteptr[bx],'$';在字符串最后写入'$' movdx,offsetbuff+2 movah,9 int21h;输出字符串(即所存姓名、'!') popbx callscroll callcursormid movdx,offsethel1 movah,9 int21h;输出字符串,问候 movah,4ch int21h;结束程序 scrollprocnear pushax pushbx pushcx pushdx movah,6 moval,1 movch,8 movcl,30 movdh,16 movdl,60 int10h;下滚一行 popdx popcx popbx popax ret scrollendp cursorprocnear pushax pushbx pushdx movah,2 movdh,16 movdl,30;移动光标 movbh,0 int10h popdx popbx popax ret cursorendp cursormidprocnear pushax pushbx pushdx movah,2 movdh,16 movdl,38;移动光标 movbh,0 int10h popdx popbx popax ret cursormidendp codeends endstart
4.流程图
总结
到此这篇关于汇编语言中的根据输入改变屏幕颜色的代码的文章就介绍到这了,更多相关汇编语言改变屏幕颜色内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。