Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何在汇编语言中获得其他颜色组合?_Assembly_Colors_Inline Assembly_Tasm_Dosbox - Fatal编程技术网

Assembly 如何在汇编语言中获得其他颜色组合?

Assembly 如何在汇编语言中获得其他颜色组合?,assembly,colors,inline-assembly,tasm,dosbox,Assembly,Colors,Inline Assembly,Tasm,Dosbox,早上好/晚上好 我一直在想如何在汇编语言中获得靛蓝颜色 以下是我的示例代码: mov ah, 06h mov bh, 10h ; 8.Blue mov ch, 13 mov cl, 0 mov dh, 16 mov dl, 11 int 10h 提前谢谢 TL;博士 用这个。 很抱歉回答这么长,我今天晚上真的很无聊 不幸的是,在最初的CGA调色板中没有像靛蓝这样的颜色,它是在硬件中固定的,因此不能进行定制 CGA有4位颜色深度,即所谓的IRGB格式:第2位为红色,第1位为绿色,第0位为蓝色,

早上好/晚上好

我一直在想如何在汇编语言中获得靛蓝颜色

以下是我的示例代码:

mov ah, 06h
mov bh, 10h ; 8.Blue
mov ch, 13
mov cl, 0
mov dh, 16
mov dl, 11
int 10h
提前谢谢

TL;博士 用这个。
很抱歉回答这么长,我今天晚上真的很无聊


不幸的是,在最初的CGA调色板中没有像靛蓝这样的颜色,它是在硬件中固定的,因此不能进行定制

CGA有4位颜色深度,即所谓的IRGB格式:第2位为红色,第1位为绿色,第0位为蓝色,第3位为强度。这些位驱动显示适配器的输出连接器中的等效信号,因此调色板实际上不在那里,将它们转换为模拟电压信号的负担留给监视器

然而,您可能并没有真正使用真正的IBM CGA显示适配器,而是使用了一种合理的最新时代的视频卡。
CGA之后是EGA,它引入了索引颜色系统:您有16个†数字,对于每个数字,您可以从总共64个数字中关联您选择的颜色。为像素/字符着色时,使用16个数字中的一个,称为索引

为了向后兼容,与每个索引关联的颜色与CGA适配器为所述索引显示的颜色相同

在EGA成为原始VGA之后,原始VGA仍然很重要,因为它仍然受到所有现代视频卡的支持(通过仿真),并且是最后一个真正的硬件接口标准1。
这是您将用于编程的模式。

VGA在它的时代,通过将RGB模式扩展到每个通道6位,或总共262.144种可能的颜色,这个数字更好地称为218,平息了对更多颜色的追求

在某些模式下,原始VGA还将索引空间(数字数量)扩大到256个索引

您想知道如何获得Indigo on VGA显示适配器吗 在VGA的256种默认颜色中,似乎没有靛蓝,颜色#34、#56、#57是一种非常接近的颜色,但不是真正的靛蓝(请参阅)

但是你现在知道VGA有很多颜色,不仅仅是256种预设颜色
您可以选取靛蓝的最佳近似值并将其指定给索引

1.寻找最佳逼近 根据#4B0082,靛蓝是红色的4Bh成分(最亮红色的29,41%),蓝色的00h成分(最亮绿色的0%),蓝色的82h成分(最亮蓝色的50,98%)

一种颜色的VGA最大值是26-1或63,因此使用这个新的最大值将这个百分比转换成数字,我们就得到了RGB三元组(12h,00h,20h)

2.将三元组分配给索引 您可以让BIOS执行此操作,只需非常简单的操作。
你可以自己做,这里有一个更有用的

将索引号(以字节形式)写入端口3c8h,然后连续三次写入端口3c9h,分别设置红色、绿色和蓝色分量。写入的最后三个字节被屏蔽为其低位六位

例如,您可以使用此代码更改默认的红色(12或0ch)

;Using the BIOS                               ;Without BIOS
mov ax, 1010h                                 mov dx, 3c8h  ;Color write port
mov bx, 0ch      ;0ch is Red                  mov al, 0ch   ;Red index
mov dh, 12h      ;Red component               out dx, al   
mov cx, 20h      ;Green & Blue components     inc dl        ;Data port
int 10h                                       mov al, 0ch   ;Red component
                                              out dx, al
                                              xor al, al    ;Green component
                                              out dx, al
                                              mov al, 20h   ;Blue component
                                              out dx, al
当心
在模式13h中,您可以直接使用索引号,而在文本模式中,这可能不正确。字符属性可能无法直接映射到索引。在我的旧视频卡中,我看到前8个属性(从0h到07h)被映射到它们相同的索引,但是从08h到0fh的属性映射到索引空间中间的8个索引的连续块。 我不知道您正在使用的中断服务,所以我不能真正告诉您将如何使用这些索引,更具体地说


†这是CGA的遗产。
‡EGA使用RGB颜色模式,每个通道2位;总颜色深度为6位,或26种颜色
1 VESA试图推广标准化的软件界面,但随后视频卡变得越来越复杂,彼此之间也越来越有竞争力。

TL;博士 用这个。
很抱歉回答这么长,我今天晚上真的很无聊


不幸的是,在最初的CGA调色板中没有像靛蓝这样的颜色,它是在硬件中固定的,因此不能进行定制

CGA有4位颜色深度,即所谓的IRGB格式:第2位为红色,第1位为绿色,第0位为蓝色,第3位为强度。这些位驱动显示适配器的输出连接器中的等效信号,因此调色板实际上不在那里,将它们转换为模拟电压信号的负担留给监视器

然而,您可能并没有真正使用真正的IBM CGA显示适配器,而是使用了一种合理的最新时代的视频卡。
CGA之后是EGA,它引入了索引颜色系统:您有16个†数字,对于每个数字,您可以从总共64个数字中关联您选择的颜色。为像素/字符着色时,使用16个数字中的一个,称为索引

为了向后兼容,与每个索引关联的颜色与CGA适配器为所述索引显示的颜色相同

在EGA成为原始VGA之后,原始VGA仍然很重要,因为它仍然受到所有现代视频卡的支持(通过仿真),并且是最后一个真正的硬件接口标准1。
这是您将用于编程的模式。

VGA在它的时代,通过将RGB模式扩展到每个通道6位,或总共262.144种可能的颜色,这个数字更好地称为218,平息了对更多颜色的追求

在某些模式下,原始VGA还将索引空间(数字数量)扩大到256个索引

您想知道如何获得Indigo on VGA显示适配器吗 VGA的256种默认颜色中有