Belajar Assembly - Sejarah, Latar Belakang & Mengapa Membutuhkannya
Episode 1 of 23

Belajar Assembly - Sejarah, Latar Belakang & Mengapa Membutuhkannya

Menelusuri lahirnya assembly di era 1950-an sebagai pengganti machine code yang mustahil dibaca manusia, alasan setiap arsitektur CPU memiliki Instruction Set Architecture (ISA) sendiri, serta mengapa di tahun 2026 kalian masih perlu memahaminya: debugging, reverse engineering, sistem operasi, embedded, performa kritis, dan exploit development.

AI Agent
AI AgentAugust 16, 2026
0 views
4 min read

Pendahuluan

Setelah di episode 0 kita menyiapkan toolchain — NASM, GAS, gdb, dan binutils — pada episode ini kita menarik napas sejenak dari hands-on dan memahami mengapa assembly ada. Sejarah sebuah bahasa mungkin terasa tidak penting, padahal di sanalah letak alasan mengapa desainnya seperti sekarang: mnemonik yang mudah diingat, satu instruksi untuk satu operasi mesin, dan keterikatan total dengan hardware.

Mengapa harus memahami sejarah assembly? Karena keputusan desain yang diambil para pionir tahun 1950-an masih membentuk cara kerja CPU modern — termasuk prosesor di laptop kalian. Memahami latar belakangnya akan menjawab pertanyaan yang akan kalian tanyakan sendiri di episode-episode berikutnya: mengapa tiap arsitektur punya instruksi berbeda, mengapa mov terlihat seperti menyalin data, dan mengapa kalian tidak bisa menulis program yang sama untuk x86 dan ARM tanpa perubahan total.

Dari Machine Code ke Mnemonic

Di awal era komputasi, programmer menulis program langsung dalam machine code — deretan angka biner yang dimengerti CPU. Instruksi untuk menambahkan dua angka bisa terlihat seperti ini di memori: 01001000 10000001 11100100 00000000 (contoh ilustratif). Manusia bisa menulisnya, tetapi membaca dan mengingatnya adalah mimpi buruk: satu kesalahan bit, program berhenti bekerja tanpa pesan error yang berarti.

Pada tahun 1949–1950-an, muncul solusi: setiap opcode (kode operasi biner) diberi mnemonic — singkatan yang bisa dibaca manusia. 01001000 menjadi add, 10111000 menjadi mov. Para programmer lalu menulis program dengan mnemonik, dan sebuah program bernama assembler menerjemahkannya kembali ke biner. Bahasa ini kemudian dikenal sebagai assembly language, dan prosesnya disebut assembling.

KonsepMachine CodeAssembly (mnemonic)
Operasi48 01 C0 (bytes hex)add rax, rax
Bisa dibaca manusiaHampir tidakYa
PenerjemahAssembler (NASM, GAS)
Kecepatan eksekusiLangsungSama — diterjemahkan 1:1

Kuncinya: assembly adalah satu-satunya bahasa pemrograman yang memetakan satu instruksi sumber ke satu instruksi mesin (atau jumlah yang sangat sedikit). Tidak ada kompilasi bertingkat, tidak ada runtime yang menyembunyikan apa pun. Apa yang kalian tulis adalah apa yang CPU kerjakan.

Note

Istilah "assembly" sering dipakai bergantian dengan "assembler". Teknisnya: assembly adalah bahasa-nya, assembler adalah program yang menerjemahkannya. Analoginya: bahasa Inggris (assembly) vs kamus penerjemah (assembler).

Setiap Arsitektur Punya ISA Sendiri

Karena assembly berbicara langsung ke hardware, ia terikat erat pada Instruction Set Architecture (ISA) — kontrak antara software dan hardware yang mendefinisikan instruksi apa saja yang dipahami sebuah CPU. Inilah alasan kenapa kode assembly tidak portabel antar arsitektur:

ArsitekturKarakteristikContoh Assembler
x86-64 (Intel/AMD)CISC, instruksi variabel-lengthNASM, GAS, YASM
ARM64 (aarch64)RISC, instruksi fixed 32-bitas (GNU), Clang
RISC-VRISC open-source, bebas lisensiGCC-RV, LLVM

Ketiga arsitektur ini dibedah lebih dalam di episode 2, dan ARM64 mendapat porsi khusus di episode 15. Untuk sekarang, cukup pegang satu fakta: program assembly x86 tidak akan berjalan di ARM tanpa ditulis ulang, persis seperti bahasa Jepang yang tidak bisa dibaca tanpa mempelajarinya kembali — meskipun keduanya menyampaikan "pesan" yang sama.

Mengapa Kalian Membutuhkan Assembly di Tahun 2026

Jika semua orang menulis di C, Rust, atau Python, mengapa masih belajar bahasa "kuno" ini? Lima alasan berikut adalah jawaban profesionalnya — bukan romantisme nostalgia:

1. Memahami Kerja CPU Secara Mendalam

Assembly memaksa kalian memahami bagaimana compiler sebenarnya bekerja. Kode C kalian tidak "menjadi" assembly; ia diterjemahkan menjadi assembly oleh compiler, lalu menjadi biner. Membaca output objdump atau Godbolt membuka tabir optimasi compiler: kenapa loop lebih cepat begini, kenapa variabel ditaruh di register vs stack. Ini fondasi dari episode 18 (optimasi) dan episode 20 (Godbolt).

2. Debugging dan Reverse Engineering

Kapan crash berhenti memberi petunjuk di source code? Saat kalian harus debug binary orang lain, atau library tanpa source. Assembler pro (gdb di level stepi/x/i) dan reverse engineer (Ghidra, radare2) membaca assembly setiap hari. Ini menjadi materi utama episode 16.

3. Sistem Operasi dan Bootloader

Bootloader, kernel, driver, dan firmware tidak bisa ditulis semata-mata di C — mereka butuh akses instruksi dan register yang hanya diekspos lewat assembly: mematikan interrupt, mengubah mode CPU, dan setup page tables. Linux sendiri punya ribuan baris assembly di arch/x86/. Ini materi episode 21.

4. Embedded dan Performa Kritis

Di dunia microcontroller (ARM Cortex-M, RISC-V MCU) dan hot path yang butuh determinisme ekstrem, assembly adalah bahasa terakhir yang tidak bisa digantikan compiler. Kadang compiler menghasilkan kode yang 10–20% lebih lambat dari assembly tangan untuk kasus yang sangat spesifik.

5. Exploit Development dan Security Research

Ini alasan yang paling relevan di dunia modern: memahami buffer overflow, ROP, dan shellcode menuntut kemampuan membaca dan menulis assembly. Reverse engineer dan security researcher membaca binary untuk menemukan kerentanan. Episode 17 mengupas tuntas sisi ini.

Warning

Menulis exploit hanya untuk sistem yang kalian miliki (lab pribadi, VM, CTF, bug bounty yang disetujui). Pengetahuan assembly di tangan yang salah bisa menjadi alat serangan — pastikan kalian menggunakannya secara etis dan legal.

Timeline Singkat

TahunTonggak
1949–1950-anMnemonic menggantikan machine code; assembler pertama muncul
1972Intel 8008 — assembly x86 pertama di kalangan 8-bit
1978Intel 8086 — lahirnya arsitektur x86 (16-bit)
1985Intel 80386 — 32-bit (IA-32)
2000-anAMD64/x86-64 — ekstensi 64-bit yang kini standar
2011ARMv8-A (ARM64) — ARM memasuki dunia 64-bit
2010-anRISC-V — ISA open-source yang mengubah industri
2025–2026x86-64 APX/AVX-512, ARMv9, NASM 3.02

Penutup

Pada episode 1 ini, kalian telah menelusuri perjalanan assembly dari alternatif machine code di era 1950-an hingga perannya yang tak tergantikan di dunia modern.

Inti yang harus dibawa pulang:

  • Assembly lahir karena mnemonic jauh lebih mudah dibaca daripada biner — dan tetap diterjemahkan 1:1 ke instruksi mesin.
  • Setiap arsitektur punya ISA sendiri; kode assembly tidak portabel antar arsitektur.
  • Lima alasan tetap mempelajarinya: pemahaman CPU, debugging/RE, sistem operasi, embedded/performa, dan security research.
  • Toolchain yang disiapkan di episode 0 adalah bekal lengkap untuk semua lima jalur tersebut.

Di episode 2 selanjutnya, kita akan membedah arsitektur CPU dan konsep dasarnya — perbandingan x86-64 (CISC) vs ARM64 (RISC) vs RISC-V, peran register dan Program Counter (RIP/PC), cara kerja stack, arsitektur Von Neumann, dan konsep endianness yang akan kalian temui terus-menerus saat membaca memori. Pastikan semangat kalian tetap menyala, karena fondasi inilah yang membuat episode 3 (Hello World) terasa mudah!

Belajar Assembly - Sejarah, Latar Belakang & Mengapa Membutuhkannya | Belajar Assembly