|
7 / 6 / 3
Регистрация: 30.03.2020
Сообщений: 123
|
|||||||||||
NASM [Linux + GRUB] Графика в защищённом режиме08.08.2020, 14:01. Показов 3096. Ответов 12
Метки нет (Все метки)
Всем HI, я написал минимальное ядро(или ОС, я хз как правильно, в разных источниках то так, то так), и когда я захожу туда, я могу например в видеопамять по адресу 0xB8000 записывать разные данные, напр. "Hello, world!". Но как можно с графикой работать? Тип видеопамять она в 4000 байт - 80х25х2, каждый символ он по два байта - ASCII-код и свойства. А как мне, например, пиксель под номером NxM раскрасить в зелёный цвет? Или там линию провести? Или квадрат нарисовать? Ну и всё в таком духе. А то я что-то не понимаю.
Добавлено через 1 минуту Кому интересно, вот код: kernel.asm
0
|
|||||||||||
| 08.08.2020, 14:01 | |
|
Ответы с готовыми решениями:
12
Прерывания в защищенном режиме Вывод сообщения в защищенном режиме |
|
Модератор
|
||||||||||||||||||||||||||
| 08.08.2020, 14:32 | ||||||||||||||||||||||||||
|
В разных графических режимах видеопамять по разному организована - т.е. разные способы изменить цвет точки.
В книге Касаткин А.И. Управление ресурсами. приведены следующие варианты Для видеорежимов 4 и 5
Режимы VESA имеют большие размеры экрана, которые не умещаются в один сегмент памяти 16-разрядного режима. Поэтому с ними работают или средствами VESA BIOS через "окно" или в unreal режиме или в защищённом.
0
|
||||||||||||||||||||||||||
|
7 / 6 / 3
Регистрация: 30.03.2020
Сообщений: 123
|
||
| 08.08.2020, 14:38 [ТС] | ||
|
Я хочу использовать 13. Вопрос: Что это за запись:
Первый раз вижу. Догадываюсь, что offset это регистр es чтоли? Что вообще эта функция делает и, можно ли её на ассемблерее сделать, потому-что если используется регистр(да и функция короткая), не проще было бы на NASM-е реализовать? Добавлено через 3 минуты Я кстати что-то не понимаю - зачем там вообще es используется? можете привести ассемблерный аналог, пожалуйста
0
|
||
|
Модератор
|
|||||||||||
| 08.08.2020, 14:45 | |||||||||||
|
Весь тот код для DOS и 16 разрядный режим. Т.е. напрямую он не подойдёт, т.к. ваш код, похоже, работает в защищённом режиме. Т.е. всё это просто иллюстрация.
Исходя из общих представлений, в строке
es:offsetНе очень понимаю, как у вас устроена память, но похоже, что переводится это
0
|
|||||||||||
|
7 / 6 / 3
Регистрация: 30.03.2020
Сообщений: 123
|
||||||||||||||||
| 08.08.2020, 14:51 [ТС] | ||||||||||||||||
|
Спасибо, сейчас попробую
Добавлено через 1 минуту P.S. Переключится это же
Добавлено через 2 минуты Не работает( При заходе сразу же перезагрузка начинается Добавлено через 29 секунд
0
|
||||||||||||||||
|
Модератор
|
|
| 08.08.2020, 14:53 | |
|
Вряд ли. Вы же в защищённом режиме - там процедуры BIOS уже не работают.
Ищите, как переключать напрямую, программируя CRTC. Поищите про VESA режимы. Они работают с защищённым режимом через BIOS, только там нужны дополнительные манипуляции по поиску "точки входа". Добавлено через 1 минуту Похоже, дальше я вам уже не помогу - не интересовался системным программированием в защищённом режиме.
1
|
|
|
7 / 6 / 3
Регистрация: 30.03.2020
Сообщений: 123
|
|
| 08.08.2020, 14:57 [ТС] | |
|
И на том спасибо
0
|
|
|
Модератор
|
|
| 08.08.2020, 18:32 | |
|
По ссылке тезисами поясняются графические возможности разработчика, "попавшего" в защищённый режим
https://wiki.osdev.org/Drawing_In_Protected_Mode https://files.osdev.org/mirror... /index.htm Там же приводится пример кода на C по переключению VGA видеорежимов при помощи программирования CRTC https://files.osdev.org/mirror... cs/modes.c
0
|
|
| 10.08.2020, 12:22 | |
|
Не по теме: Tapacuk, Вы на виртуальной машине экспериментируете или на ноутбуке с FreeDOS ?
0
|
|
|
7 / 6 / 3
Регистрация: 30.03.2020
Сообщений: 123
|
|
| 20.08.2020, 15:11 [ТС] | |
|
Да, задавал, но как я понял интеррупты у меня не работают (в защищёнке) так что я не знаю как рисовать - может другой ответ найдётся
0
|
|
|
7 / 6 / 3
Регистрация: 30.03.2020
Сообщений: 123
|
|
| 21.08.2020, 12:04 [ТС] | |
|
На виртуалке
0
|
|
|
Модератор
|
|||||||
| 24.08.2020, 06:16 | |||||||
|
Например, в гипотетическом режиме 1200x768x32 на каком-нибудь устройстве фреймбуфер мог бы быть устроен, например, так:
Мы можем просто знать, где распологается видеобуфер в физическом адресном пространстве конкретного устройства, и как он устроен. Мы можем получить эту информацию от firmware, напр. через функции GOP от UEFI, или функции VESA в режиме CSM или BIOS без UEFI. Можно, наконец, изучить существующий драйвер, и использовать в своих целях.
0
|
|||||||
|
Модератор
|
|
| 25.03.2021, 11:29 | |
|
Старые примеры рисования линии по точкам в multiboot-коде, запущенном из GRUB или другого совместимого загрузчика есть в документации GNU GRUB(2)
https://www.gnu.org/software/g... 002ec.html https://www.gnu.org/software/g... 002ec.html Режим должен быть установлен самим загрузчиком.
0
|
|
| 25.03.2021, 11:29 | |
|
Помогаю со студенческими работами здесь
13
Программирование видеокарты в защищённом режиме Не обрабатываются прерывания в защищенном режиме Особые случаи в защищённом режиме Размер программы в защищенном режиме Работа с файлами в защищенном режиме Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 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. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|