BAHASA ASSEMBLY Salahuddin, SST Email : salahuddin_ali@ymail.com salahuddin.ali00@gmail.com Web Site : www.salahuddinali.com
Pendahuluan Program adalah kumpulan instruksi/perintah yang disusun sebagai satu kesatuan prosedur yang berupa urutan langkah untuk menyelesaikan masalah yang diimplementasikan dengan menggunakan bahasa pemograman sehingga dapat dieksekusi k i oleh computer. Pemrograman adalah proses untuk mengimplementasikan urutan langkah penyelesaian suatu masalah dengan suatu bahasa pemrograman Bahasa Pemograman berfungsi sebagai media untuk menyusun dan memahami suatu program computer serta sebagai alat komunikasi antara programmer dengan computer.
Bahasa Pemrograman Tingkat Rendah (Low Level Language) Berorientasi pada mesin Lebih dekat ke bahasa mesin dari pada manusia Waktu eksekusi lebih cepat Bahasa Assembly Tingkat Tinggi (High Level Language) Lebih dekat ke bahasa manusia dari pada bahasa mesin. Mudah dipahami ole manusia Waktu eksekusi lebih lama BASIC, Fortran, COBOL, Pascal, Prolog, C, dll.
Bahasa Pemrograman Tingkat Rendah (Low Level Language) Berorientasi pada mesin Lebih dekat ke bahasa mesin dari pada manusia Waktu eksekusi lebih cepat Bahasa Assembly Tingkat Tinggi (High Level Language) Lebih dekat ke bahasa manusia dari pada bahasa mesin. Mudah dipahami oleh manusia Waktu eksekusi lebih lama BASIC, Fortran, COBOL, Pascal, Prolog, C, dll.
Bahasa Assembly Instruksi mesin dinyatakan dengan pola 0 dan l. Pola semacam itu sangat sulit untuk dijelaskan pada saat membahas atau menyiapkan program. Oleh karena itu, kita menggunakan nama simbolik untuk menyatakan pola tersebut. Sejauh ini kita telah menggunakan kata kata biasa seperti Move, Add, Increment, dan Branch,, untuk instruksi operasi yang menyatakan pola kode biner yang sesuai. Pada saat menulis program untuk komputer tertentu, kata kata tersebut biasanya diganti dengan akronim yang disebut mnemonic, seperti MOV, ADD, INC, dan BR Serupa dengan kita menggunakan notasi R3 untuk mengacu pada register 3,, dan LOC untuk mengacu pada lokasi memori. Set lengkap nama simbolik semacam itu dan aturan penggunaannya membentuk bahasa pemrograman, yang biasanya disebut sebagai bahasa assembly. Set aturan untuk menggunakan mnemonic dalam spesifikasi instruksi dan program lengkap disebut syntax bahasa.
Program assembly salah satu kumpulan program yang merupakan bagian dari software sistem. disimpan sebagai rangkaian instruksi mesin dalam memori komputer program user hanyalah h kumpulan baris karakter kt alfanumerik program assembly dieksekusi, program tersebut membaca program poga user, use, menganalisanya, asa ya,da dan kemudian uda menghasilkan a program bahasa mesin yang diinginkan Program user dalam format teks alfanumerik aslinya disebut source program program bahasa mesin yang di assembly disebut object program.
Bahasa Mesin VS Bahasa Assembly Tiga karakteristik untuk membandingkan bahasa mesin dan bahasa assembly, Mnemonic operation code. Sebagai pengganti numeric operation code (opcodes) yang digunakan pada bahasa mesin, digunakankanlah mnemonic code pada bahasa assembly. Selain kemudahan dalam penulisannya dibandingkan dari bahasa mesin juga mendukung pelacakan kesalahan seperti kesalahan penulisan operation code. Symbolic operand specification.. Penamaan simbol diasosiasikan sebagai suatu data atau instruksi. Operand lebih menunjukkan symbolic reference dibandingkan dengan alamat mesin suatu data atau instruksi. Hal ini akan mempermudah pada saat harus dilakukan modifikasi program. Declaration of data/storage area.. Data dapat dinyatakan dalam notasi desimal. Ini dilakukan untuk mencegah konversi secara manual dari konstanta ke dalam representasi internal mesin. Sebagai contoh : -5 menjadi (11111010) 2 atau 10.5 menjadi (41A80000) 16
Bentuk Statement Bahasa Assembly Tanda kurung siku menunjukkan isi di dalamnya boleh digunakan atau tidak dalam statement tersebut Jika label digunakan, hal tersebut menunjukkan suatu symbolic name akan dibuat dalam machine word untuk keperluan assembly statement. Bila digunakan lebih dari satu operand, digunakan tanda koma untuk memisahkannya Jika digunakan index, nomor index register ditunjukan dalam sebuah simbol, seperti contoh berikut : AGAIN LOAD NUMBER(4) Dimana 4 menunjukkan register yang memiliki index. AGAIN diasosiasikan dengan instruksi mesin yang dihasilkan untuk statement LOAD.
Ilustrasi Program
Bentuk Umum Penulisan Source Program
Penulisan Source Program Empat field dipisahkan oleh pemisah yang sesuai, biasanya satu atau lebih karakter kosong.
Penulisan Source Program Label adalah nama opsional yang dihubungkan dengan alamat memori dimana instruksi bahasa mesin yang dihasilkan dari pernyataan tersebut akan diload. Label juga dapat dihubungkan dengan alamat item data. Contoh di atas terdapat lima label: SUM, N, NUM1, START, dan LOOP. Field Operation berisi mnemonic OP-code directive assembler. Field Operand berisi informasi pengalamatan untuk mengakses satu atau dua operand, tergantung pada tipe informasinya. Field Comment diabaikan oleh program assembly. Field tersebut digunakan untuk tujuan dokumentasi sehingga program lebih mudah dipahami.
ASSEMBLY DAN EKSEKUSI PROGRAM Source program yang ditulis dalam bahasa assembly harus diassemble 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 digunakan dalam instruksi mesin, dan mengganti semua nama dan label dengan nilai sebenarnya. Bahasa Assembly Source Program Mnemonic Code Program Objek Biner Code
Tiga Jenis Statement Program assembly mengenal tiga jenis statement : imperative statement Statement imperative dalam bahasa assembly ditunjukkan dengan suatu tindakan yang dikerjakan selama eksekusi program assembly. Karena itu setiap statement imperative ditranslasikan ke dalam instruksi mesin. declarative statement Statement declarative dalam bahasa assembly menunjukkan konstanta atau storage area pada suatu program assembler directive statement. Statement ini tidak merepresentasikan instruksi mesin ke dalm suatu objek program atau mengalokasikan storage untuk konstanta atau variable program. Sebaliknya, a statement ini secara a langsung mengarahkan ahkan assembler untukmengambil alih aksi selama proses assembling program
Proses Translasi model proses translasi Secara umum Analysis of Source Text Synthesis of Target Text + = Translation from Source Text to Target Text Dalam fase analisis, penentuan arti dari source text Dalam fase sintesis, dilakukan pemilihan machine operation code yang sesuai
Skema Sederhana Assembly Fase Analysis Mengisolasikan / memisahkan label, mnemonic operation code dan operand field yang ada pada statement Memasukkan simbol yang ditemukan pada label l field dan alamat yang akan dituju machine word ke dalam Symbol table. Melakukan validasi mnemonic operation code dengan melihat pada Mnemonic table Menentukan alamat yang dibutuhkan statement berdasar pada mnemonic operation code dan operand field pada statement. Proses penghitungan alamat awal machine word mengikuti target code yang dibangkitkan untuk statement tersebut (Location Counter (LC) processing) Fase Syntesis Menghasilkan machine operation code yang berkorespondensi dengan mnemonic operation code yang telah dicari pada mnemonic table Menghasilkan alamat operand dari Symbol table Melakukan sintesa instruksi machine
Translasi statement demi statement program bahasa assembly Assembly Language Statement Analysis Synthesis Equivalent target code
contoh program assembly FIVE SUM MOVE. L FOUR, DO ADD.L FIVE, DO MOVE.L DO, SUM FOUR DC.L 4 DC.L 5 DS.L 1 FIVE merupakan label yang menunjuk pada alamat dimana isi dari FIVE tersebut disimpan. FIVE tidak terdefinisi sebelumnya Penterjemahan seperti ini disebut forward reference forward reference alamat dari label harus dikenali dalam jenisnya untuk diterjemahkan ke dalam suatu program yang semestinya Proses terhadap source statement dilakukan lebih dari satu kali atau secara beberapa b tahap (konsep translator t pass. )
Translator pass Penelusuran secara menyeluruh source program input oleh translator t hingga mencapai equivalent representation single pass translation Translasi yang dilakukan statement demi statement multipass translation translasi yang dilakukan sekelompok statement yang membutuhkan banyak pass
Multi-Pass Translation Multi pass translation dalam program bahasa assembly dapat menangani masalah forward reference. Unit pada source program digunakan untuk tujuan mentranslasi semua bagian program
Single Pass Translation Instruksi yang memuat forward reference dapat ditinggalkan dalam keadaan tidak selesai hingga alamat reference symbol diketahui Keuntungan menggunakan single pass translation adalah setiap source statement hanya diproses satu kali Kekurangan pada single pass translation,, yaitu besarnya area storage yang dibutuhkan oleh assembler, karena fase analysis dan synthesis dijalankan pada pass yang sama.
Single Pass Translation Dua macam tipe single pass translation / one pass,, yaitu : single pass translation yang menghasilkan kode objek langsung ke memori, yang mengakibatkan eksekusi menjadi lebih cepat. single pass translation yang menghasilkan berbagai tipe pemrograman untuk keperluan eksekusi selanjutnya
Keluaran Assembler Object File Source program file ASSEMBLER PROGRAM Program Listing Cross Reference Listing
Listing Program Menyediakan record dari source program dan object code Menyediakan pesan diagnosa untuk informasi error dalam pemrograman