Mengenal Wilayah Kekuasaan: Spesifikasi dan Batasan Kode Assembly dalam Pengembangan OS

Dalam mempelajari pemrograman tingkat rendah (low-level programming), satu hal yang harus dipahami oleh setiap pengembang adalah bahwa kode Assembly tidaklah bersifat universal. Kode yang bekerja pada satu mesin belum tentu dapat berjalan di mesin lainnya. Artikel ini akan membedah kekhususan dan batasan dari instruksi Assembly yang kita gunakan dalam pembuatan bootloader, agar kita memiliki peta yang jelas mengenai “wilayah kekuasaan” kode tersebut.


1. Kekhususan Arsitektur: Keluarga x86 (Intel & AMD)

Instruksi yang kita gunakan, seperti MOV, LODSB, dan INT, merupakan bagian dari Instruction Set Architecture (ISA) milik keluarga x86.

  • Cakupan: Kode ini hanya berlaku untuk prosesor yang diproduksi oleh Intel atau AMD (seperti seri Core i, Ryzen, atau Pentium).
  • Inkompatibilitas: Kode ini tidak akan berjalan pada perangkat dengan arsitektur ARM (seperti iPhone, ponsel Android, atau MacBook dengan chip M1/M2/M3). Arsitektur ARM memiliki bahasa rakitan yang berbeda total, di mana instruksi seperti LODSB tidak dikenal sama sekali.

2. Kekhususan Mode: 16-bit Real Mode

Meskipun komputer modern saat ini memiliki kekuatan 64-bit, setiap kali tombol daya ditekan, CPU memulai hidupnya dalam sebuah mode “nostalgia” yang disebut 16-bit Real Mode.

  • Legacy Behavior: Dalam mode ini, CPU canggih kita berpura-pura menjadi prosesor Intel 8086 keluaran tahun 1978. Inilah alasan mengapa kita menggunakan register 16-bit seperti AX, BX, dan CX.
  • Segmentasi Memori: Di dalam mode ini, kita menggunakan sistem pengalamatan tersegmentasi dengan rumus:$$Physical\ Address = (Segment \times 16) + Offset$$
  • Batasan RAM: Kita hanya memiliki akses langsung ke RAM sebesar 1 MB. Di luar kapasitas tersebut, CPU memerlukan konfigurasi tambahan yang jauh lebih rumit (seperti masuk ke Protected Mode atau Long Mode).

3. Kekhususan Layanan: BIOS (Basic Input/Output System)

Instruksi yang menggunakan awalan INT (seperti int 0x10 untuk video atau int 0x13 untuk disk) adalah perintah untuk memanggil layanan BIOS.

  • Firmware Bergantung: Kode kita sangat bergantung pada keberadaan Legacy BIOS. BIOS menyediakan “perpustakaan fungsi” dasar yang sudah tertanam di motherboard untuk membantu kita mencetak teks atau membaca sektor hard drive.
  • Era Modern (UEFI): Perlu dicatat bahwa komputer keluaran terbaru kini menggunakan UEFI sebagai pengganti BIOS. Di dalam sistem UEFI murni, interupsi BIOS (INT) tidak lagi didukung. Pengembang sistem operasi modern harus menggunakan “Protokol UEFI” yang berbasis bahasa C untuk melakukan hal yang sama.

4. Kekhususan Lingkungan: Bare Metal

Hal terpenting yang membedakan kode ini dengan pemrograman biasa adalah lingkungannya yang bersifat Bare Metal.

  • Tanpa Perantara: Kode kita berjalan langsung di atas perangkat keras tanpa adanya lapisan Sistem Operasi (seperti Windows atau Linux).
  • Kedaulatan Penuh: Di sini, kita memiliki kendali penuh. Tidak ada perlindungan memori atau batasan hak akses. Namun, ini juga berarti satu kesalahan kecil dalam penulisan alamat memori dapat menyebabkan seluruh sistem berhenti bekerja (crash) secara instan.

Ringkasan Spesifikasi Teknis

Berikut adalah tabel referensi cepat mengenai karakteristik kode yang kita pelajari:

KomponenSpesifikasi Wilayah
Arsitektur CPUx86 (Intel, AMD, VIA)
Mode Operasi16-bit Real Mode
Batas Memori1 Megabyte
Penyedia LayananLegacy BIOS
Target EksekusiSektor Boot (MBR)

Kesimpulan

Meskipun kode Assembly 16-bit ini terlihat kuno dan sangat spesifik, mempelajarinya adalah fondasi fundamental. Setiap sistem operasi modern, mulai dari Windows 11 hingga Linux Kernel terbaru, tetap harus melewati fase 16-bit ini selama beberapa milidetik saat proses booting berlangsung. Memahami batasan ini bukan hanya tentang belajar sejarah, melainkan tentang memahami cara kerja jantung komputer dari titik nol.