Использование цветов RGB в ассемблере - PullRequest
0 голосов
/ 24 сентября 2011

Я строю пиксель на экране из следующего кода, используя язык ассемблера процессора x86 в C ++.Я не хочу использовать какую-либо функцию или метод из C ++, так как я использую этот код для программы загрузчика.вот код:

/**********************************
 * Mainvainsoft 2011.             *
 * Writen By: Farid-ur-Rahman     *
 * On: 24 Sep At: 1:34 AM.        *
 **********************************/
 #include <conio.h>
 void main ()
 {
 // Setting Video mode to 256 colours at 320 X 200
 _asm {
 mov ah , 0x00 // Setting Video mode or Clear Screen
 mov al , 0x13 // Setting Video mode to 256 Color Mode
 int        0x10 // Call the Registor

 mov ah , 0x0c // Plot the Pixel
 mov al , 4    // Color
 mov cx , 160  // X-Axis
 mov dx , 100  // Y-Axis
 int        0x10 // Call the Registor
}
getch();     // Wait for the key press
}

Я хочу использовать цвета RGB для отображения на пикселе.

Ответы [ 2 ]

4 голосов
/ 24 сентября 2011

В режиме 13h используется палитра с 256 18-битными RGB (по 6 бит на каждую) записями.Таким образом, вы можете установить, например, для записи 4 желаемый цвет RGB и построить пиксель, как вы делаете с цветом 4.

См. здесь для примера того, как установить палитру.запись.После настройки режима видео вы можете сделать что-то вроде:

// Set entry 4
mov dx, 0x3c8
mov al, 4
out dx, al

inc dx
mov al, Red 
out dx, al
mov al, Green
out dx, al
mov al, Blue
out dx, al

// draw pixel
1 голос
/ 24 сентября 2011

В используемом вами режиме видео, Режим VGA 0x13 , каждый байт буфера кадров указывает на палитру.Поэтому, если у вас есть 24 бита информации о цветах RGB, вы не можете записать ее непосредственно в пиксель, поскольку пиксели просто содержат индексы палитры.

Вы, конечно, можете квантовать ваших цветов впалитра, но это может быть довольно сложно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...