|
Чугунные скороходы
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
|
|||||||||||
NASM Как прочитать диск с помощью int 13h22.10.2025, 22:35. Показов 2293. Ответов 31
Метки нет (Все метки)
Пишу свою ОС, просто как тестовый проект ради изучения языка. Начал с написания PBR. Пытаюсь прочитать 1 сектор диска. Там находится вторая часть PBR после байтов 0x55AA. Почитав интернет, рабочий метод чтения диска я не нашел. Каждый код, который я использую, записывает неверные данные в мой адрес. Предварительно перед чтением диска я конечно же проверяю этот адрес и он всегда пустой.
Кликните здесь для просмотра всего текста
1
|
|||||||||||
| 22.10.2025, 22:35 | |
|
Ответы с готовыми решениями:
31
Int 13h. Не могу прочитать с винта за раз блок более 64кб Как записать данные в загрузочный сектор без использования int 13h
|
|
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 854
|
||
| 25.10.2025, 22:05 | ||
|
Добавлено через 54 минуты ARRAYBOW, дисковые функции (INT 0x13) не в курсе логической конструкции вашего раздела. Они оперируют только LBA номерами секторов. Их ещё называют физическими секторами, для отличия от логических секторов раздела. Судя по скрину VBR, логическому сектору 0 вашего раздела соответствует LBA сектор с номером 0x800, следовательно логический сектор 1 от вашего раздела соответствует LBA сектору с номером 0x801. Его и надо скармливать функции чтения, а не 1.
1
|
||
|
Эксперт Hardware
|
||||||
| 26.10.2025, 07:10 | ||||||
Сообщение было отмечено Mikl___ как решение
Решение
ARRAYBOW, вирт.диски имеют другую лог.структуру, нежели физ.харды. Например на вашем скрине видно, что в дампе нет таблицы разделов по смещению
01BEh. Если вы хотите приблизить обстановку к реальной, то используйте в качестве бут-девайсов или флоп, или флэшку. Это просто реализовать, зато при тестах на реальном железе получить профит.1. Чтобы сделать образ реального флопика, достаточно в редакторе HxD создать новый файл размером строго 1.474.560 байт, и сохранить его с расширением *.img. Теперь можете вставить в его сектор(0) бинарник своего загрузчика, обязательно комбинацией Ctrl+B (вставка с заменой). Если вставить по Ctrl+C, размер образа флопа увеличится, и QEMU не примет его на свой борт. Для прыжков по адресам, в HxD предусмотрена комбинация Ctrl+G. Батник для запуска будет такой (в строке -drive измените путь до образа *.img на свой):
2. Чтобы сделать образ Boot-флешки, нужно отформатировать её на хосте, и записать в первый байт таблицы разделов по смещению 0x01BE, флаг загрузочного тома 80h. Здесь аналогично бросаете загрузчик в сектор(0) MBR, а вот начало лог.раздела носителя будет лежать уже по смещению 01С6h - это и будет указателем на VBR/PBR. На хардах лог.раздел начинается обычно с сектора(63) =3Fh, а на флешках с сектора(1024) =400h.Вот образ ОС на флопике, которую я писал недавно для экспериментов, но так и не закончил (остался переход в РМ и LongMode). Можете протестировать батником выше. Там есть и чтение секторов AH=42h, и многое другое.
1
|
||||||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 26.10.2025, 11:13 | |||
|
Вы прислали скрин, но там непонятно: сектора 0 и 1 — это сектора физического диска или логического? P.S. Вы cld добавили в код? Это критически важно. А отладку через Bochs сделали (кстати, чтобы получить GUI-отладчик, добавьте в разделе "Display & Interface" в строке "Display Library options" опцию gui_debug)? Что видите?Вообще, у вас много лишнего кода. Даже вместо repe cmpsb можно сделать проверку просто через cmp dword [адрес],4байта + cmp word [адрес+4],2байта.
1
|
|||
|
Чугунные скороходы
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
|
||
| 26.10.2025, 12:18 [ТС] | ||
|
0
|
||
|
Чугунные скороходы
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
|
||
| 26.10.2025, 12:31 [ТС] | ||
|
0
|
||
|
Чугунные скороходы
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
|
||
| 26.10.2025, 12:54 [ТС] | ||
|
0
|
||
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||
| 26.10.2025, 13:11 | |||
|
4 блока по 16 байт. В каждом есть признак активности раздела (byte, смещение 0) и начало раздела (dword, смещение 8). Проверяете каждый, смотрите, какой из них активный, берёте номер сектора начала раздела и оттуда читаете. Почитайте заодно алгоритм "Выбор загрузочного раздела и проверка целостности MBR". Добавлено через 4 минуты Если диск размечен как GPT, то MBR тоже содержит Partition Table, и первый диск указан, начиная с сектора LBA 1 и имеет тип (байт по смещению 4) = 0xEE (или 0xED). Добавлено через 4 минуты Теоретически первый логический раздел может начинаться с сектора LBA 1, но как правило, оставшиеся 62 сектора на 0-й дорожке (0-й головки) не трогают. Часто даже делают выравнивание до 1 МБ (т.е. первые 2048 секторов не трогают).
1
|
|||
|
Эксперт Hardware
|
||||||
| 26.10.2025, 19:54 | ||||||
|
ARRAYBOW, покажите дамп сектора(0) вашего только-что созданного вирт.диска *.vhd, без скопированного поверх загрузчика MBR и прочего - только девственный диск. У меня например он выглядит так:
1
|
||||||
|
Чугунные скороходы
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
|
|||||||
| 27.10.2025, 11:58 [ТС] | |||||||
0
|
|||||||
|
Эксперт Hardware
|
||
| 27.10.2025, 13:17 | ||
|
Это не то.. Вы-же пишите, что грузитесь в qemu с вирт.диска VHD, пропуская первые 5Ah байт от начала:
qemu-image create -f .. вроде не поддерживает-же создание дисков VHD, а только RAW и QCOW2. Тогда где вы создаёте вирт *.vhd? Мне просто нужно сравнить формат с моим *.vhd, который я создал в VirtualBox / VirtualPC. Это открытая спека (см.скрепку) где указано, что сектор(0) является служебным.
1
|
||
|
Чугунные скороходы
17 / 16 / 3
Регистрация: 25.12.2022
Сообщений: 367
|
||||||||
| 27.10.2025, 14:03 [ТС] | ||||||||
1
|
||||||||
|
Эксперт Hardware
|
|
| 27.10.2025, 14:26 | |
|
во, спасибо, то-что надо.
1
|
|
| 27.10.2025, 14:26 | |
|
Чтение диска (int 13h ah=02h) - как определить входные параметры? Функция 48h int 13h DOS виснет на int 13h при чтении MBR жесткого диска Будут ли работать функции прерывания int 13h с виртуальным флоппи диском Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|