Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266

Переход с флешки на загрузку с HDD

08.05.2016, 15:46. Показов 1766. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу бутсектор флешки, почти всё готово, осталась одна маленькая неприятность.
У юзера должна быть возможность выйти из загрузчика и загрузиться в "нормальном" режиме с дефолтного HDD, но вот номер этого HDD для int 13h неизвестен, ибо 80h биос всегда оставляет за флешкой, а по остальным номерам происходит либо опять загрузка с флешки, либо ошибка. В чём может быть проблема и какой указывать верный номер диска в таком случае? Может где-то в памяти лежит таблица с номерами дисков?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2016, 15:46
Ответы с готовыми решениями:

Как сделать загрузку с флешки
Всем привет!!!:) Пожайлуста подскажите как сделать загрузку с флешки??? Заранее спасибо!

Реализовать загрузку с флешки, а не через HDD
Теперь, следующая проблема: подсвечиваю строку, где имеется название флешки в Boot Menu, нажимаю Enter, но идёт загрузка не с флешки, а...

При установке Win 7 не видит hdd и флешки тоже, Asrock g41c-vs, hdd wd 3200av js
При выборе раздела для форматирования и установки win 7 не видит жесткого диска. Диск с драйверами материнской платы потеряны, что делать...

27
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
08.05.2016, 16:04
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
но вот номер этого HDD для int 13h неизвестен
..если ты передаёшь управление через ребут, то загрузка опять и происходит с флешки.
Передавай управление сразу в MBR и всё. Он сам разберётся с какого раздела грузиться.
Бутсектор твой можно посмотреть?
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
08.05.2016, 17:12  [ТС]
Ну я не настолько идиот, чтобы делать ребут, поэтому и пытаюсь считать новую MBR, предварительно самопереместившись вниз, только вот не могу понять, как заставить её считаться именно с дефолтного HDD, а не вновь с флешки?? BIOS назначает номера дискам только ему ведомым образом.
Смотреть там не на что особо, так, просто картинка выводится, первые шаги так сказать. Когда доделаю обязательно выложу вместе с графическим редактором.

Добавлено через 35 минут
Вот сейчас например успешно сработала загрузка с диска 81h в режиме LBA, но всегда ли оно так будет на всех компах? Т.е. диск 80h после втыкания флешки и загрузки с неё всегда становится диском 81h ?
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
08.05.2016, 17:18
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
Смотреть там не на что особо
..но тыж пытаешься как-то загрузиться с диска.
Для INT-13h номера 80h-81h и т.д. должны быть закреплены только за HDD. Ищи глюк у себя в коде..

Как вариант, можно организовать поиск или таблицы разделов, или сигнатуры 55AA перебирая все диски. Тогда точно не ошибёшься.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
08.05.2016, 17:20  [ТС]
Никаких глюков там нет, код заработал. 80h всегда закреплено за загрузочным устройством, все остальные после этого перенумеровываются биосом только ему одному известным алгоритмом. В моём случае мне повезло, и HDD0 стал 81h, весь вопрос - повезёт ли так на других компах?
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
08.05.2016, 17:27
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
но вот номер этого HDD для int 13h неизвестен, ибо 80h биос всегда оставляет за флешкой
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
80h всегда закреплено за загрузочным устройством
..ты уж определись уже.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
08.05.2016, 17:32  [ТС]
А что здесь неопределенного? Не надо из меня делать полного нуба, который не понимает, что несёт.
Когда в комп воткнута флешка, и с неё грузятся, то она всегда будет иметь номер 80h, как загрузочное устройство. Если бы её не было, то 80h имел бы HDD, но теперь все остальные диски перенумерованы.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
08.05.2016, 19:01  [ТС]
Ну вот, как и обещал, если кому интересно.
Сам бутсектор выполняет чисто развлекательную функцию - при загрузке выводит картинку, нарисованную пользователем в графическом редакторе (прилагается). По нажатию пробела - переход на загрузку с HDD. Код бутсектора уже вшит в графический редактор, никакие дополнительные файлы для его работы не нужны (правда, нужны админ. права).

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#make_boot#
org 7c00h
 
xor cx,cx     ; инициализация
mov es,cx
mov ds,cx
mov ss,cx
mov si,7c00h  ; начальный адрес
mov di,0600h  ; конечный адрес
mov sp,di
inc ch        ; 512 байт
repnz movsw   ; самоперемещение
jmp Start
 
org 0600h+$-07c00h     ; все адреса относительно нового места
Start:
mov ax,0003h  ; установка режима экрана
int 10h
add ah,10h
mov bx,color  ; включение мигания
rol bx,1
and bl,1
int 10h
 
mov bp,0800h  ; перегрузка символа (буфер символа по 0000:0800)
mov di,bp     ; инициализация указателя
xor al,al     ; первая строка знакоместа - нули
stosb
not al
mov cl,14     ; следующие 14 строк знакоместа - единицы
repnz stosb
not al        ; последняя строка знакоместа - нули
stosb
inc cl        ; заменить 1 символ в таблице
mov dx,0080h  ; с кодом 0x80
mov bx,1000h  ; размер знакоместа 8х16
mov ax,1100h
int 10h
 
lea si,map    ; инициализация таблицы данных
mov ax,0b800h ; указатель на видеопамять
mov es,ax
xor di,di
mov bh,250    ; 250 байт в карте
bytes:
lodsb         ; загрузка байта из карты
mov bl,al
mov cl,8      ; по 8 бит в байте
bits:
shl bl,1
mov ax,space
jnc skip
mov ax,color
skip:         ; пробел
stosw
loop bits
dec bh
jnz bytes 
 
mov dh,19h    ; гашение курсора
mov ah,2
int 10h
 
waitspace:    ; ожидание пробела
xor ah,ah
int 16h
cmp al,20h
jne waitspace
 
mov ax,0003h  ; очистка экрана
int 10h
add ah,10h    ; отключение мигания
int 10h
xor dx,dx     ; восстановление курсора
mov ah,2
int 10h
 
mov ah,42h    ; чтение бутсектора HDD
mov dl,81h    ; номер диска = 1
lea si,DAP    ; указатель на параметры чтения
int 13h
jc err        ; если чтение успешно
jmp 7c00h     ; то загрузиться с HDD
err:          ; при ошибке чтения
lea si,ErrMsr ; выдать сообщение
mov ah,0eh
mov cx,11
MsgOut:
lodsb
int 10h
loop MsgOut
hlt
 
DAP db 10h,0,1,0,0,7Ch,0,0,8 dup (0) ; параметры загрузочного диска
ErrMsr db 'Boot error!'              ; сообщение об ошибке
space dw 0720h    ; видеокод пустого знакоместа
color dw 8b80h    ; видеокод заполненного знакоместа
map 250 dup(0ffh) ; карта рисунка
Вложения
Тип файла: zip BootPicture.zip (846.6 Кб, 3 просмотров)
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
10.05.2016, 15:10
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
загрузиться в "нормальном" режиме с дефолтного HDD
Что значит "дефолтный" HDD, чем он отличается от "НЕ дефолтного"?

Добавлено через 3 минуты
Кстати, понятие HDD в BIOS'е несколько шире. Если будет торчать еще 1 флешка (помимо загрузочной) с валидный MBR, то BIOS тоже ей выделит какой-то номер 0x81...
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.05.2016, 15:12  [ТС]
Цитата Сообщение от shmkv Посмотреть сообщение
Что значит "дефолтный" HDD, чем он отличается от "НЕ дефолтного"?
"Дефолтный" - это тот, с которого идёт загрузка, когда после включения питания пользователь ничего не трогает.

Добавлено через 1 минуту
Цитата Сообщение от shmkv Посмотреть сообщение
Если будет торчать еще 1 флешка (помимо загрузочной) с валидный MBR, то BIOS тоже ей выделит какой-то номер 0x81...
Мой вопрос как раз и заключался в том, КАКОЙ номер какому устройству будет выдан? Только, видимо, ответа на него никто не знает... А MBR может быть и инвалидный, номера раздаются биосом ДО чтения MBR.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
10.05.2016, 15:14
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
"Дефолтный" - это тот, с которого идёт загрузка, когда после включения питания пользователь ничего не трогает.
Хорошо, а как ты сам думаешь его можно распознать?

Добавлено через 58 секунд
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
КАКОЙ номер какому устройству будет выдан?
Если устройств несколько - зависит от желания левой пятки разработчиков биос.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.05.2016, 15:15  [ТС]
Цитата Сообщение от shmkv Посмотреть сообщение
Хорошо, а как ты сам думаешь его можно распознать?
Если бы я это знал, то не создавал бы тему. POST опрашивает устройства, создаёт их список, видимо, где-то хранит его (по какому адресу??), и раздаёт им номера в неизвестном мне порядке. Все эти вопросы очень интересные и пока остаются без ответа.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
10.05.2016, 15:18
Поверь, нету никакого правила, чтобы самое часто загружаемое устройство получало какой-то определенный номер. Я вообще крайне сомневаюсь, что биос ведет такую статистику.

Добавлено через 2 минуты
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
видимо, где-то хранит его (по какому адресу??)
специфично для каждой версии биос. Так что ты там хочешь увидеть!?
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
и раздаёт им номера в неизвестном мне порядке
Нет там никакого порядка. Для совместимости с кривыми загрузчиками биосы стараются загрузочному HDD выдать 0x80, остальное - никаких гарантий.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.05.2016, 15:18  [ТС]
Цитата Сообщение от shmkv Посмотреть сообщение
нету никакого правила, чтобы самое часто загружаемое устройство получало какой-то определенный номер
Оно не самое часто загружаемое, а установлено в CMOS как дефолтное. Пока что эмпирически (на двух машинах) установлено, что оно получает номер 81h при загрузке с флешки. Везде ли так - неизвестно.
Вы можете попробовать мою программу, если по нажатию пробела у вас пойдёт загрузка с дефолтного HDD - значит тоже 81h.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
10.05.2016, 15:25
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
а установлено в CMOS как дефолтное
Зашибись. А как тогда ты умудряешься с флешки загрузиться?

Добавлено через 2 минуты
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
номера раздаются биосом ДО чтения MBR.
Чушь. Потри на флешке мбр и попробуй с нее загрузитсья на разных машинах. В большинстве случаев биос сетап ее даже как hdd видеть не будет.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.05.2016, 15:25  [ТС]
Цитата Сообщение от shmkv Посмотреть сообщение
Зашибись. А как тогда ты умудряешься с флешки загрузиться?
Я с ноута, там по ESC)) На машинах, где такой функции нет, очевидно следует распознать вторую по счёту бутопцию CMOS. И есть определённый повод полагать, что биос нумерует устройства последовательно этому списку, пропуская недоступные.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
10.05.2016, 15:34
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
И есть определённый повод полагать
У меня нет такого повода.
Если ты хочешь чтобы грузилось второе устройство из списка (не обязательно HDD), то вызови int 18h.

Добавлено через 1 минуту
Вообще читай BIOS Boot Specification глава 6.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.05.2016, 15:42  [ТС]
Цитата Сообщение от shmkv Посмотреть сообщение
Чушь. Потри на флешке мбр и попробуй с нее загрузитсья на разных машинах. В большинстве случаев биос сетап ее даже как hdd видеть не будет.
Потёр. И правда перестала загружаться. Это получается биос не просто опрашивает все устройства из бутсписка на их физическое наличие, но и читает их бутсектор, и даже проверяет сигнатуру 55AA??
Если при нажатии ESC бутсписок сдвигается так, что на 1 место встает флешка, а на второе - то, с чего раньше грузились, то это именно то, что нужно. А что даёт Int 18h? В документации описано как-то очень туманно про какой-то бейсик.
0
1378 / 522 / 72
Регистрация: 21.07.2015
Сообщений: 1,308
10.05.2016, 15:56
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
и даже проверяет сигнатуру 55AA??
Не только сигнатуру. Должна быть валидная MBR с активным разделом и на самом разделе должен быть валидный загрузочный сектор.

Добавлено через 2 минуты
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
А что даёт Int 18h?
Ты попробуй.
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
В документации описано как-то очень туманно про какой-то бейсик.
ОМГ. Скачай бут спецификацию и читай внимательно.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
10.05.2016, 16:01  [ТС]
Цитата Сообщение от shmkv Посмотреть сообщение
Ты попробуй
Я попробовал в QEMU - результат идеальный, на стационарных машинах думаю то же самое будет. Весь вопрос - что происходит с бутсписком при нажатии ESC на ноуте, когда там окошечко для выбора загрузочного устройства вылезает?? Биос его как-то одноразово переформирует чтоль, ставя выбранное устройство первым, а остальные сдвигая вниз?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.05.2016, 16:01
Помогаю со студенческими работами здесь

Установить загрузку в БИОС ноутбука ASUS с флешки
Подскажите как установить загрузку с USB-FLASH в ноутбуке ASUS ? Искал как это сделать, но так и не получилось. На фотографиях видно меню,...

материнка asus a7v333-x поддерживает ли загрузку винды с флешки?
с сидирома не получается поставить винду из под биоса, поддерживает ли мать asus a7v333-x установку с загрузочной флешки?

Как начать загрузку с флешки в биосе AMI v02.54
Здравствуйте. Такая беда. Не могу запуститься с установочной флешки. В биосе выставляю первой свою флешку с виндой в разделах Hard Disk...

В БИОС зайти не могу что бы сделать загрузку с Флешки
Проблема такая вот, есть ноутбук toshiba satelite (модель не знаю) дисковод битый (не рабочий), нужно перебить винду, но в БИОС зайти не...

Ноутбук Asus F553MA в биос не могу выставить загрузку с флешки
Ноутбук Asus F553MA в биос не могу выставить загрузку с флешки. Создал установочную флешку (рабочая) воткнул в usb 2.0. В биос boot видит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru