0x7C00: Tempat Bootloader Berlabuh


Di tutorial sebelumnya, kita membuat bootloader sederhana yang dijalankan di VirtualBox. Jika Anda lihat kembali, baris kedua dari bootloader kita tertulis seperti berikut.

Baris kedua tersebut menyatakan bahwa awal binary dari bootloader kita, yaitu boot.bin akan diletakkan di alamat memori 0x7c00. Mengapa di alamat itu? Karena CPU akan langsung mengeksekusi instruksi yang ada di 0x7c00 setelah melakukan POST. Penjelasan yang bagus terdapat di sini.

Untuk lebih meyakinkan lagi, mari kita dump 64 byte isi memori komputer kita mulai dari alamat 0x7c00. Untuk itu, Anda dapat menggunakan program berikut.

Setelah di-compile, kita lihat binary program ini menggunakan Bless Hex Editor. Berikut adalah hasilnya. Perhatikan 64 byte pertama dari binary ini.

Lalu, boot virtual machine kita, maka akan muncul tampilan seperti ini.

Perhatikan byte per byte dari karakter yang muncul di virtual machine dan di Bless Hex Editor terutama bagian yang berisi 0x00 dan Hello World.

Byte pertama berisi 0xBE, di virtual machine muncul karakter aneh. Byte ke-2 berisi 0x00, di virtual machine muncul spasi. Byte ke-6 berisi 0x00, di virtual machine muncul spasi. Dan seterusnya.

Karena program kita melakukan dump untuk isi memori alamat 0x7c00 – 0x7c40, dan isi dari memori mulai dari alamat 0x7c00 sama dengan isi dari program kita dilihat dari Bless Hex Editor, dapat disimpulkan bahwa program boot.ini (yang binary-nya dimulai dengan 0xBE) memang di-load ke 0x7c00.


Leave a Reply