14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
||||||||||||||||
Пробую написать загрузчик для IO.SYS06.06.2023, 00:45. Показов 2658. Ответов 23
Метки нет Все метки)
(
Нашел исходный код MSDOS, пробую написать загрузчик для IO.SYS. В исходном коде IO.SYS загружается в сегмент
0
|
06.06.2023, 00:45 | |
Ответы с готовыми решениями:
23
nvlddmkm.sys, dxgkrnl.sys, dxgmms1.sys, ntoskrnl.exe, watchdog.sys Как заменить загрузчик Windows Boot Manager на загрузчик Grub 2 FileManager или загрузчик Grub4Dos ? Подскажите, как написать загрузчик для запакованного архива mods.pkg ? |
Эксперт Hardware
![]() ![]() |
||
06.06.2023, 08:02 | ||
И зачем вам вообще вычислять абсолютный (физический, линейный) адрес? Здесь должен фигурировать только сегментный, т.к. переход в защищённый режим ЦП с плоской моделью памяти отсутствует. Но если сильно нужно, то формула получения физ.адреса из сегментного такая: PhyAddr = (Seg * 10h) + Offset
2
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
|||||||||||
06.06.2023, 09:04 [ТС] | |||||||||||
Да, мне нужен адрес в формате XXXX:XXXX, т.е. эта строка из MASM
1
|
Модератор
|
||||||
06.06.2023, 11:15 | ||||||
В оригинале, скорее всего, было что-то вроде
Откуда программа инициализации IO.SYS узнает, с какого устройства читать MSDOS.SYS и всё остальное?
2
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
|||||||||||||||||||||
06.06.2023, 12:20 [ТС] | |||||||||||||||||||||
Смотрю последние строчки исходного кода boot sector MSDOS
0
|
Модератор
|
||
06.06.2023, 12:55 | ||
Можете почитать ещё главу Энциклопедии MS-DOS
https://www.pcjs.org/documents... /section2/ о загрузке и инициализации компонентов этой системы. (Поиском Getting MS-DOS up to перейдёте к пункту Loading MS-DOS Добавлено через 3 минуты 7016 должно попасть в CS.
2
|
Эксперт Hardware
![]() ![]() |
|
06.06.2023, 12:58 | |
kurlyak, загрузись под чистым досом,
и просмотри состояние памяти командой mem/d
2
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
|||||||
06.06.2023, 15:05 [ТС] | |||||||
Все таки мне не понятно IO.SYS грузиться по адресу 70h:700h или грузиться по адресу 70h:0000h?
Добавлено через 1 час 2 минуты Как на NASM сделать прыжок по адресу
там же в начале памяти расположена системная информация, почему прыжок делается на 70h?
0
|
Модератор
|
||||||
06.06.2023, 16:03 | ||||||
kurlyak, пока машина в режиме совмеcтимости с 8086, 7016:0 и 0:70016 суть логические адреса начала одной и той же области памяти.
А выполнение программы инициализации IO.SYS начинается при CS=7016 и IP=0
1
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
|||||||||||
06.06.2023, 17:04 [ТС] | |||||||||||
А еще вопрос, почему у меня в исх.коде MSDOS место куда биос компьютера ложит загрузчик такое
0
|
Эксперт Hardware
![]() ![]() |
||||||||||||||||||
06.06.2023, 17:10 | ||||||||||||||||||
Если коротко, то после сброса "Reset", регистры CS:IP аппаратно получают значения F000:FFF0 . Чипсеты для x86 в сегмент F000h проецируют содержимое ROM-BIOS так, что по адресу F000:FFF0 магическим образом оказывается инструкция JMP FAR, которая отправляет ЦП на исполнение процедуры POST, и заполнение структур биоса в памяти (IVT, BDA, и прочие). Если запросить у отладчика данный адрес, можно увидеть код перехода, и далее, что там лежит:
0000:7C00 , в надежде обнаружить там уже загрузчик ОС. Таким образом, по данному адресу нет никакого кода биос, а регистры CS:IP на этот момент имеют значения 0000:7C00 . Вот пример загрузчика оси на FASM, синтаксис которого почти не отличается от NASM:Кликните здесь для просмотра всего текста
2
|
Модератор
|
|||
06.06.2023, 17:35 | |||
https://www.cyberforum.ru/post13450958.html форумного Учебника. Добавлено через 1 минуту 70h:0 , она же 0:700h
1
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
||||||
06.06.2023, 17:48 [ТС] | ||||||
Вы бы не могли мне точно указать, какие должны быть регистры ES:BX для загрузки IO.SYS в память и адрес куда делать jmp?
Добавлено через 10 минут Я написал такой код:
0
|
Модератор
|
|
06.06.2023, 18:43 | |
0
|
Модератор
|
||||||||||||||||||
06.06.2023, 19:40 | ||||||||||||||||||
Ср.: nasm y.asm -lconout$
EA 00 00 70 00 E9 68 00 jmp 112:0 делает
jmp 70h увеличивает IP на число, содержащееся в инструкции.Ассемблер и др. утилиты подбирают это число так, чтобы в итоге получилось 7016
0
|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
||||||
07.06.2023, 01:03 [ТС] | ||||||
Есть в исходном коде MSDOS такое
0
|
07.06.2023, 05:26 | ||||||||||||
0
|
07.06.2023, 05:26 | |
Помогаю со студенческими работами здесь
20
Пробую написать простой сервер на Linux. Не запускается MSI GTX 970 4GD5T OC Nvlddmkm.sys, dxgkrnl.sys и dxgmms1.sys Что такое драйвера atapi.sys , pciide.sys и pciidex.sys Железо или софт?, nvmp.sys, ndis.sys, ntfs.sys... BSOD 0x116 dxgkrnl.sys + dxgmms1.sys + nvlddmkm.sys Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Непрерывная интеграция для пакета Python
Mr. Docker 22.06.2025
Было 4 часа утра пятницы, когда я выпустил новую версию нашей внутренней библиотеки для обработки данных. Релиз 0. 5. 2 содержал небольшой фикс для обработки дат в ISO формате, что может пойти не так?. . .
|
Продвинутый ETL на C# из OLTP БД в хранилище
stackOverflow 22.06.2025
Работая в сфере корпоративной аналитики, я постоянно сталкиваюсь с одним и тем же - нужны чистые, структурированные и, главное, свежие данные. Без них современные аналитические системы, машинное. . .
|
Мастер-класс по микросервисам на Node.js
Reangularity 21.06.2025
Node. js стал одной из самых популярных платформ для микросервисной архитектуры не случайно. Его неблокирующая однопоточная модель и событийно-ориентированный подход делают его идеальным для. . .
|
Управление Arduino из WPF приложения
Wired 21.06.2025
Зачем вообще связывать Arduino с WPF-приложением? Казалось бы, у Arduino есть собственная среда разработки, своя экосистема, свои способы управления. Однако при создании серьезных проектов. . .
|
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
|
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
|
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
|
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C#
Задание 1:
КЛАСС FORM 1
public partial class Form1 : Form
{
Spisok listin = new Spisok();
. . .
|
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|