mutim mbr

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.