С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35

Вывод текста без WinAPI

24.12.2017, 13:20. Показов 2089. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Пишу OS на C++. Как мне создать функцию printf() без использования айостримов и т.д.?
Как создать функции ввода?

И все чтобы работало на чистом железе.

Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2017, 13:20
Ответы с готовыми решениями:

Создание окна без WinAPI
Хотелось узнать, как создавать окна без использования WinAPI.

Перетаскивание окна за любую его точку без WinApi
Дело в том, что в апи я 0 даже как вставить туда пару строк я не знаю могу только в VCL Form Application что-то писать подскажите код...

Вывод изображения WinAPI
Здравствуйте! Нужно сделать что-то типа графического редоктора, который накладывает фильтры на изображения. С алгоритмами я знаком, на C#...

23
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
24.12.2017, 13:26
Если на чистом железе (т.е. без операционной системы) - смотри документацию к микроконтролеру, к которому пишешь, какие там регистры отвечают за передачу на дисплей и т.п.
0
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35
24.12.2017, 17:38  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
к микроконтролеру, к которому пишешь

Вы предлагаете написать по отдельности для каждой мамки?! Я вас правильно понял?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
24.12.2017, 17:44
У каждой материнки есть как минимум биос, т.е. тоже изначально заложенная программа, к которой можно было бы как-то сделать вывод. Но в в вашем вопросе было "сделать всё с нуля", значит и сделано будет даже не для отдельной материнской платы, а для отдельной конфигурации оборудования. Если конечно за эту бессмысленную затею таки возьмётесь. Но предлагаю для начала потренироваться "на кошках", т.е. на оценочных платах каких-нибудь микроконтроллеров.
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
26.12.2017, 09:28
Kukushkha, можете ещё здесь спросить: https://www.cyberforum.ru/low-level/
0
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35
26.12.2017, 11:12  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
Но в в вашем вопросе было "сделать всё с нуля"
Дело в том, что в вопросе такого не было.

Цитата Сообщение от TRam_ Посмотреть сообщение
а для отдельной конфигурации оборудования
Вы намекаете на то, что на ASM это будет написать проще?

Ладно! Допустим, я посмотрел документацию к
Цитата Сообщение от TRam_ Посмотреть сообщение
микроконтролеру, к которому пишешь
.
И узнал что за это отвечают регистры AX и AH(Например). Тогда каким кодом мне произвести запись буквы Е в AX и буквы Б AH?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
26.12.2017, 12:31
Цитата Сообщение от Kukushkha Посмотреть сообщение
каким кодом мне произвести запись буквы
В зависимости от кодировки. Например ANSII - совместимых кодировках латинская A записывается в виде числа 0x41

Добавлено через 1 минуту
Цитата Сообщение от Kukushkha Посмотреть сообщение
узнал что за это отвечают регистры AX и AH(Например)
Для отображения нужно разобраться с интерфейсом дисплея. Зная AX и AH сможешь только вычисления проводить, но не вывод на экран.
0
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35
26.12.2017, 16:46  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
Зная AX и AH сможешь только вычисления проводить
Я разве не написал: (Например)?

Цитата Сообщение от TRam_ Посмотреть сообщение
A записывается в виде числа 0x41
Я имею в виду код C++. Какой функцией.
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
26.12.2017, 23:36
Kukushkha, а у вас есть компилятор С++ под вашу ОС?
1
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35
27.12.2017, 12:57  [ТС]
Цитата Сообщение от DobroAlex Посмотреть сообщение
а у вас есть компилятор С++ под вашу ОС?
Что за вопрос?!

Вы имеете ввиду OS которую пишу Я или ту, которая у меня сейчас на компе?
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
27.12.2017, 13:16
Kukushkha, для той, на которую пишите. Это называется "Целевая платформа"
0
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35
27.12.2017, 14:27  [ТС]
Цитата Сообщение от DobroAlex Посмотреть сообщение
на которую пишите
Я пишу не приложение. А OS, которая работает БЕЗ всяких там, целевых платформ.... Опирается только на аппаратуру.

Вы хотите чтобы я искал компилятор C++ для BIOS?
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
27.12.2017, 14:42
Kukushkha, а как вы будете запускать ваш С++ код или готовый исполнимый файл?

Добавлено через 2 минуты
Могу ещё предложить int 09h из старых добрых времён
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
28.12.2017, 07:26
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Цитата Сообщение от DobroAlex Посмотреть сообщение
Могу ещё предложить int 09h из старых добрых времён
Это прерывание DOS'а, ТС же свою ОС пишет, у него нету int XX

На х86 архитектуре видепамять мапится на определенный адрес (на память не скажу, нужно гуглить), соответственно что бы напечатать текст на экран нужно скопировать твой текст в эту память. Можно задавать смещение на экране. Например base_address + 80 выведет тебе текст на второй строчке.
Конечно речь о real mode, если у тебя например protected или любой другой, то фукнция печати должна переводить процессор в real, копировать строку в видеопамять и возвращаться в исходный режим.
0
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35
28.12.2017, 11:17  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
На х86 архитектуре видепамять мапится на определенный адрес (на память не скажу, нужно гуглить), соответственно что бы напечатать текст на экран нужно скопировать твой текст в эту память. Можно задавать смещение на экране. Например base_address + 80 выведет тебе текст на второй строчке.
Конечно речь о real mode, если у тебя например protected или любой другой, то фукнция печати должна переводить процессор в real, копировать строку в видеопамять и возвращаться в исходный режим.
Спасибо! Но я так и не понял какую
C++
1
write("AX", 0x41)
надо прописать чтобы произвести запись в регистр.

Или вы предлагаете написать это на ASM, а потом запускать функции на C++? Если да, то как?

Цитата Сообщение от DobroAlex Посмотреть сообщение
а как вы будете запускать ваш С++ код или готовый исполнимый файл?
А вот этого я не знаю... Может можно как с ассемблером, скомпайлить в bin, а потом через UltraISO образ смонтировать?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
28.12.2017, 14:24
Цитата Сообщение от Kukushkha Посмотреть сообщение
надо прописать чтобы произвести запись в регистр.
Тебе не надо в регистр писать, писать надо в память. В каком режиме процессора работаешь?
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
28.12.2017, 15:56
Kastaneda, прямое отображение в память, сейчас вообще можно так? (Я работал с асмом только в ДОС и не силён в его современных возможностях)
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
28.12.2017, 16:22
Цитата Сообщение от DobroAlex Посмотреть сообщение
Kastaneda, прямое отображение в память, сейчас вообще можно так?
Под DOS'ом можно конечно, там же real mode и (естественно) ring 0.
0
0 / 0 / 0
Регистрация: 16.05.2017
Сообщений: 35
02.01.2018, 15:41  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Тебе не надо в регистр писать, писать надо в память.
Ок. Но все же напишите, как это сделать.

Цитата Сообщение от Kastaneda Посмотреть сообщение
В каком режиме процессора работаешь?
В protected. Если записывать в память, надо сначала переходить в real, писать и обратно?

Не по теме:

Кстати, с новым годом!



Добавлено через 18 часов 21 минуту
Я тут хабр почитал... Узнал про архитектуру и формат ядра.
С архитектурой разобрался, но еще не решил: "экзо" или "гибридное" ядро. А формат, без понятия. Что такое "elf", "a.out", "coff"?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
04.01.2018, 20:17
Лучший ответ Сообщение было отмечено DrOffset как решение

Решение

Цитата Сообщение от Kukushkha Посмотреть сообщение
Что такое "elf", "a.out", "coff"?
Ты где-то далеко от своей ОС Хотя если ты пишешь и постигаешь все с нуля то норм, узнаешь об этом когда дойдешь до исполнения программ.

Цитата Сообщение от Kukushkha Посмотреть сообщение
В protected. Если записывать в память, надо сначала переходить в real, писать и обратно?
Да, либо держать где-то адрес замапленой страницы (если работаешь в protected с включенной страничной адресацией). Короче твоя задача записать текст в определенный физический адрес памяти.

Добавлено через 5 минут
Советую http://wiki.osdev.org/Main_Page тонна полезного материла на эту тему. Скопипастил оттуда много кода в свой древний рабочий проект)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2018, 20:17
Помогаю со студенческими работами здесь

Как создать winform в vs2012(3) быстро и без WinAPI, сохранив возможности С++
Здравствуйте, уважаемые форумчане. Всем откликнувшимся заранее большое спасибо. Вообщем ситуация вот какая. Я занимаюсь разработкой систем...

Вывод текста в WinAPI
Подскажите, пожалуйста, есть ли какие-то стандартные функции для вывода текста по вертикали? или например такой вариант - вывести по...

WinAPI и вывод текста
Очень тупой вопрос - как одной командой напечатать в заданном прямоугольнике "полужирный, курсив, перечеркнуто"? Не ...

Странный вывод текста в WinApi
Всем здравствуйте. У меня такой вопрос. Есть приложение WinApi, которое автоматически создается при создании проекта. Я нажимаю кнопку...

Вывод текста из файла в диалоговое окно winAPI
Доброго времени суток! Прошу помочь, не могу понять как сделать. Программа выводит окно с диалоговым окном,вводя текст в которое,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru