Tampilkan postingan dengan label bootsector. Tampilkan semua postingan
Tampilkan postingan dengan label bootsector. Tampilkan semua postingan

Jumat, 21 Februari 2014

Membuat sebuah Bootsector

   Sektor boot pada disk selalu ada di sektor pertama pada track pertama pada kepala pertama . Ketika komputer dinyalakan ( atau reset) , BIOS dijalankan dan melakukan POST . Ini menginisialisasi semua data itu , maka mencari boot sector yang valid . Pertama terlihat di A : drive , maka terlihat C : . Jika tidak menemukannya kemudian menginterupt pada 18h disebut ( pada PC IBM original ) BASIC ROM . Sebuah boot sector yang valid ( untuk BIOS ) adalah salah satu yang bernilai 0AA55h pada offset 510 di sektor boot .

   Ketika BIOS menemukan boot sector , ia membaca bahwa sektor ( 512 byte ) dari disk dan ke memori pada 00:07 C00h . Kemudian melompat ke 0:07 C00h dan kode boot sector mendapatkan kontrol . Pada titik ini , semua yang telah diinisialisasi adalah area data BIOS ( 40h : 0 ) dan interupsi BIOS ( 10h - 1Ah ) . Pada titik ini , memori sebagian besar tidak terpakai , tapi tidak perlu dibersihkan ke 0. ( Chris Lattner )

NASM bootstraps tutorial

The basics
----------
These are the rules that you must follow:
  - The BIOS will load your bootstrap to address 07C00h. Sadly, the segment and     offset varies.
  - Bootstraps must be compiled as plain binary files.
  - The filesize for the plain binary file must be 512 bytes.
  - The file must end with AA55h.

A minimal bootstrap
-------------------
This bootstrap just hangs:

    ; HANG.ASM
    ; A minimal bootstrap
    hang:                   ; Hang!
            jmp hang

    times 510-($-$$) db 0   ; Fill the file with 0's
    dw 0AA55h               ; End the file with AA55

The line starting with "times" is a command that only NASM understands. The line will insert 0's until the filesize is 510 bytes. The whole file will therefore be 512 bytes. The last instruction puts AA55 at the end of the file.

Bootsector

Requirements
============
During this article I assume that you have good knowledge of the assembly language and intel architecture. If not, read an assembly tutorial, they aren't hard to find...

Start
=====

Creating your own bootsector is simpler than you may think, the only requirement is that the bootsector is 512 bytes long, and at offset 0x1FE (decimal=510), the word 0xAA55 is placed. This is the first thing the BIOS does when the PC boots up, it first looks on the first floppy drive at the first sector for 0xAA55 at the end, and if it finds it then it loads it into memory, and starts executing it, otherwise it trys the primary harddisk, and if that isn't found it just bombs out with an error.