Panduan Lengkap Instruksi Assembly x86: Kosakata Dasar Arsitektur Komputer pada Mode BIOS

Kompilasi oleh : Reza Ervani bin Asmanu

Dalam dunia teknologi informasi, bahasa Assembly merupakan jembatan paling murni antara logika manusia dan sirkuit fisik prosesor. Memahami instruksi-instruksi ini berarti memahami bagaimana sebuah komputer “berpikir” dari detik pertama ia dinyalakan. Pada era BIOS (Real Mode), instruksi-instruksi ini sangat krusial dalam membangun fondasi sebuah sistem operasi.

Artikel ini menyajikan daftar lengkap instruksi Assembly x86 yang dikategorikan berdasarkan fungsi utamanya.


1. Instruksi Perpindahan Data (Data Movement)

Kategori ini mengatur bagaimana data disalin atau dipindahkan antar register, memori, dan stack.

InstruksiNamaFungsi Utama
MOVMoveMenyalin data dari sumber ke tujuan.
XCHGExchangeMenukar nilai antara dua register atau memori.
PUSH / POPPush / PopMemasukkan atau mengambil data dari Stack.
PUSHA / POPAPush/Pop AllMenyimpan/mengambil seluruh register umum sekaligus.
PUSHF / POPFPush/Pop FlagsMenyimpan atau mengambil isi register status (Flags).
LEALoad Effective AddressMenghitung alamat memori tanpa mengambil datanya.
LDS / LESLoad SegmentMengisi register segmen (DS/ES) bersamaan dengan register umum.
XLATTranslateMelakukan konversi data menggunakan tabel pencarian (lookup table).

2. Instruksi Aritmetika Binari dan Desimal

Instruksi ini menangani perhitungan matematis dasar. Arsitektur x86 memiliki instruksi khusus untuk menangani angka desimal (BCD) yang lazim pada sistem komputer klasik.

Aritmetika Binari

InstruksiFungsi
ADD / ADCPenjumlahan (dengan atau tanpa Carry).
SUB / SBBPengurangan (dengan atau tanpa Borrow).
INC / DECMenambah atau mengurangi nilai sebesar 1.
MUL / IMULPerkalian (untuk bilangan positif saja atau bertanda).
DIV / IDIVPembagian (menghasilkan hasil bagi dan sisa).
NEGMengubah tanda bilangan (positif ke negatif dan sebaliknya).

Aritmetika Desimal (Legacy/BCD)

InstruksiNamaDeskripsi
AAA / AASASCII AdjustMenyesuaikan hasil penjumlahan/pengurangan dalam format ASCII.
DAA / DASDecimal AdjustMenyesuaikan hasil dalam format Packed BCD.
AAM / AADASCII Adjust Mul/DivPenyesuaian khusus setelah operasi perkalian atau sebelum pembagian.

3. Operasi Logika dan Manipulasi Bit

Digunakan untuk melakukan operasi Boolean dan pergeseran bit yang krusial untuk efisiensi pemrograman.

InstruksiFungsi
AND / OR / XOROperasi logika standar untuk memanipulasi bit tertentu.
NOTMembalikkan semua bit (Inversi).
SHL / SHRMenggeser bit ke kiri atau kanan (Perkalian/Pembagian eksponensial).
ROL / RORMemutar posisi bit ke kiri atau kanan.
RCL / RCRMemutar bit dengan menyertakan Carry Flag.
TESTMemeriksa kondisi bit tanpa mengubah nilai register.

4. Instruksi Manipulasi String dan Memori Blok

Instruksi ini memungkinkan prosesor memproses sekumpulan data (teks atau array) dengan kecepatan sangat tinggi.

InstruksiDeskripsi
MOVSB / MOVSWMenyalin blok data (Byte atau Word) dari satu lokasi ke lokasi lain.
LODSB / LODSWMemuat data dari memori ke register AL/AX untuk diproses.
STOSB / STOSWMenyimpan data dari register ke memori (sering untuk hapus layar).
CMPSB / CMPSWMembandingkan dua blok memori karakter demi karakter.
SCASB / SCASWMencari karakter tertentu dalam sebuah blok memori.
REP / REPE / REPNEPrefiks untuk mengulang instruksi di atas secara otomatis.

5. Instruksi Alur Kendali (Control Flow)

Menentukan bagaimana program melompat, bercabang, atau menjalankan fungsi berdasarkan kondisi tertentu.

InstruksiFungsi
JMPLompatan tanpa syarat ke alamat tertentu.
JZ / JNZLompatan berdasarkan kondisi Zero Flag (Nol atau Tidak Nol).
JC / JNCLompatan berdasarkan Carry Flag (Error atau Sukses).
JA / JB / JG / JLLompatan berdasarkan perbandingan angka (Lebih besar/Lebih kecil).
CALL / RETMenjalankan prosedur (fungsi) dan kembali ke jalur utama.
LOOP / LOOPZPerulangan otomatis berdasarkan isi register CX.
INT / IRETMemanggil layanan interupsi (BIOS) dan kembali darinya.

6. Instruksi Kontrol Prosesor dan Input/Output

Instruksi tingkat rendah untuk berkomunikasi langsung dengan perangkat keras dan mengatur kondisi CPU.

InstruksiNamaDeskripsi
IN / OUTInput / OutputMengambil atau mengirim data ke port perangkat keras (misal: Disk).
CLC / STCClear/Set CarryMengatur status Carry Flag secara manual.
CLD / STDClear/Set DirectionMenentukan arah pemrosesan string (maju atau mundur).
CLI / STIClear/Set InterruptMenonaktifkan atau mengaktifkan interupsi perangkat keras.
HLTHaltMenghentikan kerja CPU hingga ada interupsi baru.
NOPNo OperationInstruksi kosong untuk memberikan jeda waktu atau penyelarasan kode.
WAITWaitSinkronisasi dengan prosesor pembantu (Coprocessor).

Kesimpulan

Seluruh instruksi di atas merupakan “bahan baku” yang digunakan untuk membangun sistem paling dasar pada komputer. Dalam pengembangan sistem operasi bergaya XV6, penguasaan atas instruksi-instruksi ini memungkinkan seorang pengembang untuk mengatur memori, menampilkan teks, dan memproses input pengguna secara presisi. Meskipun teknologi telah berkembang ke arah 64-bit, instruksi-instruksi Real Mode ini tetap menjadi titik awal sejarah yang wajib dipahami oleh setiap arsitek sistem.