Вопрос № 123576: Здравствуйте! У меня такой вопрос. Сделал дизассемблер своей MBR (у меня Windows XP SP2). Не совсем понятно одно место, а именно поиск активного раздела. В строке 0020 флаг активности ( как число со знаком) сравнивается с содержимым регистра ch (там...
Вопрос № 123.576
Здравствуйте! У меня такой вопрос. Сделал дизассемблер своей MBR (у меня Windows XP SP2). Не совсем понятно одно место, а именно поиск активного раздела. В строке 0020 флаг активности ( как число со знаком) сравнивается с содержимым регистра ch (там 00) и ,"если меньше", в следующей строке делается переход на часть программы, которая проверяет, единственный ли это активный раздел и, если да, то загрузку первого сектора этого раздела. То есть, переход на загрузку активного раздела произойдёт если флаг
активности будет числом в интервале 80h-FFh(если эти числа рассматривать как числа со знаком, то это отрицательные числа, т.е.<0).
Как-то скачал с инета файл .asm стандартной MBR. Там это место выглядит по другому. Флаг активности сравнивается конкретно с 80h.
В то же время числа 80h-FFh используются как номера физических жёстких дисков. В частности, при загрузке активного раздела, флаг активности помещается в регистр DL, именно, как номер физического HDD, с которого будет производиться загрузка ОС.
Почему в моей MBR поиск активного раздела организован таким образом(не как в стандартной MBR)?
Приложение:
Отправлен: 17.02.2008, 20:16
Вопрос задала: Alsav22 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 9)
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Alsav22! Как мне кажется, дело в том, что используется только значение 80h! Остальные коды 81h-ffh зарезервированы Поэтому все равно, как его проверять или на совпадение, или на <0...
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 18.02.2008, 10:23 Оценка за ответ: 5
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Alsav22!
Формат MBR (выделено: в скобках смещение от начала сектора и размер поля) (+0) 1BEh Загрузочная запись - программа, которая загружается
и выполняется во время начальной загрузки операционной системы; (+1BEh) 10H Элемент таблицы разделов диска (структру см. ниже); (+1CEh) 10H Элемент таблицы разделов диска; (+1DEh) 10H Элемент таблицы разделов диска; (+1EEh) 10H Элемент таблицы разделов диска; (+1FEh) 2 Признак таблицы разделов - 55AAh.
Элементы таблицы разделов диска (+0) 1 Признак активного раздела:( 0 - раздел не активный; 80h - раздел активный.); (+1) 1 Номер головки для начального сектора раздела; (+2) 2 Номер сектора и цилиндра для начального сектора раздела в формате функции чтения сектора INT_13h; (+4) 1 Код системы:( 0 - неизвестная система; 1, 4 - DOS; 5 - расширенный раздел DOS.); (+5) 1 Номер головки для последнего сектора раздела; (+6) 2 Номер сектора и цилиндра для последнего сектора раздела в формате функции чтения сектора INT_13h; (+8) 4 Относительный номер сектора начала раздела; (+12) 4 Размер раздела в секторах.
Теперь о Вашем MBR:
:0001.01BE 80 01 0100 06 FE 3FC0 3F000000 424F2F00
:0001.01CE 00 00 01C1 0F FE FFFF 814F2F00 40952109
Всё на месте. Вы просто не там искали.
Удачи!
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал) Украина, Киев Тел.: +380958380164 Адрес: Украина г.Киев ---- Ответ отправлен: 18.02.2008, 12:35 Оценка за ответ: 1 Комментарий оценки: Разве я что-то где-то искал? Вопрос был о другом.