Membuat Program Sederhana Dengan Bahasa Assembler ( Bahasa mesin )

Banyak sekali bahasa pemograman yang digunakan oleh seorang programer untuk menciptakan sebuah program diantara nya bahasa pemograman Visual Basic  , Php , Java , Turbo pascal , C++ dan banyak lagi bahasa pemograman .  Salah satunya bahasa mesin yang disebut ( assembler ) . Program ini biasanya  dibuat dengan menggunakan aplikasi seperti Flat Assembler atau langsung dari CMD yang memang sudah ada dalam sistem operasi Windows kali ini saya akan mencoba membuat sebuah program sederhana dengan menggunakan command yang disediakan oleh windows.

Baiklah langsung saja kita coba langkah –langkah dalam pembuatan program sederhana menggunakan bahasa assembly atau yang sering disebut bahasa mesin.

Langkah 1

Klik tombol START pada windows kemudian cari Run lalu ketikan pada kolom pengisian yang ada pada Run seperti gambar dibawah ini ,  kemudian klik OKE atau takan Enter pada keyboard.

Langkah 2

Setelah muncul tampilan seperti dibawah , langsung saja ketikan debug.

org         100h

jmp        mulai

tampilan              db '', 13,10

db '                                                   _________________ ', 13,10

db '                                                   by:SURIADI     ', 13,10

db '         Oo===================== MENU UTAMA =======================oO', 13,10

db '         ||                                                        ||', 13,10

db '         ||   1) Menghapus Layar                                   ||', 13,10

db '         ||   2) Menampilkan Urutan Abjad AAABBC                   ||', 13,10

db '         ||   3) Mengalikan Bilangan 2 dan 2                       ||', 13,10

db '         ||   4) Menampilkan Biodata Anda                          ||', 13,10

db '         ||   5) Selesai                                           ||', 13,10

db '         ||                                                        ||', 13,10

db '         ||                                                        ||', 13,10

db '         ||                                                        ||', 13,10

db '         Oo========================================================oO', 13,10

db '                         Pilihan Anda [1...5]:$'

mulai:                    mov       ah, 09h        ; service number 09h untuk mencetak string

mov       dx, tampilan   ; mengisi data string

int           21h                ; menampilkan di monitor

;aksi input pilihan menu oleh user

pilih:                      mov       ah,07h         ; service number 07h untuk input karakter

int           21h                ; menampilkan

cmp       al,'1'              ; bandingkan input dengan karakter '1'

je            hapuslayar     ; jika sama lompat ke prosedur hapuslayar

cmp       al,'2'              ; bandingkan input dengan karakter '2'

je            urutanabjad    ; jika sama lompat ke prosedur urutanabjad

cmp       al,'3'              ; bandingkan input dengan karakter '3'

je            perkalian42    ; jika sama lompat ke prosedur perkalian42

cmp       al,'4'              ; bandingkan input dengan karakter '4'

je            tampilbiodata  ; jika sama lompat ke prosedur tampilbiodata

cmp       al,'5'              ; bandingkan input dengan karakter '7'

je            keluar          ; jika sama lompat ke prosedur keluar

call          kembali        ; panggil prosedur kembali

;Untuk mengosongkan layar

kosonglayar:      mov       ah,07h         ; service number 07h untuk menghapus layar ke bawah

mov       al,00h           ; hapus semua baris

mov       bh,71h         ; tampilkan warna background putih tulisan biru

mov       ch,00h          ; Baris batas atas 0

mov       cl,00h           ; Kolom batas atas 0

mov       dh,0ffh        ; baris batas bawah off

mov       dl,0ffh        ; kolom batas bawah off

int           10h                ; Menjalankan interupt 10h

ret

kursor: mov       ah,02h         ; Service number 02h (untuk menentukan posisi kursor)

mov       dh,00h         ; Nilai baris posisi kursor (baris 0)

mov       dl,00h           ; Nilai kolom posisi kursor (kolom 0)

mov       bh,00h         ; Nilai nomor halaman layar (halaman 0)

int           10h                ; Inisialisasi bentuk dan posisi kursor saat itu

ret

hapuslayar :        call          kosonglayar    ; kosongkan layar

call          kursor          ; letakkan kursor di awal

mov       ah,07h         ; servis input

int           21h                ; tampilkan

call          kembali        ; kembali ke menu

komenhuruf      db           '',13,10

db           '',13,10

db           'Pencetakan karakter membentuk string AAABBC menggunakan program looping .....',13,10

db           '',13,10

db           '$',13,10

urutanabjad:      call          kosonglayar    ; kosongkan layar

call          kursor          ; letakkan kursor di awal

mov       ah, 09h        ; servis 09h menampilkan string

mov       dx, komenhuruf ; ambil data string komenhuruf

int           21h                ; tampilkan

mov       cx,03h          ; pengulangan 3 kali

mov       bl,04h           ; nilai awal bl = 04

mov       dl,40h           ; masukkan nilai 40 ke reg dl

ulang1:                 dec         bl                   ; kurangi dl dengan 1

push      bx                  ; simpan bx ke stack

inc          dl                   ; tambah dl dengan 1

ulang2:                 dec         bl                   ; kurangi bl dengan 1

mov       ah,02h         ; beri nilai ah dengan service 02h - pencetakan karakter

int           21h                ; tampilkan

jne         ulang2          ; lompat ke ulang2

pop        bx                  ; ambil nilai bx dari stack

loop       ulang1          ; kebali ke baris ulang1

mov       ah,07h         ; servis input

int           21h                ; tampilkan

call          kembali        ; kembali ke menu

komenkali           db           '',13,10

db           '',13,10

db           'Perkalian antara bilangan 2 dan 2 menggunakan Assembler.',13,10

db           'Hasilnya adalah ....',13,10

db           '',13,10

db           '$',13,10

perkalian42: call kosonglayar    ; kosongkan layar

call kursor ; panggil kursor ke awal halaman

mov ah, 09h  ; servis pencerakan string

mov dx, komenkali  ; ambil data string di komenkali

int 21h ; tampilkan

mov bl,02h ; nilai bl = 04

mov al,02h ; nilai al = 02

mul bl ; kalikan nilai bl dengan al

mov dl,al ; masukkan nilai al ke dl untuk dicetak

add dl,30h ; tambahkan nilai dl dengan 30

mov       ah,02h         ; servis pencetakan karakter

int           21h                ; tampilkan

mov       ah,07h         ; servis input

int           21h                ; tampilkan

call          kembali        ; kembali ke menu

komengenap     db           '',13,10

db '',13,10

db 'Bilangan genap antara 0 sampai dengan 8 adalah.....',13,10

db ',13,10

db '$',13,10

bilgenap08:

call          kosonglayar    ; kosongkan layar

call          kursor          ; letakkan kursor di awal halaman

mov       ah, 09h        ; servis 09h pencetakan string

mov       dx, komengenap ; ambil data string dari komengenap

int           21h                ; tampilkan

mov       cx,05h          ; pengulangan 5 kali

mov       ah,02h         ; servis pencetakan karakter

mov       dl,30h           ; masukkan nilai 30h ke dl

a: int 21h                ; tampilkan

add        dl,02h           ; tambah dl dengan 2

loop       a                     ; lompat ke baris a sebanyak pengulangan

mov       ah,07h         ; servis input

int           21h                ; tampilkan

call          kembali        ; kembali ke menu

; berikut adalah data yang akan ditampilkan pada menu Biodata

biodata:               db           '      ___________________________________________________________________',13,10

db '      //=========================== BIODATA ============================\\',13,10

db '      ||                                                                ||',13,10

db           '      ||    Nama       : suriadi                                        ||',13,10

db           '      ||    Alamat     : Jl. KH. Ahmad Dahlan No.81 Pekanbaru           ||',13,10

db           '      ||    Umur       : 20 tahun                                       ||',13,10

db           '      ||    Pekerjaan  : mahasiswa                                      ||',13,10

db           '      ||    Hobi       : berenang                                       ||',13,10

db           '      ||    email      : adie putra [email protected]                        ||',13,10

db           '      ||    Website    : maz adie.blogspot.com                          ||',13,10

db           '      ||                                                                ||',13,10

db           '      Oo================================================================oO$',13,10

tampilbiodata:   call          kosonglayar    ; kosongkan layar

call kursor ; letakkan kursor di awal

mov dx,biodata  ; ambil data string dari biodata

mov  ah,09h ; servis 09h untuk pencetakan string

int 21h ; tampilkan

mov  ah,07h ; servis input

int 21h ; tampilkan

call kembali  ; kembali ke menu

keluar: int 20h ; program selesai

kembali : call kosonglayar    ; kosongkan layar

call  kursor  ; letakkan kursor di awal

jmp mulai ; lompat ke prosedur mulai (menampilkan menu)

Setelah kode diatas dimasukan kedalam Cmd maka bila dijalankan akan muncul tampilan seperti dibawah ini

Tampilan program setelah dieksekusi:

Jika di tekan angka 1 (satu ) pada keyboard maka program akan merespon dan menghapus layar atau menghapus layar pada Cmd seperti tampilan dibawah ini  .

Langkah 3

Untuk kembali kemenu semula tekan angka 1 (satu ) maka program akan menu awal kemudian jika anda ingin mengeksekusi perintah yang kedua yankni menampilkan percetakan karakter membentuk string AAABBC menggunakan program looping atau pengulangan maka tekan angka 2 (Dua )pada keyboard dan akan muncul tampilan seperti dibawah ini.

Untuk kembali kemenu awal tekan satu pada keyboard setelah itu lakukan eksekusi berikutnya dengan menekan angka  3 ( tiga ) pada keyboard maka program akan merespon seperti tampilan dibawah ini yakni perkalian antara bilangan 2 dan 2.

Langkah 4

Setelah itu seperti biasa jika kita akan kembali ke menu awal maka kita tekan angka 1 (satu ) pada keyboard dan untuk menampilkan biodata kita seperti dibawah ini maa kita harus menekan tombol 4 (empat ) pada keyboard maka program akan langsung mengeksekusi dengan menampilkan tampilan seperti dibawah ini.

Dari program ini maka kita harus tekan tombol 5 ( lima ) pada keyboard maka program langsung keluar atau logout.

Sekian tutorial dari saya semoga dapat bermanfaat!. Mungkin dari tutorial diatas yang tadi nya hanya ingin belajar pemograman yang berbasiskan visual maka dengan adanya tutorial di atas maka anda ingin mencoba bahasa pemograman yang berbasiskan bahasa mesin atau assembler dan saya harap anda dapat  mengembangkannya lebih dari tutorial diatas .

Suriadi

Suriadi adalah seorang instruktur pengajar di PalComTech Pekanbaru, materi yang diajarkan adalah aplikasi web

12 comments

  1. weks…baso mesin coy…

    bravo..bravo…la lamo kami dak maen baso mesin ini…

    apo nian fungsi mov, int…scaro maen asembler waktu kuliah gabung dengan qbasic

    weh padek…

    • heheheh makasih maz udah mau baca article saya ….sebenernya saya juga masih newbie ne maz tapi biar saya jawab pertanyaan maz Raiz ..begini maz Perintah mov berfungsi untuk mengisi, memindahkan, memperbaharui isi suatu register, variabel ataupun suatu lokasi memori.lebih lengkap nya lihat jha maz kode program di atas ..udah saya kasih keterangan nya kok…..heheh makasih….

      • bang, gimana cara compileny jka pake tasm muncul bbrapa erro,
        trus klo mau langsung pake debug gmana, mesti harus ketik 200an bris programnya ?

  2. mantep ….tep……te…p……..
    biar ku coba dulu gan

  3. ane nyoba kok malah jadi eror gan…

  4. Nice share, thank you. I’m in 2nd semester of Informatics degree, still newbie and have to learn more.

  5. gan…pengetikan listing code na gimana bang…trus eksekusi na apa cuman dengan tekan enter aja ya…kasih pencerahannya dong bang…

  6. bisa di kirimin gak master program nha lewat email,,,?
    makasih

  7. akhmad zaenudin

    terimaksh informasinya,mengingatkan sy ,dulu pernah belajar,tapi udah agk lupa lupa.mhn arahannya ya nanti akan tak pelajari lagi mas

Leave a Reply

Your email address will not be published. Required fields are marked *

*

[+] kaskus emoticons nartzco

This site uses Akismet to reduce spam. Learn how your comment data is processed.


Yuk kita share...