Representasi visual dari struktur instruksi level rendah.
Bahasa pemrograman Assembly adalah representasi tingkat rendah (low-level) dari kode mesin yang dapat dieksekusi langsung oleh CPU. Berbeda dengan bahasa tingkat tinggi seperti Python atau Java yang mudah dibaca manusia, Assembly menggunakan mnemonik (singkatan mudah ingat) untuk mewakili instruksi biner yang spesifik bagi arsitektur mikroprosesor tertentu, seperti x86, ARM, atau MIPS.
Meskipun jarang digunakan untuk pengembangan aplikasi sehari-hari karena kompleksitasnya, Assembly tetap krusial untuk tugas-tugas tertentu. Kemampuan untuk mengontrol perangkat keras secara langsung, optimasi kinerja ekstrem, dan pengembangan sistem operasi atau driver perangkat lunak sangat bergantung pada pemahaman Assembly.
Untuk memberikan gambaran konkret, mari kita lihat contoh sederhana dalam sintaks yang umum digunakan dalam konteks x86 (seperti yang digunakan pada banyak PC). Tujuan dari kode ini adalah untuk menjumlahkan dua angka (5 dan 3) dan menyimpan hasilnya.
Dalam Assembly, kita bekerja dengan Register (memori kecil super cepat di dalam CPU) dan instruksi dasar seperti MOV (Move/Pindahkan) dan ADD (Add/Tambah).
Kita akan memindahkan nilai 5 ke register bernama AL (bagian bawah dari register AX) dan nilai 3 ke register BL.
; Bagian Data (Mendeklarasikan variabel, meskipun di sini kita langsung menggunakan nilai)
; Section .data
; Bagian Kode (Tempat instruksi dieksekusi)
section .text
global _start
_start:
; Pindahkan nilai 5 ke register AL
MOV AL, 5
; Pindahkan nilai 3 ke register BL
MOV BL, 3
Setelah nilai berada di register, kita dapat menggunakan instruksi ADD. Instruksi ini akan mengambil nilai dari operan kedua (BL) dan menambahkannya ke operan pertama (AL). Hasilnya akan disimpan kembali di AL.
; Tambahkan isi BL ke AL. Hasilnya disimpan di AL.
ADD AL, BL ; AL sekarang = 5 + 3 = 8
Dalam program Assembly yang berdiri sendiri (misalnya, menggunakan Linux kernel), kita perlu secara eksplisit memanggil sistem operasi untuk menghentikan eksekusi (syscall 'exit').
; Untuk keluar (Exit Syscall pada Linux x86 32-bit)
MOV EAX, 1 ; Syscall number 1 (exit)
MOV EBX, 0 ; Exit code 0 (sukses)
INT 0x80 ; Panggil kernel
Meskipun kompilator modern sangat pintar dalam mengoptimalkan kode C++ atau C menjadi instruksi mesin yang efisien, ada situasi di mana programmer perlu turun tangan langsung:
Memahami contoh bahasa pemrograman assembly membuka jendela ke cara kerja komputer yang paling mendasar. Ini bukan hanya tentang sintaks, tetapi tentang memahami bagaimana perangkat keras dan perangkat lunak berkomunikasi pada tingkat instruksi atomik.