mutim mbr
Ebben a cikkben szeretnék segíteni mindazoknak, akik most kezdenek foglalkozni létrehozását operációs rendszerek, és így, mégpedig írásban MBR. Ebben a cikkben megpróbálom elmondani létrehozását MBR.bin gyakorlatban, és általában leírni az egészet, mint részletességgel és érdekes. Így írunk, természetesen lesz fasm.
Mintegy Rakodógépek
Ez az ágazat a master boot record (Master Boot Record - rövidítve MBR). Elején MBR bootloader gépi kód, majd a Partition Table (partíciós tábla), amely leírja a sémapartíció logikai meghajtókat. Végén a boot szektor aláírás 55AAh, BIOS'u beszélünk, amit tényleg MBR, hanem valami mást.
Loader elemeznie kell a partíciós tábla, hogy megtalálja az előnyös logikai meghajtót, úgy vélik, hogy az első szektor (az úgynevezett indító - boot), és adja át a vezérlést. Azt lehet mondani, hogy betölti az operációs rendszer betöltő.
Szerkezet leírni ezt a részt
A szerkezet a MBR érteni, most folytassa a kialakulása egy 512 bájtos bináris. Az első dolog, amit tennie kell - írni a bootloader kódot. Aztán van, hogy egy partíciós tábla, és adjunk hozzá egy aláírás 55AAh. Most próbáljuk írni egy egyszerű letöltő, hogy üzeneteket jelenít meg a szakaszában a munkáját.
Szóval, itt van a mi MBR:
; Ez a két irányelvek nem kerül sor a programban.
; A második okozza, hogy a fordító generál 16 bites kódot
A szerkezet a LBA olvasni
Ha a leolvasott érték valamilyen okból nem tud BIOS beállítani a carry flag. Ebben az esetben mi ugrik a hiba, amely egy hibaüzenetet jelenít meg a 2. sorban (az 1. - „MBR terhelt”), és függessze fel a gépet.
Tovább a kódot funkciók kiadási találni sector'a csomagtartó és a hibaüzeneteket. Alapelv munka már a fent leírt, akkor csak azt mondják, hogy ők dolgoznak keresztül BIOSprintstring.
Ezen alapvető MBR futtatható kódot végét. De ez még nem minden. Még nem vizsgálta a funkciókat és BIOSprintstring BIOSreadkey, valamint a szerkezet a LBA olvasni. A következő kódsort - tartalmazza a „BIOSFunctions.ink”, akkor itt az ideje, hogy fontolja BIOSreadkey és BIOSprintstring, hogy amint a neve is mutatja használjuk a BIOS megszakítja.
A helytakarékosság (512 bájt nem gumi), ezek gyakran használják, hogy megszakítja a funkciót, ami viszont hozott .ink fájl, ami össze van kötve a vége a mi MBR.
Így nézzük BIOSFunctions.ink file:
; előre gyorsgomb
Itt leírjuk a funkciókat használják a mi bootloader.
Kezdjük BIOSprintstring. Ez kibontja a továbbított kulcs kódját a veremből, összehasonlítja azt olvasni a billentyűzet és ha azok megegyeznek visszatér a hívó kód - ha nem, ismételje meg ezeket a lépéseket újra.
Azt hiszem, hogy miért sp + 02h. Az első két bájt (mivel a kód 16 bit), akkor vissza a pont a funkciót. Mivel a bájtok kerülnek a memóriában (és a verem - a memória) fordított sorrendben, a bájtok továbbított, amit fel a köteg utolsó (pass-kód, amely kulcsfontosságú 00XXh) lesz az első.
Olvassa karaktert a billentyűzeten, akkor működni 00h int 16h megszakítás. Miután felhívta a megszakítás kódja a lenyomott gomb kerül al.
Most az output string - funkció BIOSprintstring. Ő lesz az eltolás vonal, vonal hossza, a vonal és oszlop a startvonalon, kinyomtatja a húr, és visszaadja a vezérlést a hívó kód.
Itt megkapjuk az adatokat a verem pop utasításokat. Ezért tartjuk a csúcspont. Fenntartjuk azt a Register si, mint a bp regisztrálja elfoglalt megszűnése funkciót.
Használja attribútumot bl, ne érintse meg az egér
Használja attribútumot bl, vigye a kurzort a sor végére
Használjon format string karakter attribútum; karakter attribútum;. ne érintse meg az egér
Használjon format string karakter attribútum; karakter attribútum;. vigye a kurzort a végéig húr
Al-funkció 13H int 10h funkciót megszakítások
Szöveg színe (8 több szín állítható elő a fényerőt egy kicsit)
Funkciók tekinthető - ezt a kódot végződik. Csak az adatok szerkezetét.
Először is, itt vannak kiadási MBR sor, itt látjuk a sorokat az angol, az orosz karakter már a következőképpen szól: „MBR terhelt”, boot szektor talált „és a” hiba”.
Mindent! Az utolsó 2 bájt jelzi, BIOS'u hogy valóban MBR.