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

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

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

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