Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ассемблер. Как задать цвет пикселя, если номер цвета не помещается в регистр?

Рандом Ученик (140), закрыт 1 год назад
Использую режим SuperVGA:
mov bx,11Bh
mov ax,4F02h
int 10h
Знаю, что цвет пикселя можно задать функцией 0Ch, но al слишком мелкий, дабы задать цвета с большим номером. Как быть?
Лучший ответ
Лайт Ягами Искусственный Интеллект (321639) 1 год назад
Не надо попиксельно рисовать прерываниями, пиши во фреймбуфер
Остальные ответы
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.

Пожалуйста, обратите внимание, что спецификации и детали программирования могут различаться в зависимости от конкретного оборудования и программного обеспечения.
РандомУченик (140) 1 год назад
Спасибо, видимо не там искал)
Рандом, это копипаст с нейросетки еси чо
sashaМыслитель (7682) 1 год назад
В режимах SVGA регистры палитры, как правило, не используются. Вообще, работать с SVGA в среде MS-DOS в 2023 году -- полный бред. Там еще будет веселье с адресацией большого видеобуфера SVGA через окно, отведенное в DOS для видеоадаптеров.
Похожие вопросы