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

Sabtu, 07 Januari 2012

The First

Awal kehidupan gue, berada pada tingkat kegembiraan teratas dan keterpurukan yang memprihatinkan. Manusia tidak pernah diberikan pilihan, dengan keluarga mana mereka akan hidup, di negara mana mereka akan beredar, atau dengan spesies apa mereka akan tumbuh. Tapi akan lebih indah ketika kita menerima, menjalani, dan melaksanakan apa yang menjadi tugas dan tujuan hidup kita dengan ikhlas. Seperti gue, selalu menerima hidup dengan keluarga sederhana, kakak-kakak yang hyper bawel dengan tontonan gosip di televisi, nyokap yang super aktif ngingetin gue shalat, bokap yang selalu bawain gue Dunkin Donat sepulang kerja. Gue bersyukur, dan akan terus bersyukur. 
Muhammad Robbi Nugraha, itu kalimat yang tercantum pada kolom nama di Akta Kelahiran gue. Diberikan oleh seorang Ibu yang sebelumnya pernah melahirkan 3 bayi di kota yang sama, dan gue juga jadi ikut-ikutan cek-out di kota yang sama. Sejak kecil, gue udah rewel banget. Keliatan dari wajah polos gue, sering banget gak berkedip ngeliat cewek. Normal dong ya. Entah kenapa, gue waktu kecil sangat amat terobsesi dengan mainan robot. Dan itu gue tiru kalo dapet kardus bekas, dengan melobangi sisi kiri sebagai tangan kiri, sisi kanan sebagai tangan kanan, dan sisi atas buat kepala gue yang gede yang bentuknya bujur sangkar. Dengan pede-nya berlarian keluar rumah dengan menggenggam sebatang kayu, dan berteriak kepada seorang pedagang warung, "Nenek sihir ubanan, aku mau jajan boleh ya?" Memalukan memang, gue gak tau juga ekspresi nyokap kalo tau itu. 
Obsesi gue yang lain, gue termasuk anak yang maniak banget sama jajanan. Apapun itu, kecuali yang barbau durian, melon, salak, pisang, pasti gue merengek minta dibeliin. Nyokap sibuk dengan pasiennya, karena dia Bidan. Bokap juga belum balik, dia pegawai swasta di Universitas swasta juga. Gak pernah keabisan akal, gue yang masih kecil dengan polosnya ngambil jajanan di warung tersebut. Sampai suatu hari, nyokap nge-cek jajanan gue dan harganya sampai 100ribu. Itu gue bingung, perasaan gue cuma jajan yang kecil-kecil seperti kerupuk kecil, mie kecil, bahkan teh botol kecil. Gak ada komentar dari nyokap, dia tegar banget menanggapi gue yang berlebihan untuk urusan jajan. Sampai tetangga tau hal itu, mereka sindir gue. Apa? terus salah gue? salah bentuk kepala gue yang bujur sangkar? atau salah jambul nenek gue? Anak lo ber-sepeda ria dan akhirnya masuk got, nyokap-bokap gue biasa aja. Capek ya ngurus tetangga bermulut lebar kaya lo.
Kasian.
Bersambung ....