2012-06-24 13 views
6

İnternette, 0x7c00'ye atlamadan önce, BIOS'un önyüklenen cihazın "sürücü numarasını"% dl'ye yüklediğini okudum. Ama bu "sürücü numarası" nedir? Bilgisayara bağlı her bir cihaza BIOS tarafından bir numara atanır mı? Öyleyse, belirli bir cihazın hangi numaraya atandığını nasıl bilebilirim?PC önyüklemesi: dl kayıt ve sürücü numarası

GRUB'un kaynak kodunu okuma% dl, 0x80 ve 0x70 bitlerine sahip olduğunda buldum, 0x80 ile tüm kayıtların üzerine yazılır. Neden? İşte buradaki kod:

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: 

Bu arada. PC’nin web’deki açılış sürecinde herhangi bir ayrıntılı kaynak var mı? Özellikle, BIOS'un önyükleyiciye kontrolü vermeden önce ne yaptığı ve bununla iletişim kurmak için kullanılan standart kodlar ("sürücü sayısı" gibi) hakkında özel olarak. Kendi bootloader'ımı yazmayı umuyordum ve bulduğum her şey biraz fazla belirsiz, bootloader'ım çalışmaya başladığında bilgisayarın tam durumunu bildirmek için yeterince teknik değil.

cevap

3

BIOS int 13h işlevleri bir sürücü numarasını kabul eder. DL numaralı sürücüde bu tip bir sürücü numarası olması gerekiyordu, bir BIOS anlıyor, çünkü, kendisi, önyükleme sektörlerini yüklemek için int 13h'yi kullanıyor.

+0

Tamam. Bios'un anladığını biliyorum, ama ben de anlamak istiyorum. :) Bilmek istediğim, bu kodların nasıl atanacağıdır. Örneğin, eğer statikse (belirli bir cihaz için 0, başka biri için… vb.) Ve eğer öyleyse, bu listeyi nereden alabilirim? ve değilse, bios bunları nasıl atar. – Kei

+1

AFAIK, 0x80, önyükleme sabit sürücüsünün önyükleme disketi için 0x00 benzeri tek geçerli sürücü numarasıdır. Kodda şu yorum var: 'Bu, önyükleme sürücüsünü doğru şekilde geçmeyen buggy BIOS'lar için bir çözümdür. GRUB bir HDD'ye takılı ise, DL'in maskelenmiş olup olmadığını kontrol edin. Değilse, BIOS'un sahte bir değer geçtiğini ve DL'yi 0x80 olarak ayarlayacağını varsayalım, çünkü bu olası tek bir önyükleme sürücüsüdür. GRUB bir diskete kurulursa, bu hiçbir şey yapmaz (sadece atlama). ”Geleneksel olarak bu şekilde. Önyükleme olmayan sürücü numaraları daha yüksektir. –

+0

Anladım. Flaş ve cd-rom sürücüler için aynı sayı (0x80) olacak mı? – Kei