![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.01.2023
Сообщений: 19
|
![]()
Вот какое дело: имеется загрузчик на asm кто любопытный вот код:
Код:
Последний раз редактировалось Окоза-Окоза; 10.01.2023 в 09:30. |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Дело в том, что вы написали первичный загрузчик и сейчас кроме прерываний BIOS вам ничего не доступно.
По сути ваша программа сейчас ограничена 1Мб памяти в 16-битном реальном режиме работы процессора. Чтобы перейти к ядру написанному на другом языке вам надо: 1) Определить блок в оперативной памяти куда будет загружаться ядро 2) Оформить ядро на работу в этом блоке оперативной памяти 3) Считать с диска сектора, содержащие бинарный образ ядра в нужное место оперативной памяти 4) Осуществить дальний переход на стартовый адрес в этом ядре (который может быть указан в заголовке ядра или вычислен загрузчиком) Код:
Последний раз редактировалось macomics; 09.01.2023 в 13:54. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 09.01.2023
Сообщений: 19
|
![]()
Только где более подробную инфу брать?
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 09.01.2023
Сообщений: 19
|
![]()
И как загрузить кернель в ОЗУ по адресу? и тем более на C\C#\C++? Скорее всего будут asmовые вставки.
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Как-то так
Код:
Последний раз редактировалось macomics; 10.01.2023 в 12:52. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 09.01.2023
Сообщений: 19
|
![]()
А как тогда из кернеля на C сделать com? это просто приложение будет которое играет роль кернеля?
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 09.01.2023
Сообщений: 19
|
![]() |
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Чтобы было больше, тогда надо загрузить большее чем 1 число секторов. Я показал как сделать самое сложное для вас. Цикл с загрузкой секторов напишите сами (надеюсь). И еще кое-что. Настройка процессора для работы с COM программой выглядит чуть сложнее. Точнее вот так
Код:
Последний раз редактировалось macomics; 10.01.2023 в 15:25. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 09.01.2023
Сообщений: 19
|
![]()
Накуралесил. так сойдет? в архиве только код загрузчика.
|
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Так вы на FASM пишите или на NASM?
ADD: Выглядит работоспособным, но есть замечания. Стек слишком маленький и попадает на загруженный код. Его стоит переместить в конец сегмента (mov sp, 0xFFFE) Последний раз редактировалось macomics; 10.01.2023 в 15:48. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ядро программы С++ | kineziz | Общие вопросы C/C++ | 3 | 06.06.2012 23:06 |
Чем отличаеться fasm от fasm editor&? | TotKtoNado | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 07.11.2011 17:00 |
простейшее ядро | lem | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 28.09.2011 16:37 |
Стек и bootloader | kuraga1991 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 29.12.2010 22:17 |
Ядро | Adblock | PHP | 13 | 22.06.2010 21:16 |