Ho letto da qualche parte in Internet che, prima di saltare a 0x7c00, il BIOS carica in% dl il "numero di unità" del dispositivo avviato. Ma cos'è questo "numero di guida"? A ciascun dispositivo collegato al computer viene assegnato un numero dal BIOS? In tal caso, come posso sapere a quale numero è assegnato un dato dispositivo?Boot PC: registro dl e numero di unità
Lettura del codice sorgente di GRUB Ho trovato quando% dl ha bit 0x80 e 0x70 impostati, sovrascrive l'intero registro con 0x80. Perché? Ecco il codice:
jmp 3f /* grub-setup may overwrite this jump */
testb $0x80, %dl
jz 2f
3:
/* Ignore %dl different from 0-0x0f and 0x80-0x8f. */
testb $0x70, %dl
jz 1f
2:
movb $0x80, %dl
1:
proposito. Esiste una risorsa dettagliata sul processo di avvio dei PC nel web? Specialmente su cosa fa il BIOS prima di dare il controllo al bootloader e anche i codici standard usati per comunicare con esso (come "numero di unità"). Speravo di scrivere il mio bootloader e tutto quello che ho trovato è un po 'troppo vago, non abbastanza tecnico al punto di informare dello stato esatto del computer quando il mio bootloader inizia a funzionare.
Ok. So che il bios lo capisce, ma voglio capire anche io. :) Quello che voglio sapere è come sono assegnati questi codici. Ad esempio, se sono statici (0 per un determinato dispositivo, 1 per un altro ... ecc.) E in tal caso, dove posso ottenere questo elenco; e se non lo sono, come li assegna il bios. – Kei
AFAIK, 0x80 è l'unico numero di unità valido per il disco rigido di avvio, analogamente 0x00 per l'unità disco floppy di avvio. C'è questo commento nel codice: 'Questa è una soluzione alternativa per i BIOS buggy che non passano correttamente l'unità di avvio. Se GRUB è installato su un HDD, verificare se DL è mascherato correttamente. In caso contrario, si supponga che il BIOS abbia passato un valore fasullo e impostato DL a 0x80, poiché questa è l'unica unità di avvio possibile. Se GRUB è installato in un floppy, questo non fa nulla (salta solo). È così che è stato tradizionalmente. I numeri delle unità non di avvio sono più alti. –
Vedo. Sarà lo stesso numero (0x80) per le unità flash e cd-rom? – Kei