Bahasa assembly merupakan bahasa tingkat rendah yang hanya mengindetifikasi register pada mikroprosesor, namun perlu kita ketahui struktur dari compiler untuk bahasa pemrograman assembly pada setiap sistem operasi agak sedikit berbeda dan kali ini, tutorial singkat untuk mencoba pemrograman bahasa assembly di linux(Ubuntu)
NASMnasm merupakan compiler untuk bahasa pemrograman assembly pada sistem operasi linux, dan perlu kita ketahui kalau di sistem operasi windows digunakan tasm (turbo assembly). berikut hal yang perlu dilakukan antara lain :
- instalasi paket nasm melalui terminal
triwanda@triwanda-laptop:~$ sudo apt-get install nasm
- setelah itu, kita buat program sederhana menggunakan aplikasi gedit, vi ,pico atau geany,ketik program berikut
global _start
section .data
hello db "Hello, World!", 10
length equ $-hello
section .text
_start:
mov eax, 4
mov ebx, 1
mov ecx, hello
mov edx, length
int 80h
xor ebx, ebx
mov eax, 1
int 80h
- setelah diketik, kemudian simpan dengan format hello.asm yang saya simpan di folder Documents, kemudian
- lakukan compile program dari source *.asm ke *.o dengan cara
triwanda@triwanda-laptop:~/Documents$ nasm -f elf hello.asm
- kemudian lakukan proses link ke objek
triwanda@triwanda-laptop:~/Documents$ ld -s -o hello hello.o
- selanjutnya kita cek program yang sudah kita compile tadi, periksa dengan
triwanda@triwanda-laptop:~/Documents$ ls -l hello*
maka terlihat seperti
-rwxr-xr-x 1 triwanda triwanda 360 2011-06-05 13:17 hello
-rw-r--r-- 1 triwanda triwanda 365 2011-06-05 13:16 hello.asm
-rw-r--r-- 1 triwanda triwanda 624 2011-06-05 13:17 hello.o
- untuk melihat hasilnya
triwanda@triwanda-laptop:~/Documents$ ./hello
Hello, World!
- selesai. Kemudian untuk melihat profil tentang nasm ketik
triwanda@triwanda-laptop:~$ man nasmBeda !?
Ada berbagai perbedaan jika kita menggunakan bahasa assembly di sistem operasi linux, antara lain :
- Dalam DOS untuk melakukan interuksi int seperti menggakhiri program menggunakan int 20h kemudian int 21h untuk menampilkan program, namun dalam kernel linux semua di lakukan pada int 80h.
- linux merupakan sistem operasi 32-bit, sehingga perlu diperpanjang register menjadi seperti EAX, EBX, ECX dan sebagainya. Dalam register 16-bit, menggunakan AX, BX, CX dll .... register.
- kemudian kelebihan dari program 32-bit, tidak perlu lagi melakukan proses segmen, karena beroperasi pada model memori flat.
- http://leto.net/code/asm/hw_assembler.php
- http://docs.cs.up.ac.za/programming/asm/derick_tut/
salam sejahtera pak triwanda..
ReplyDeletesaya mencoba saran anda untuk menginstal nasm di linux ubuntu natty saya tetapi ada tampil erorr sperti ini
hello.asm:4: error: expression syntax error
nah saya udah googling ke mbah google ko selalu expression syntak error
mohon arahannya pak karena saya masih belajar...
catatan :
instalasi nasm sukses..
ubunttu natty
mengkompail file hello.asm terjadi error