2011-07-22 3 views
3

снова У меня есть вопрос, который не так легко скрыть. Предположим, что BIOS загрузил мой загрузчик с назначенного устройства, как мне теперь узнать, какое устройство оно есть, чтобы я мог загрузить остальную часть моего os в ram?Как определить загрузочное устройство

ответ

2

Если это MBR bootstrap (И, возможно, в противном случае я не уверен на 100%?) DL будет содержать номер диска т.е. вы можете сделать что-то вроде этого (заменить свой собственный макет памяти и так далее):

EntryPoint: 
    xor ax, ax 
    mov ss, ax 
    mov ds, ax 
    mov sp, 0x7c00 
.DiskReset: 
    mov ah, 0 
    int 0x13 
    jc .DiskReset 
    mov ax, 0x50 ; load to 0x500 linear address. It has unused space up to 0x7bff 
    mov es, ax 
    xor bx, bx 
    mov ax, 0x023B ; count = 0x3b = 59, the maximum.. 
    mov cx, 0x0002 
    xor dh, dh ; leave (dl = drive number) intact 
    int 0x13 
    jnc .ReadDone 
    mov si, ReadError 
    call PrintString16 
    jmp .DiskReset 
.ReadDone: 
    ; ...... 
+0

thx много чувак. Я никогда не знал, что это значение в DL означает. – Pyjong

0

There's actually a whole protocol between the firmware and the bootstrap program in sector #0. Как вы можете видеть, однако, большинство из них существует только на страницах стандартных документов, а не на самом деле. В действительности, при загрузке на старых компьютерах/AT и PC98 используется DL для номера диска прошивки и используется поле «скрытые сектора» в BIOS Parameter Block (или, что гораздо менее желательно, «список встроенных блоков», поддерживаемый в какой-либо форме специализированного инструмента) для размещения объема внутри накопителя.

Если вы загружаете новый (по крайней мере, в мир компьютеров x86), то, конечно, тогда things are a lot different. Загрузочный загрузчик операционной системы является записью в меню диспетчера загрузки, а в записях меню диспетчера загрузок имеется система параметров, которые передаются загрузчикам программным менеджером загрузки при их запуске. Одним из параметров является расположение загрузочного тома, который использует загрузчик операционной системы для поиска файлов операционной системы. На самом деле Windows NT работает уже давно.

Смежные вопросы