汇编语言程序设计之根据输入改变屏幕颜色的代码
写在前面
该程序实现了“根据输入改变屏幕颜色”。其实这个程序本身没什么意思,纯粹只是将学习到的知识融合在了一起而已。程序本身过于繁琐了,写得并不是很好。以及这是我汇编实验课程的作业,如果大家有类似作业的话希望不要过度借鉴,本程序仅供参考和学习。
1.设计目的
1)体验并了解DOS界面下色彩显示;
2)了解并掌握INT10功能BIOS调用显示屏幕控制。
2.程序功能
①创建小屏;
②提示输入姓名;
③询问背景颜色并修改背景色;
④询问字体颜色并修改字体色;
⑤询问是否闪烁并修改闪烁;
⑥输出姓名及问候语。
3.源代码
stack segment stack db 64 dup (?) stack ends data segment buff db 50,?,50 dup(?) nam0 db 'What is your name ?$' bkc0 db 'What is your background color ?$' bkc1 db '->(input RGB:0-7):$' fc0 db 'What is your font color ?$' fc1 db '->(input RGB:0-7):$' tw0 db 'Do you like twinkle ?$' tw1 db '->(like:1 dislike:0): $' hel0 db 'Hello!$' hel1 db 'Welcome to MASM!$' arro db '->$' data ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax ;使ds指向data数据段 mov ah,6 ;初始化屏幕 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h mov bh,00001111b ;黑底白字 call scroll call cursor mov dx,offset nam0 mov ah,9 int 21h ;输出字符串,提示输入姓名 mov bh,10001111b call scroll call cursor mov dx,offset buff mov ah,10 int 21h ;输入字符串至缓冲区 call scroll mov bh,00001111b ;闪烁黑底白字 call scroll call cursor mov dx,offset bkc0 mov ah,9 int 21h ;输出字符串,询问背景色 call scroll call cursor mov dx,offset bkc1 mov ah,9 int 21h ;输出字符串,提示输入格式 mov bh,10001111b call scroll call cursor mov dx,offset arro mov ah,9 int 21h ;输出箭头 mov ah,1 int 21h ;输入背景色 sub al,30h call scroll mov cl,4 shl al,cl mov bh,00001000b add bh,al ;将bh的4-6位改为输入的背景色 call scroll call cursor mov dx,offset fc0 mov ah,9 int 21h ;输出字符串,询问字体色 call scroll call cursor mov dx,offset fc1 mov ah,9 int 21h ;输出字符串,提示输入格式 or bh,10000000b call scroll call cursor mov dx,offset arro mov ah,9 int 21h ;输出箭头 mov ah,1 int 21h ;输入字体色 sub al,30h call scroll add bh,al ;将bh的0-2位改为输入的字体色 and bh,01111111b call scroll call cursor mov dx,offset tw0 mov ah,9 int 21h ;输出字符串,询问是否闪烁 call scroll call cursor mov dx,offset tw1 mov ah,9 int 21h ;输出字符串,提示输入格式 or bh,10000000b call scroll call cursor mov dx,offset arro mov ah,9 int 21h ;输出箭头 mov ah,1 int 21h ;输入闪烁 sub al,30h call scroll cmp al,1 je twin and bh,01111111b ;若闪烁,将bh的7位改为1 jmp a twin: or bh,10000000b ;若不闪烁,将bh的7位改为0 a: call scroll call cursormid mov dx,offset hel0 mov ah,9 int 21h ;输出问候 push bx call scroll call cursormid mov bl,buff+1 ;将输入的字符数存至bl add bl,2 ;将bl加2,使之指向最后一个字符的下一个字符 mov bh,0 ;将bh置零 add bx,offset buff ;将buff的偏移地址加到bx中 mov byte ptr [bx],'!' ;在字符串最后写入'!' add bx,1 ;将bx加1,使之指向下一个字符 mov byte ptr [bx],'$' ;在字符串最后写入'$' mov dx,offset buff+2 mov ah,9 int 21h ;输出字符串(即所存姓名、'!') pop bx call scroll call cursormid mov dx,offset hel1 mov ah,9 int 21h ;输出字符串,问候 mov ah,4ch int 21h ;结束程序 scroll proc near push ax push bx push cx push dx mov ah,6 mov al,1 mov ch,8 mov cl,30 mov dh,16 mov dl,60 int 10h ;下滚一行 pop dx pop cx pop bx pop ax ret scroll endp cursor proc near push ax push bx push dx mov ah,2 mov dh,16 mov dl,30 ;移动光标 mov bh,0 int 10h pop dx pop bx pop ax ret cursor endp cursormid proc near push ax push bx push dx mov ah,2 mov dh,16 mov dl,38 ;移动光标 mov bh,0 int 10h pop dx pop bx pop ax ret cursormid endp code ends end start
4.流程图
总结
到此这篇关于汇编语言中的根据输入改变屏幕颜色的代码的文章就介绍到这了,更多相关汇编语言改变屏幕颜色内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)