STUDI KASUS PROGRAM
ASSEMBLER
MENGGUNAKAN
APLIKASI EMU8086
Disusun untuk memenuhi salah satu tugas mata kuliah Organisasi dan Arsitektur Komputer
Dosen:
EKO BUDI SETIAWAN, S.KOM., M.T.
Disusun Oleh :
IQBAL SYARIFUDIN LUTFIE 10115055
FAKULTAS TEKNIK DAN ILMU KOMPUTER
JURUSAN TEKNIK INFORMATIKA
UNIVERSITAR KOMPUTER INDONESIA
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang Maha Esa atas segala rahmat-Nya sehingga makalah ini dapat tersusun hingga selesai . Tidak lupa penyusun juga mengucapkan banyak terimakasih atas bantuan dari pihak yang telah berkontribusi dengan memberikan sumbangan baik materi maupun pikirannya.
Besar harapan semoga makalah ini dapat menambah pengetahuan dan pengalaman bagi para pembaca, Untuk ke depannya dapat memperbaiki bentuk maupun menambah isi makalah agar menjadi lebih baik lagi.
Karena keterbatasan pengetahuan maupun pengalaman, Penyusun yakin masih banyak kekurangan dalam makalah ini, Oleh karena itu kami sangat mengharapkan saran dan kritik yang membangun dari pembaca demi kesempurnaan makalah ini.
Bandung, Januari 2017
Penyusun
Hal
KATA PENGANTAR ... i
DAFTAR ISI ... ii
DAFTAR GAMBAR ... iii
BAB I PENDAHULUAN 1.1 Latar Belakang ... 1
1.2 Perumusan Masalah ... 1
1.3 Manfaat ... 2
BAB II PEMBAHASAN 2.1 Assembly dan Eksekusi Program ... 3
2.2 Studi Kasus ... 4
2.2.1 Menampilkan Nim dan Nama ... 4
1 Source Code ... 4
2 Keterangan ... 4
3 Tampilan Layar ... 6
2.2.2 Penjumlahan Dua Bilangan ... 6
1 Source Code ... 6
2 Keterangan ... 8
3 Tampilan Layar ... 12
BAB III PENUTUP 3.1 Kesimpulan ... 13
DAFTAR PUSTAKA ... iv
DAFTAR GAMBAR
Hal
Gambar 2.1 Tampilan layar studi kasus : menampilkan nim dan nama ... 6 Gambar 2.2 Tampilan layar studi kasus : menghitung dua buah bilangan dari empat
angka belakang NIM ... 12
PENDAHULUAN
1.1 Latar Belakang
Bahasa pemrograman assembly adalah bahasa pemrograman dasar yang pertamadikenal untuk menghubungkan programmer dengan mesin. Sifatnya yang mendekati bahasamesin memberikan keistimewaan tersendiri, yaitu kecepatan akses. secara umum, semakindekat bahasa pemrograman dengan mesin, semakin tinggi pula kecepatannya. Pemrograman bahasa assembly menawarkan kelebihan ini. Walaupun saat ini sudah banyak bahasa pemrograman tingkat tinggi (high level language), bahasa pemrograman assembly masih tetap banyak digunakan. Makalah ini membahas bahasa pemrograman assembly dari sesuai aplikasinya (studi kasus).
1.2 Perumusan Masalah
Berdasarkan latar belakang yang telah dipaparkan di atas, dapat dirumuskan masalah sebagai berikut :
1. Mengenal dan memahami fungsi dasar dalam Bahasa Assembly. 2. Mengerti dan memahami jalannya program dalam Bahasa Assembly. 3. Studi Kasus Program Assembler
2
1.3 Manfaat
1. Dapat menambah wawasan dan ilmu tentang Bahasa pemrograman Assembly.
BAB II
PEMBAHASAN
2.1 Assembly dan Eksekusi Program
Source program yang ditulis dalam bahasa assembly harus diassemble menjadi object program bahasa mesin sebelum dapat dieksekusi. Hal ini dilakukan oleh program assembler, yang mengganti semua simbol untuk mode operasi dan penggalamatan dengan kode biner yang digunakaa dalam instruksi mesin, dan mengganti semua nama dan label dengan nilai sebenarnya.
Assembler menetapkan alamat untuk instruksi dan blok data, mulai dari alamat yang ada dalam asembler directive ORIGIN. Juga menyisipkan konstanta yang dapat dinyatakan dalam perintah DATAWORD dan ruang memori cadangan sebagaimana yang diminta oleh perintah RESERVE. Bagian utama proses assembly menetapkan nilainilai untuk menggantikan namanama tersebut. Pada beberapa kasus, dimana nilai suatu nama ditetapkan oleh directive EQU, maka ini merupakan tugas langsung. Pada kasus lain, dimana suatu nama didefinisikan dalam field Label suatu instruksi, maka nilai yang diwakili nama ini ditentukan dengan lokasi instruksi ini dalam object program terassemble. Karenanya, assembler barns mencatat alamatalamat yang menghasilkan kode mesin untuk instruksi yang berurutan. Misalnya, nama START dan LOOP masingmasing akan menetapkan nilai 100 dan 112.
4
2.2 Studi Kasus
Sesuai tugas yang diberikan oleh dosen yang bersangkutan untuk pembuatan sebuah program dalam Bahasa Assembly penyusun akan menjelaskan tentang apa yang ada dalam program yang telah dibuat.
2.2.1 Menampilkan Nim dan Nama 1. Source Code
ret ; return to operating system.
jmp start - Perintah ini digunakan untuk melompat menuju
tempat yang ditunjukkan oleh perintah JUMP. Dimana dalam studi kasus ini digunakan untuk melompat menuju “start”.
msg db "10115055 - Iqbal Syarifudin Lutfie $" – db
merupakan salah satu tipe variabel , kepanjangan dari Define Byte . msg merupakan nama suatu variabel, terdiri dari kombinasi dari
alphanumerik, diawali dengan huruf. Mungkin juga tidak bernama (maka hanya punya alamat saja). "10115055 - Iqbal Syarifudin Lutfie $" merupakan suatu value (nilai) dari
variabel msg tersebut, yaitu berupa nilai numeric yang didukung
oleh system nilai(hexadecimal, binary, atau decimal), atau simbol "?" untuk variable yang tidak diinisialisasikan.
start - Bagian dari struktur program untuk membantu proses
berjalannya suatu program.
mov - Perintah mengutip operan ke dua (source) ke operand
pertama (destination).
mov dx,offset msg - Perintah memindahkan offset menuju
lokasi dx.
6
3. Tampilan Layar
Gambar 2.1 Tampilan layar studi kasus : menampilkan nim dan nama
2.2.2 Penjumlahan Dua Bilangan 1. Source Code
INCLUDE 'emu8086.inc'
name 'penjumlahan dua bilangan' org 100h
JMP mulai
psn1 DB "Menu Penjumlahan",13,10,'$'
psn2 DB "================",13,10,13,10,'$' psn3 DB "Masukan Bilangan 1 : 50 $"
8
INCLUDE 'emu8086.inc' - Perintah memanggil fungsi/library
untuk di gunakan pada sebuah program, dengan nama file yang di panggila adalah ‘emu8086.inc’, file ‘emu8086.inc’
sebelumnya sudah berada dalam folder inc .
name – Perintah ini untuk memasukkan nama program setelah
program dibuat.
org 100h - Perintah ini digunakan untuk memberitahukan
JMP mulai - Perintah ini digunakan untuk melompat menuju
tempat yang ditunjukkan oleh perintah JUMP. Dimana dalam studi kasus ini digunakan untuk melompat menuju “mulai”.
psn1 DB "Menu Penjumlahan",13,10,'$'
psn2 DB "================",13,10,13,10,'$'
psn3 DB "Masukan Bilangan 1 : 50 $"
psn4 DB "Masukan Bilangan 2 : 55 $"
psnhasil DB "Hasilnya adalah : $"
- db merupakan salah satu tipe variabel , kepanjangan dari
Define Byte .
variabel psn1, "================",13,10,13,10,'$' merupakan nilai dari variabel psn2, "Masukan
Bilangan 1 : 50 $" merupakan nilai dari variabel psn3, "Masukan Bilangan 2 : 55 $" merupakan nilai dari
variabel psn4,"Hasilnya adalah : $" merupakan nilai
dari psnhasil.
dw - dw merupakan salah satu tipe variabel , kepanjangan dari
Define Word .
10
bil2 DW 55 – Perintah menyisipkan nilai 50 ke dalam variabel bil2
hasil DW ? – symbol ? untuk memberitahukan bahwa variabel
hasil nilainya tidak diinisialisasikan
lea dx, psn1 mov ah, 9 int 21h
- lea dx, psn1 - Perintah untuk mengambil alamat efektif
dari variabel psn1
- mov ah, 9 - Perintah untuk cetak kalimat
- int 21h - Perintah cetak ke layar lea dx, psn2
lea dx, psn2 - Perintah untuk mengambil alamat efektif dari
variabel psn2 lea dx, psn3
lea dx, psn3 - Perintah untuk mengambil alamat efektif dari
variabel psn3
PUTC 13 PUTC 10
PUTC - digunakan untuk mencetak sebuah karakter ASCII pada
posisi kursor
lea dx, psn4
lea dx, psn4 - Perintah untuk mengambil alamat efektif dari
variabel psn4
mov bx,bil2 - Perintah memindahkan variabel bil2 ke alamat bx
add ax,bx - menambah operand ke dua bx ke operand pertama ax.
push ax – Perintah menyimpan nilai dalam alamat ax dalam
stack .
lea dx, psnhasil - Perintah untuk mengambil alamat efektif
dari variabel psnhasil
pop ax – Perintah mengambil nilai dalam alamat ax dalam
stack
mov hasil, ax – Perintah memindahkan nilai dari alamat ax ke
variabel hasil. call PRINT_NUM
- call – Digunakan untuk memanggil prosedur , dimana disini
yang di panggil adalah prosedur “PRINT_NUM”.
- PRINT_NUM - Prosedur mencetak angka signed dalam register ax.
mov ah,0 int 16h
- Memberikan perintah pada interrupt 16h untuk menahan layar hingga tombol pada keyboard di tekan (keluar program).
ret - Perintah kembali ke operating system (os).
DEFINE_PRINT_NUM – Deklarasi dari prosedur PRINT_NUM
DEFINE_PRINT_NUM_UNS – Deklarasi dari prosedur PRINT_NUM_UNS
12
3. Tampilan Layar
PENUTUP
3.1
Kesimpulan
Bahasa assembly merupakan bahasa aras bawah, dimana merupakan bahasa mesin, sangat banyak keuntungan yang kita dapatkan dari belajar bahasa ini, diantaranya kita bisa belajar untuk mengakses hardware secara langsung,disamping ukuran file hasil kompilasi juga kecil
Kelebihan Bahasa Assembly: Ketika di-compile lebih kecil ukuran, Lebih efisien/hemat memori,Lebih cepat dieksekusi
Kesulitan Bahasa Assembly: Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi, Relatif lebih sulit untuk dipahami terutama jika jumlah baris sudah terlalu banyak, Lebih sulit dalam melakukan pekerjaan rumit, misalnya operasi matematis
DAFTAR PUSTAKA
S’to.2001. Pemrograman Dengan Bahasa Assembly Edisi Online Versi 1.0 : http://www.jasakom.com
Fadlisyah,S.Si. Bahasa Rakitan.Yogyakarta:Andi.
.Pemrograman Bahasa Assembly :
http://dinus.ac.id/repository/docs/ajar/bahasa_assembly.pdf