如何更改程序集中当前光标位置的背景颜色

时间:2017-09-08 18:44:10

标签: assembly colors background cursor

我在低级程序集(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字符)?

1 个答案:

答案 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