Senin, 30 Januari 2012

Bahasa Assembler

KONSEP DASAR ASSEMBLER
A.    PENDAHULUAN
Bahasa Assembler adalah bahasa komputer yang kedudukannya di antara bahasa mesin dan bahasa level tinggi misalnya bahasa C atau Pascal. Bahasa C atau Pascal dikatakan sebagai bahasa level tinggi karena memakai kata-kata dan pernyataan yang mudah dimengerti manusia, meskipun masih jauh berbeda dengan bahasa manusia sesungguhnya. Bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh komputer. Sedangkan bahasa Assembly memakai kode Mnemonic untuk menggantikan kode biner, agar lebih mudah diingat sehingga lebih memudahkan penulisan program.
Alasan penggunaan bahasa assembler adalah :
Assembler lebih cepat dari pada beberapa bahasa program yang lainnya.
Assembler sangat dekat pada machine level.
Code assembler lebih kecil dari pada compiler lain dari beberapa bahasa.
Dalam assembler, anda memiliki Raw Power (akses langsung) ke perintah mesin
Dalam asembler, kita dapat melakukan banyak hal yang tidak bisa kita lakukan pada bahasa tingkat tinggi, seperti “bermain” dengan processor flags, dan sebagainya.
 Program yang ditulis dengan bahasa Assembly terdiri dari label; kode mnemonic dan lain sebagainya, pada umumnya dinamakan sebagai program sumber (Source Code) yang belum bisa diterima oleh prosesor untuk dijalankan sebagai program, tapi harus diterjemahkan dulu menjadi bahasa mesin dalam bentuk kode biner.

Program sumber dibuat dengan program editor biasa, misalnya Note Pad pada Windows atau SideKick pada DOS,  selanjutnya program sumber diterjemahkan ke bahasa mesin dengan menggunakan program Assembler. Hasil kerja program Assembler adalah “program objek” dan juga “assemly listing”.
 Program Objek berisikan kode kode bahasa mesin, kode-kode bahasa mesin inilah yang diumpankan ke memori-program prosesor. Assembly Listing merupakan naskah yang berasal dari program sumber, dalam naskah tersebut pada bagian sebelah setiap baris dari program sumber diberi tambahan hasil terjemahan program Assembler. Tambahan tersebut berupa nomor memori-program berikut dengan kode yang akan diisikan pada memori-program bersangkutan.

B.  STRUKTUR ASSEMBLER
 Program sumber dalam bahasa Assembly menganut prinsip 1 baris untuk satu perintah, setiap baris perintah tersebut bisa terdiri atas beberapa bagian (field), yakni bagian Label, bagian mnemonic, bagian operand yang bisa lebih dari satu dan terakhir bagian komentar. Untuk membedakan masing-masing bagian tersebut dibuat ketentuan sebagai berikut:
Masing-masing bagian dipisahkan dengan spasi atau TAB, khusus untuk operand yang lebih dari satu masing-masing operand dipisahkan dengan koma.
 Bagian-bagian tersebut tidak harus semuanya ada dalam sebuah baris, jika ada satu bagian yang tidak ada maka spasi atau TAB sebagai pemisah bagian tetap harus ditulis.
 Bagian Label ditulis mulai huruf pertama dari baris, jika baris bersangkutan tidak mengandung Label maka label tersebut digantikan dengan spasi atau TAB, yakni sebagai tanda pemisah antara bagian Label dan bagian mnemonic.
Label mewakili nomor memori-program dari instruksi pada baris bersangkutan, pada saat menulis instruksi JUMP, Label ini ditulis dalam bagian operand untuk menyatakan nomor memori-program yang dituju. Dengan demikian Label selalu mewakili nomor memori-program dan harus ditulis dibagian awal baris instruksi.
Disamping Label dikenal pula Symbol, yakni satu nama untuk mewakili satu nilai tertentu dan nilai yang diwakili bisa apa saja tidak harus nomor memori-program. Cara penulisan Symbol sama dengan cara penulisan Label, harus dimulai di huruf pertama dari baris instruksi. 
Mnemonic (arttinya sesuatu yang memudahkan diingat) merupakan singkatan perintah, dikenal dua macam mnemonic, yakni manemonic yang dipakai sebagai instruksi mengendalikan prosesor, misalnya ADDMOVDJNZ dan lain sebagainya.  Ada pula mnemonic yang dipakai untuk mengatur kerja dari program Assembler misalnya ORG,EQU atau DB, mnemonis untuk mengatur kerja dari program Assembler ini dinamakan sebagai ‘Assembler Directive’.
Operand adalah bagian yang letaknya di belakang bagian mnemonic, merupakan pelangkap bagi mnemonic. Kalau sebuah instrksi di-ibaratkan sebagai kalimat perintah, maka mnemonic merupakan subjek (kata kerja) dan operand merupakan objek (kata benda) dari kalimat perintah tersebut.
Komentar merupakan bagian yang sekedar sebagai catatan, tidak berpengaruh pada prosesor juga tidak berpengaruh pada kerja program Assembler, tapi bagian ini sangat penting untuk keperluan dokumentasi



C.  SISTEM BILANGAN
Assembler pada umumnya  dalam aplikasi pemrograman memanfaatkan bilangan Hexa (heksadesimal) yaitu bilangan dengan dasar 16-an. Sedangkan dalam proses pengolahan data pada mesin mikroprosesor menggunakan bilangan biner yaitu dengan dasar 2-an. Sedangkan manusia sudah terbiasa menggunakan bilangan desimal dalam operasi perhitungan secara umum.
Setiap nilai heksadesimal apabila diterjemahkan dalam bilangan biner maka dibutuhkan empat digit biner atau disebut sebagai nible. Karena nilai biner merupakan dasar dalam penentuan kapasitas memori register maka dalam penghitungannya dibutuhkan satuan yang dinamakan byte. Satu byte sama dengan delapan bit atau sama dengan 2 nible. Satuan yang lebih besar dari byte adalah word yang terdiri dari dua byte. Sehingga gambaran kapasitas bilangan biner dari kecil ke besar dapat dilihat sebagai berikut :
Bit                              =          (binary digit ) yaitu terdiri dari nilai 0 atau 1
Nible                                       =          4 bit atau mewakili 1 hexa
Byte                                        =          8 bit atau = 2 nible atau = 8 bit
Word                           =          16 bit atau = 4 nible atau = 2 byte

Contoh konversi bilangan :
1.    Konversi bilangan hexa 3B  ke dalam bilangan desimal  dan bilangan biner adalah :
a.   3B hexa = (3 * 161) + (11 * 160)
=     48        +      11
=               59   desimal
b.  3B hexa =   3 à 0011    dan  B à 1011
=    00111010  biner
2. Konversi bilangan biner 10100101   ke bilangan hexadesimal dan bilangan desimal adalah :
1010 0101  
A      5    =  A5 hexadesimal
10100101    = angka 1 biner di pangkatkan sebagai berikut :
76543210    = 2+ 2+22 + 20
= 128 + 32 + 4 + 1
=  165 desimal

1 komentar: