Изменение цвета выводимого сообщения в консоли [C+asm] - C (СИ)
Формулировка задачи:
Всем доброго времени суток!
Есть задачка, где нужно вывести определённое сообщение с определёнными атрибутами (цвет символов/цвет символов+цвет фона).
Я посимвольно инициализировал строки, и решил циклом к каждому символу применить с помощью ассемблера нужные атрибуты.
Проблема: Не знаю, как применить атрибуты.
Вот мой код:
То есть, вопрос таков: как с помощью ассемблерной вставки изменить цвет букв в консоли?
Заранее спасибо за помощь..)
Вот это дело выводит примерно по центру экрана синюю полоску с красными точками внутри. Подскажите пожалуйста, как можно эту полосочку переместить туда, где находится моя строка?
#include <conio.h> #include <stdio.h> void main() { char string_1[12]={'B','l','a','c','k','_','M','e','t','a','l','\0'}; char string_2[11]={'D','o','o','m','_','M','e','t','a','l','\0'}; char string_3[12]={'D','r','o','n','e','_','M','e','t','a','l','\0'}; clrscr(); printf("Press any key to continue after each string.."); getch(); clrscr(); asm mov ax,3 asm int 0x10 for (char i=0;i<12;i++) { //тут должна быть вставка, которая изменяет цвет //по-сути, в регистр (например, в ax) нужно занести i, но в таком случае компилятор говорит //"invalid combination of opcode and operands" putchar(string_1[i]); } getch(); clrscr(); for (char j=0;j<11;j++) { putchar(string_2[j]); } getch(); clrscr(); for (char q=0;q<12;q++) { putchar(string_3[q]); } getch(); clrscr(); printf("Done!"); getch(); }
Есть прогресс)
asm push 0B800h asm pop es asm mov si, offset string_1 asm mov ah,094h asm lodsb asm stosw
Решение задачи: «Изменение цвета выводимого сообщения в консоли [C+asm]»
textual
Листинг программы
#include <iostream> int main() { std::cout << "\033[031m A line of text in red\n \ \033[032m A line of text in green\n \ \033[033m A line of text in brown\n \ \033[034m A line of text in blue\n \ \033[035m A line of text in magenta\n \ \033[036m A line of text in cyan\n \ \033[037m A line of text in white\n \ \033[0m" << std::endl; }
Объяснение кода листинга программы
- Включаем заголовочный файл iostream для использования функций вывода и ввода.
- Задаем цвет текста в консоли как красный, используя ASCII-код управления цветом текста.
- Выводим первую строку текста
A line of text in red
. - Задаем цвет текста в консоли как зеленый, используя ASCII-код управления цветом текста.
- Выводим вторую строку текста
A line of text in green
. - Задаем цвет текста в консоли как коричневый, используя ASCII-код управления цветом текста.
- Выводим третью строку текста
A line of text in brown
. - Задаем цвет текста в консоли как синий, используя ASCII-код управления цветом текста.
- Выводим четвертую строку текста
A line of text in blue
. - Задаем цвет текста в консоли как пурпурный, используя ASCII-код управления цветом текста.
- Выводим пятую строку текста
A line of text in magenta
. - Задаем цвет текста в консоли как зеленый, используя ASCII-код управления цветом текста.
- Выводим шестую строку текста
A line of text in cyan
. - Задаем цвет текста в консоли как белый, используя ASCII-код управления цветом текста.
- Выводим седьмую строку текста
A line of text in white
. - Задаем цвет текста в консоли по умолчанию, используя ASCII-код управления цветом текста.
- Выводим восьмую строку текста
A line of text in default color
. - Завершаем функцию main().
- Конец кода.
- В консоли выводится последовательность строк текста, каждая из которых имеет свой уникальный цвет.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д