Last Updated on 14 years by Mas Herdi
Sebagai seorang programmer, pasti kita semua setidaknya pernah mendengar kata “Assembly” dan mungkin juga meresa takut atau ngeri dengan istilah itu. Karena seperti yang banyak orang bicarakan bahasa Assembly adalah bahasa tingkat rendah yang berhubungan langsung dengan mesin, dan mempunyai syntax yang tidak begitu user friendly.
Pemrograman dalam Assembly mungkin kedengaran sedikit asing, dan membuat seluruh program dalam bahasa Assembly juga kedengarannya tidak masuk akal. Khususnya di masa sekarang ini dimana sudah banyak compiler yang begitu interaktif dan bahasa pemrograman yang bisa mendesain lay-out secara visual dengan mudah, yang bisa melakukan hampir semuanya untukmu.
Bagaimanapun juga, adalah sebuah keuntungan bila kamu mengerti lebih jauh tentang proses kerja dalam prosesor dan kernel, dan tentunya assembly adalah cara yang baik untuk mempelajari itu. Assembly juga bisa dikombinasikan ke dalam C/C++. Dan jika programmu benar-benar memerlukan kecepatan ekstra, kamu bisa tweak dan mengoptimisasi ulang Assembly yang ada pada compiler-mu (tentunya jika kamu adalah programmer elite 🙂 ).
Kali ini saya akan membahas beberapa bahasa pemrograman Assembly, atau biasa disebut assembler yang ada pada Linux. Pada default-nya, hampir semua Linux sudah otomatis terinstall dengan assembler bawaannya, berekstensi as dan as86 yang termasuk dalam GNU Projects sehinggan biasa dinamakan GAS atau GNU Assembler, biarpun begitu saya lebih memilih menggunakan NASM, Netwide Assembler yang menggunakan Intel syntax yang sudah familiar, portable (ada di sistem operasi Linux, Unix dan DOS), mempunyai banyak fitur yang bagus dan tentunya GRATIS.
Untuk menginstallnya, lakukan langkah-langkah berikut ini, cukup simpel :
DEBIAN
- Buka terminal
- Ketikkan
sudo apt-get install nasm
dan klik Enter, pastikan komputer Anda terkoneksi ke Internet.
RED HAT
- Buka terminal
- Ketikkan
sudo urpmi nasm
dan klik Enter, pastikan komputer Anda terkoneksi ke Internet.
Perbedaan Utama Antara DOS dan Linux Assembly
- Dalam DOS assembly, kebanyakan hal diselesaikan dengan services interrupt
int 20h
dan BIOS Service interrupts seperti
int 10h
dan
int 16h
Pada Linux, semua fungsi ini dihandel oleh kernel. Semua diselesaikan hanya memakai kernel system calls dan kamu memanggil kernel dengan
int 80h
Salah satu hal yang ajaib pada Linux system calls adalah jumlahnya lebih sedikit (sekitar 190) dibandingkan dengan DOS, tetapi mereka jauh lebih praktis. Linux system calls dapat membuat berbagai file, menghandel beragam proses dan banyak kegunaan lainnya.
- Linux adalah benar benar sistem operasi 32 bit terproteksi (32-bit protected mode operating system) jadi hal ini memudahkan kita untuk melakukan 32-bit assembly secara “real” dan lebih “update”. 32-bit kode ini berjalan di flat memory modes, yang secara umum berarti kamu tidak usah khawatir tentang segment. Ini membuat semuanya lebih mudah karena kita tidak akan pernah melakukan pengesampingan (override) segmentatau memodifikasi suatu segment register
- Dalam 32-bit assembly yang merupakan pengembangan dari 32-bit register, kita akan menggunakan EAX, EBX, ECX dan sebagainya disamping menggunakan standar 16-bit registers AX, BX, CX dan semacamnya
Beikutnya, tentang Bagian bagian dari suatu Program Assembly.