Mengenal Lebih Dekat Contoh Bahasa Pemrograman Assembly

ASM

Representasi visual dari struktur instruksi level rendah.

Apa Itu Assembly?

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.

Catatan Penting: Kode Assembly tidak portabel. Kode yang ditulis untuk prosesor Intel x86 tidak akan berjalan pada prosesor ARM tanpa penulisan ulang yang signifikan, karena setiap arsitektur memiliki set instruksi yang unik.

Contoh Dasar Instruksi Assembly (Arsitektur x86)

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).

1. Menetapkan Nilai ke Register

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
        

2. Melakukan Operasi Penjumlahan

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
        

3. Menghentikan Program

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
        

Mengapa Assembly Masih Relevan?

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.