Catatan Belajar oleh : Reza Ervani bin Asmanu
Dalam perjalanan membangun sebuah sistem operasi dari titik nol, salah satu pencapaian paling fundamental adalah kemampuan untuk menampilkan karakter ke layar. Pada arsitektur x86, proses ini melibatkan interaksi langsung antara perangkat lunak (melalui bahasa Assembly) dengan Firmware atau BIOS (Basic Input/Output System).
Artikel ini akan mengupas tuntas mekanisme komunikasi tersebut, khususnya melalui fungsi Teletype, serta peran krusial register AH dan AL dalam arsitektur prosesor.
Fondasi Komunikasi: Register AH dan AL
Sebelum sebuah karakter dapat muncul di monitor, CPU harus memberikan instruksi yang sangat spesifik kepada BIOS. Dalam arsitektur x86 16-bit, kita menggunakan register AX yang terbagi menjadi dua bagian: AH (High byte) dan AL (Low byte).
Memahami kedua bagian ini adalah kunci utama dalam pemrograman tingkat rendah:
- Register AH (Service Number): Berfungsi sebagai penentu “Layanan” atau “Fungsi” apa yang ingin kita minta dari BIOS. Ibarat sebuah menu di restoran, AH adalah nomor menu yang kita tunjuk.
- Register AL (Parameter/Data): Berfungsi sebagai pembawa data atau detail dari layanan tersebut. Jika kita memilih menu “Cetak Teks” di AH, maka AL akan berisi “Huruf apa yang ingin dicetak”.
Mekanisme Interrupt 0x10 dan Teletype Output
Layanan video pada BIOS dikelola melalui Interrupt 0x10 (INT 10h). Salah satu fungsi yang paling populer bagi pengembang sistem operasi pemula adalah fungsi 0x0E, yang dikenal sebagai Teletype Output.
Keunggulan fungsi ini adalah kemampuannya untuk mencetak karakter dan secara otomatis menggeser kursor ke posisi berikutnya, bahkan menangani baris baru (newline) secara cerdas.
Daftar Fungsi Utama INT 10h (Register AH)
Selain Teletype, terdapat berbagai fungsi lain yang dapat digunakan untuk mengontrol tampilan layar:
| Register AH | Nama Fungsi | Deskripsi |
| 0x00 | Set Video Mode | Mengatur resolusi layar atau beralih ke mode grafis. |
| 0x01 | Set Cursor Shape | Mengubah bentuk kursor (misal: kotak atau garis). |
| 0x02 | Set Cursor Pos | Memindahkan kursor ke koordinat baris/kolom tertentu. |
| 0x06 | Scroll Up | Menghapus area layar atau menggulung teks ke atas. |
| 0x0E | Teletype Output | Mencetak karakter dan memajukan kursor secara otomatis. |
| 0x13 | Write String | Mencetak satu blok kalimat sekaligus ke layar. |
Mengenal Mode Video (Register AL)
Saat kita menginisialisasi layar menggunakan fungsi AH = 0x00, kita harus menentukan mode video melalui register AL. Hal ini menentukan bagaimana informasi visual ditampilkan kepada pengguna.
| AL (Mode) | Tipe | Resolusi | Warna | Keterangan |
| 0x03 | Teks | 80 x 25 | 16 | Standar industri untuk konsol sistem operasi. |
| 0x12 | Grafis | 640 x 480 | 16 | Mode VGA standar untuk antarmuka grafis (GUI). |
| 0x13 | Grafis | 320 x 200 | 256 | Mode legendaris yang sering digunakan untuk game klasik. |
Implementasi Praktis: Membersihkan Layar
Sebelum menampilkan pesan selamat datang pada sistem operasi yang kita bangun, sebaiknya kita memastikan layar dalam keadaan bersih. Berikut adalah cuplikan kode Assembly untuk melakukan Clear Screen menggunakan fungsi 0x06:
Cuplikan kode
clear_screen:
mov ah, 0x06 ; Instruksi untuk Scroll Up/Clear
mov al, 0 ; AL = 0 berarti menghapus seluruh layar
mov bh, 0x07 ; Warna atribut (abu-abu di atas hitam)
mov cx, 0 ; Koordinat pojok kiri atas (0,0)
mov dx, 0x184F ; Koordinat pojok kanan bawah (Baris 24, Kolom 79)
int 0x10 ; Panggil layanan BIOS
ret
Signifikansi bagi Pengembang Sistem Operasi
Memahami fungsi BIOS ini sangat krusial karena beberapa alasan:
- Inisialisasi Standar: Fungsi
0x00memastikan layar berada pada mode teks 80×25 yang konsisten sebelum kernel mulai bekerja. - Presisi Visual: Fungsi
0x02memungkinkan pengembang untuk meletakkan teks tepat di tengah layar (center alignment) untuk estetika profesional. - Transisi Mode: Perlu diingat bahwa layanan BIOS ini hanya tersedia di Real Mode (16-bit). Ketika sistem berpindah ke Protected Mode (seperti pada kernel Linux atau XV6), akses ke BIOS akan terputus, dan pengembang harus menulis langsung ke memori fisik VGA di alamat
0xB8000.
Kesimpulan
Interaksi dengan BIOS melalui register AH dan AL adalah jembatan pertama yang harus dilalui oleh setiap arsitek sistem operasi. Meskipun terlihat sederhana, penguasaan atas interupsi video ini memberikan kontrol penuh atas apa yang dilihat pengguna pertama kali saat komputer menyala.