Как определить загрузочное устройство - PullRequest
3 голосов
/ 22 июля 2011

опять у меня вопрос, который не так легко погуглить.Давайте предположим, что BIOS загрузил мой загрузчик с указанного устройства, как мне теперь узнать, какое это устройство, чтобы я мог загрузить остальную часть моей ОС в оперативную память?

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Если это 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 голосов
/ 08 августа 2011

На самом деле между микропрограммой и программой начальной загрузки в секторе # 0 существует целый протокол. Однако, как вы можете видеть, большинство из них существует только на страницах стандартных документов, а не на самом деле.В действительности, при загрузке старым способом PC / AT и PC98 используется номер DL для номера встроенного ПО и поле «скрытых секторов» в блоке параметров BIOS (или, что гораздо менее предпочтительно,«встроенный список блокировок», поддерживаемый каким-либо специализированным инструментом) для определения местоположения тома на диске.

Если, конечно, кто-то загружается по-новому (по крайней мере, в мир x86 PC), конечнотогда вещи сильно отличаются .Загрузчик операционной системы - это запись в меню менеджера загрузки, а записи меню менеджера загрузки имеют систему параметров, которые передаются в программы загрузчика менеджером загрузки при их запуске.Одним из параметров является местоположение загрузочного тома, который загрузчик операционной системы использует для поиска файлов операционной системы.Вот как Windows NT работал долгое время, на самом деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...