Apa itu Assembly?
Bahasa Assembly (sering disingkat ASM) adalah bahasa pemrograman tingkat rendah yang dirancang untuk arsitektur komputer tertentu. Berbeda dengan bahasa tingkat tinggi (seperti Python atau Java), kode Assembly memiliki hubungan satu-ke-satu dengan instruksi bahasa mesin prosesor. Ini berarti Assembly memberikan kontrol presisi atas perangkat keras, tetapi juga lebih sulit untuk ditulis dan tidak portabel (kode untuk prosesor Intel tidak akan berjalan di prosesor ARM tanpa modifikasi).
Assembly sering digunakan dalam pengembangan sistem operasi, driver perangkat keras, sistem tertanam (embedded systems), dan untuk optimasi performa yang ekstrem.
Konsep & Sintaks Kunci
Sintaks Assembly terdiri dari instruksi-instruksi pendek yang disebut mnemonics. Setiap instruksi melakukan operasi yang sangat spesifik, seperti memindahkan data antar memori dan register, melakukan operasi aritmatika, atau mengubah alur eksekusi.
Register
Register adalah lokasi penyimpanan kecil dan sangat cepat di dalam
CPU. Operasi Assembly sebagian besar bekerja dengan memanipulasi
data di dalam register-register ini. Contoh register umum pada
arsitektur x86 adalah EAX, EBX,
ECX, EDX.
Instruksi Dasar (Sintaks Intel)
Berikut adalah beberapa instruksi dasar yang umum ditemukan dalam Assembly untuk arsitektur x86.
Instruksi MOV (Move):
Menyalin data dari sumber ke tujuan. Ini adalah salah satu instruksi yang paling sering digunakan.
; Pindahkan nilai 5 ke dalam register EAX
MOV EAX, 5
Instruksi ADD (Add):
Menambahkan dua nilai dan menyimpan hasilnya.
MOV EAX, 10 ; EAX sekarang berisi 10
MOV EBX, 5 ; EBX sekarang berisi 5
ADD EAX, EBX ; Tambahkan nilai EBX ke EAX. Hasilnya (15) disimpan di EAX.
Instruksi JMP (Jump):
Mengubah alur eksekusi program ke lokasi (label) lain tanpa syarat.
START:
MOV EAX, 1
JMP END_PROGRAM
; Kode di sini akan dilewati
MOV EBX, 2
END_PROGRAM:
; Program akan lanjut dari sini
Instruksi Kondisional: CMP dan JE
CMP (Compare) membandingkan dua nilai.
JE (Jump if Equal) akan melompat ke label jika hasil
perbandingan sebelumnya sama.
MOV EAX, 10
CMP EAX, 10 ; Bandingkan nilai di EAX dengan 10
JE SAMA ; Jika sama, lompat ke label SAMA
; ... kode jika tidak sama ...
JMP SELESAI
SAMA:
; ... kode jika sama ...
SELESAI:
; ... akhir program ...