Anatomi Register BH dan BL: Kendali Halaman dan Warna pada Bootloader x86

Dalam pengembangan sistem operasi pada level bare-metal arsitektur x86, kendali visual sepenuhnya berada di tangan pengembang melalui manipulasi register. Setelah memahami instruksi dasar untuk mencetak karakter, kita harus masuk ke mekanisme internal yang dikelola oleh BIOS melalui register BH dan BL. Artikel ini akan mengupas tuntas keterkaitan antara alamat memori fisik, segmentasi halaman video, dan struktur bit atribut warna.


1. Fondasi Memori Video: Konsep Memory-Mapped I/O

Pada arsitektur x86, komunikasi antara CPU dan layar monitor dilakukan melalui teknik Memory-Mapped I/O. Artinya, area tertentu dalam ruang alamat memori fisik dipetakan langsung ke memori pada kartu grafis (Video RAM).

Untuk Mode Teks Standar (Mode 0x03), area memori ini dimulai tepat pada alamat fisik 0xB8000. Setiap data yang ditulis ke alamat ini akan diterjemahkan oleh perangkat keras menjadi tampilan visual di monitor.

Struktur Penyimpanan 2-Byte

Dalam mode teks, setiap satu sel karakter di layar (80 kolom $\times$ 25 baris) direpresentasikan oleh 2 byte di memori video:

  1. Byte Karakter (Offset 0): Menyimpan kode ASCII dari karakter yang ingin ditampilkan (misalnya ‘R’).
  2. Byte Atribut (Offset 1): Menyimpan informasi warna dan efek visual. Di sinilah nilai dari register BL diaplikasikan secara otomatis oleh BIOS saat fungsi teletype dipanggil.

Total memori yang dibutuhkan untuk menampilkan satu layar penuh adalah:

80×25×2=4000 byte80 \times 25 \times 2 = 4000 \text{ byte}

2. Register BH: Manajemen Halaman (Video Paging)

Meskipun satu tampilan layar hanya membutuhkan 4000 byte, arsitektur x86 menyediakan blok memori video yang lebih besar, yakni sekitar 32 KB untuk mode teks berwarna. BIOS membagi area ini menjadi beberapa bagian yang disebut Halaman (Pages).

Register BH (Base High) berfungsi sebagai penunjuk indeks untuk menentukan halaman mana yang sedang diakses. BIOS mengalokasikan 4096 byte (4 KB) untuk setiap halaman agar selaras dengan manajemen memori sistem yang berbasis pangkat dua.

Tabel Lengkap Alamat Fisik Halaman Video (Mode 0x03)

Pemahaman tentang rentang alamat ini sangat krusial agar pengembang tidak menulis data di luar area yang ditentukan. Jika halaman awal dimulai pada 0xB8000, maka rincian halamannya adalah sebagai berikut:

Nomor Halaman (BH)Alamat Awal (Hex)Alamat Akhir (Hex)Status Penggunaan
Page 0 (0x00)0xB80000xB8FFFHalaman utama/aktif saat booting.
Page 1 (0x01)0xB90000xB9FFFHalaman cadangan kedua.
Page 2 (0x02)0xBA0000xBAFFFSering digunakan untuk teknik back-buffering.
Page 3 (0x03)0xBB0000xBBFFFHalaman cadangan keempat.
Page 4 (0x04)0xBC0000xBCFFFHalaman cadangan kelima.
Page 5 (0x05)0xBD0000xBDFFFHalaman cadangan keenam.
Page 6 (0x06)0xBE0000xBEFFFHalaman cadangan ketujuh.
Page 7 (0x07)0xBF0000xBFFFFBatas Akhir memori video teks.

Dengan mengubah nilai BH, Anda dapat menulis teks ke halaman yang tidak terlihat oleh pengguna (misal Page 1), lalu memerintahkan BIOS untuk beralih tampilan secara instan. Ini adalah dasar dari pembuatan antarmuka yang mulus.


3. Register BL: Anatomi Bitmask Atribut Warna

Jika BH menentukan lokasi, maka register BL (Base Low) menentukan estetika. Pada fungsi Teletype BIOS (AH = 0x0E), register BL menyimpan Attribute Byte yang mengendalikan warna tulisan (foreground), warna latar belakang (background), hingga efek kedipan (blink).

Struktur 8-Bit pada Register BL

Setiap bit di dalam register ini memiliki fungsi spesifik yang harus diatur dengan presisi:

  • Bit 0, 1, 2 (Foreground Color): Menentukan warna teks melalui kombinasi warna dasar (Bit 0: Biru, Bit 1: Hijau, Bit 2: Merah).
  • Bit 3 (Intensity): Jika bernilai 1, warna teks menjadi cerah (Bright). Jika 0, warna tampak redup.
  • Bit 4, 5, 6 (Background Color): Menentukan warna latar belakang karakter dengan kombinasi warna yang sama (B, G, R).
  • Bit 7 (Blink): Jika bernilai 1, karakter tersebut akan berkedip di layar.

Studi Kasus: Mengapa Nilai 0x0A Menghasilkan Hijau Terang?

Nilai 0x0A dalam biner adalah 0000 1010. Mari kita bedah per bit:

  • Bit 0-2 (010): Hanya Bit 1 (Hijau) yang aktif.
  • Bit 3 (1): Intensitas aktif, mengubah Hijau menjadi Hijau Terang.
  • Bit 4-7 (0000): Latar belakang Hitam dan efek kedipan mati.

4. Hubungan Mode Video dengan Kapasitas Register

Ketersediaan halaman pada register BH dan fungsi warna pada BL sangat bergantung pada Mode Video yang dipilih melalui register AX di awal program.

Mode (Hex)TipeResolusiKapasitas Halaman (BH)Peran Utama BL
0x03Teks80×250 s.d. 7Atribut Teks Lengkap
0x0DGrafis320×2000 s.d. 7Warna Piksel (16 warna)
0x12Grafis640×4800 (Hanya satu)Warna Piksel (16 warna)
0x13Grafis320×2000 (Hanya satu)Indeks Palet (256 warna)

Pada mode grafis tinggi seperti 0x13, memori yang dibutuhkan per piksel sangat besar sehingga BIOS tidak mampu menyediakan banyak halaman. Sebaliknya, pada mode teks 0x03, efisiensi data memungkinkan kita memiliki hingga 8 halaman berbeda di dalam rentang alamat 0xB8000 hingga 0xBFFFF.


5. Sintesis Teknis: Alur Eksekusi BIOS

Saat perintah int 0x10 dijalankan dengan AH = 0x0E, BIOS melakukan urutan operasi berikut:

  1. Membaca AH: Mengetahui bahwa permintaannya adalah cetak karakter teletype.
  2. Membaca BH: Menentukan offset alamat memori berdasarkan indeks halaman (misal: Page 0 = 0xB8000).
  3. Membaca AL & BL: Mengambil kode ASCII dari AL dan bit atribut dari BL.
  4. Menulis ke VRAM: Menempatkan kedua byte tersebut ke alamat memori video yang dituju.
  5. Memajukan Kursor: Memperbarui posisi kursor di halaman tersebut agar karakter berikutnya berada di posisi yang benar.

Pemahaman mendalam mengenai manipulasi alamat fisik dan struktur bit register ini adalah kunci bagi pengembang untuk membangun fondasi visual sistem operasi yang stabil dan efisien.