Sunday, June 5, 2011

Assembler NASM pengganti TASM di linux

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)
NASM
nasm 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 nasm
Beda !?

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.
Sumber referensi :
  • http://leto.net/code/asm/hw_assembler.php

  • http://docs.cs.up.ac.za/programming/asm/derick_tut/

1 comment:

  1. salam sejahtera pak triwanda..
    saya 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

    ReplyDelete