BAHASA ASSEMBLY Salahuddin,, SST Salahuddin Email : [email protected] [email protected] 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 hi dapat d t dieksekusi di k k i oleh l h computer. t 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. 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, BASIC, Fortran COBOL, COBOL Pascal, Pascal Prolog Prolog, C C, dll. 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, BASIC, Fortran COBOL, COBOL Pascal, Pascal Prolog Prolog, C C, dll. 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, program. itu kita menggunakan nama simbolik untuk menyatakan pola tersebut. Sejauh ini kita telah menggunakan kata kata biasa seperti Move, Add Increment Add, Increment, dan Branch 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, 3, dan LOC untuk mengacu pada lokasi memori. S llengkap Set k nama simbolik i b lik semacam itu i dan d aturan penggunaannya membentuk bahasa pemrograman, yang biasanya disebut sebagai bahasa assembly. 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 l h kumpulan k l baris b i karakter k kt alfanumerik lf ik program assembly dieksekusi, program tersebut membaca program p og a user, use , menganalisanya, e ga a sa ya, dan da kemudian e ud a menghasilkan e g as 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.. program Bahasa Mesin VS Bahasa Assembly Tiga karakteristik untuk membandingkan bahasa mesin dan bahasa assembly, y Mnemonic operation code. Sebagai pengganti numeric operation code (opcodes) yang digunakan pada bahasa mesin, digunakankanlah mnemonic code pada bahasa assembly assembly.. Selain kemudahan dalam penulisannya dibandingkan dari bahasa mesin juga mendukung pelacakan kesalahan seperti kesalahan penulisan operation code. 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. S b Sebagai i contoh t h: -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 “k “koma” ” untukk memisahkannya hk 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 sesuai kosong.. kosong Penulisan Source Program Label adalah nama opsional yang dihubungkan dengan alamat memori memo i dimana instruksi inst ksi bahasa mesin yang ang dihasilkan dari da i pernyataan tersebut akan diload diload.. Label jjuga g dapat p dihubungkan g dengan g alamat item data. Contoh d dii atas terdapat lima label: SUM, N, NUM1, START, dan LOOP. Field Operation berisi mnemonic OPOP-code directive assembler. Field Operand berisi informasi pengalamatan untuk mengakses satu atau dua operand, tergantung pada tipe informasinya.. informasinya Field Comment diabaikan oleh program assembly. assembly Field tersebut digunakan untuk tujuan dokumentasi sehingga program lebih mudah dipahami dipahami.. ASSEMBLY DAN EKSEKUSI PROGRAM Source program yang ditulis dalam bahasa assembly harus diassemble object program bahasa mesin sebelum dapat dieksekusi. dieksekusi. Hal ini dilakukan oleh program assembler, yang mengganti semua simbol untuk mode operasi dan penggalamatan dengan kode biner yang digunakan dalam instruksi mesin mesin,, dan mengganti semua nama dan label dengan nilai sebenarnya. sebenarnya. Bahasa Assembly Source Program Program Objek Mnemonic Code Biner Code Tiga Jenis Statement Program assembly mengenal tiga jenis statement : imperative p statement declarative 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. 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. Sebalikn a statement ini secara Sebaliknya, seca a langsung langs ng mengarahkan menga 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 F Fase A Analysis l i Mengisolasikan / memisahkan label, mnemonic operation code dan operand field yang ada pada statement M Memasukkan kk simbol i b l yang ditemukan dit k pada d label l b l field fi ld dan d alamat l t yang akan k 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 g target g code yang y g dibangkitkan g untuk statement tersebut (Location Counter (LC) processing) Fase Syntesis Menghasilkan g machine operation p code yang y g berkorespondensi p dengan g 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 q target code contoh program assembly FIVE SUM MOVE. L MOVE ADD.L MOVE.L DC.L DC L DC.L DS.L FOUR, FOUR DO FIVE, DO DO, SUM FOUR 4 5 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 jjenisnya y untuk diterjemahkan ke dalam suatu program yang semestinya Proses terhadap source statement dilakukan lebih dari satu kali atau t secara b beberapa b ttahap h (konsep (k translator t l t pass. ) Translator pass Penelusuran secara menyeluruh source program i input t oleh l h translator t l t hingga hi mencapaii equivalent representation single g pass p translation Translasi yang dilakukan statement demi statement multipass translation translasi yang dilakukan sekelompok statement yang membutuhkan banyak pass Multi--Pass Translation Multi 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 j pada p pass p yang y g 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 fil 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