我在低级程序集(16位)编码,我希望用户能够在#34; paint"中更改背景颜色。喜欢节目。我已经拥有了一切像WASD和颜色一样的工作(你将光标位置设置为绿色),空格,代码:
mov ah, 09h
mov bl, 00100101b
mov cx, 1d
int 10h
但是当我想用' x'或者' q'代码:
mov ah, 09h
mov bh, 0
mov bl, 00010000b
mov cx, 1d
int 10h
它将背景颜色更改为蓝色。但它也提出了一个' x'或者是' q'那个街区也是!
如何才能使背景颜色变为蓝色(光标仍为黑色),而不是放置' x'或者是' q' (使用x或q字符)?
答案 0 :(得分:2)
mov ah, 09h
mov bh, 0
mov bl, 00010000b
mov cx, 1d
int 10h
此代码段会将 AL
注册中的任何字符写入屏幕!在文本视频屏幕上,它将显示蓝色背景颜色和黑色前景色。
为了只改变背景颜色,您需要先阅读屏幕上的内容。为此目的使用BIOS功能08h:
mov bh, 0 ;Display page
mov ah, 08h
int 10h ;Gives character in AL (keep it!), and attribute in AH
mov bl, 00010000b ;Blue background
and ah, 15 ;Keep existing foreground color in low nibble
or bl, ah ;Combine in new attribute byte
mov cx, 1
mov ah, 09h
int 10h