Professional Professional
Мудрец
(16263)
1 год назад
Если номер цвета не помещается в регистр AL при использовании функции 0Ch, можно воспользоваться другим подходом для задания цвета пикселя в режиме SuperVGA. Вместо использования функции 0Ch, вы можете использовать палитру цветов для установки цветового индекса, который затем будет использоваться для отображения пикселя.
Вот как это можно сделать:
1. Загрузите номер цвета в регистр DX. Если номер цвета не помещается в 8-битный регистр DX, можно воспользоваться 16-битными регистрами DX и AX, чтобы установить цветовой индекс.
Пример:
```
mov dx, 1234h ; Загрузите номер цвета в регистр DX
```
2. Установите индекс цвета, используя функцию 0Ch и регистр DX.
Пример:
```
mov ax, 0C00h ; Функция 0Ch
int 10h ; Вызов прерывания
```
3. Загрузите значение цвета в порт цветового регистра (Color Register Port), чтобы установить соответствующий цвет.
Пример:
```
mov al, 55h ; Загрузите значение цвета
mov dx, 3C8h ; Порт цветового регистра
out dx, al ; Запишите значение цвета в порт
```
Примечание: Вместо значения 55h используйте нужное значение цвета, которое соответствует вашим требованиям.
4. Загрузите индекс цвета в порт индекса цвета (Color Index Port), чтобы установить цвет для заданного индекса.
Пример:
```
mov dx, 3C9h ; Порт индекса цвета
mov al, dl ; Загрузите индекс цвета в AL
out dx, al ; Запишите индекс цвета в порт
```
Примечание: Вы можете использовать другие регистры вместо DX и AL для порта индекса цвета, если это необходимо.
Таким образом, вы можете использовать палитру цветов и регистры для установки цветового индекса и соответствующего значения цвета для задания цвета пикселя в режиме SuperVGA.
Пожалуйста, обратите внимание, что спецификации и детали программирования могут различаться в зависимости от конкретного оборудования и программного обеспечения.
sashaМыслитель (7682)
1 год назад
В режимах SVGA регистры палитры, как правило, не используются. Вообще, работать с SVGA в среде MS-DOS в 2023 году -- полный бред. Там еще будет веселье с адресацией большого видеобуфера SVGA через окно, отведенное в DOS для видеоадаптеров.
mov bx,11Bh
mov ax,4F02h
int 10h
Знаю, что цвет пикселя можно задать функцией 0Ch, но al слишком мелкий, дабы задать цвета с большим номером. Как быть?