汇编语言程序设计之根据输入改变屏幕颜色的代码

写在前面

该程序实现了“根据输入改变屏幕颜色”。其实这个程序本身没什么意思,纯粹只是将学习到的知识融合在了一起而已。程序本身过于繁琐了,写得并不是很好。以及这是我汇编实验课程的作业,如果大家有类似作业的话希望不要过度借鉴,本程序仅供参考和学习。

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.流程图

 

总结

到此这篇关于汇编语言中的根据输入改变屏幕颜色的代码的文章就介绍到这了,更多相关汇编语言改变屏幕颜色内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

以上是 汇编语言程序设计之根据输入改变屏幕颜色的代码 的全部内容, 来源链接: utcz.com/z/332336.html

回到顶部