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种默认颜色中有