Selasa, 31 Januari 2012

BAHASA ASSEMBLER



            Untuk menjalankan program pada komputer, maka kita perlu untuk menuliskan
source codenya dalam bahasa assembly yang diperlukan, menetapkan semua informasi yang diperlukan untuk menghasilkan object program yang sesuai. Misalkan tiap instruksi dan tiap item data memiliki satu word memori. Juga asumsikan bahwa memori tersebut adalah byte addressable dan word lengthnya adalah 32 bit. Jika assembler adalah untuk menghasilkan object program sesuai dengan pengaturan
ini, maka harus mengetahui :
§  Bagaimana menginterpretasikan nama tersebut
§  Dimana barns menempatkan instruksi tersebut dalam memori
§  Dimana harus menempatkan operand data dalam memori

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 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 yang ditulis dalam bahasa assembly dapat secara otomatis ditranslasikan ke rangkaian instruksi mesin oleh suatu program yang disebut assembler. Program assembler adalah salah satu kumpulan program yang merupakan bagian dari software sistem. Assembler, seperti halnya program yang lain, disimpan sebagai rangkaian instruksi mesin dalam memori komputer. Program user biasanya dimasukkan ke dalam komputer melalui keyboard dan disimpan dalam memori atau disk magnetik. Pada titik ini, program user hanyalah kumpulan baris karakter alfanumerik. Pada saat program assembler dieksekusi, program tersebut membaca program user, menganalisanya, dan kemudian menghasilkan program bahasa mesin yang diinginkan. Bahasa mesin tersebut berisi pola 0 dan 1 yang menetapkan instruksi yang akan dieksekusi oleh komputer tersebut. Program user dalam format teks alfanumerik aslinya disebut source program, dan program bahasa mesin yang diassemble disebut object program. Bahasa assembly untuk suatu komputer mungkin case sensitive atau mungkin tidak, sehingga, komputer tersebut bisa membedakan antara huruf kapital dan huruf kecil atau tidak dapat. Kita akan menggunakan huruf kapital mark menunjukkan semua nama dan label dalam contoh kita untuk dapat meningkatkan kemudahan pembacaan teks.


Bahasa assembly dikategorikan sebagai bahasa tingkat rendah (low level languange). Ini untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent. Untuk membandingkan bahasa mesin dan bahasa assembly, kita dapat melihatnya dari tiga karakteristik berikut :
1. 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. Gambar 2.1. berikut menunjukkan daftar instuksi operation codes dari bahasa dan bahasa assembly.







Intruction Op code
Assembly Mnemonic
Remarks
00
STOP
Operand pertama yang diasumsikan sebagai akumulator
01
ADD
Operand pertama yang diasumsikan sebagai akumulator
02
SUB
Operand pertama yang diasumsikan sebagai akumulator
03
MULT
Operand pertama yang diasumsikan sebagai akumulator
04
LOAD
Memanggil akumulator
05
STORE
Menyimpan akumulator ke dalam storage
06
TRANS
Mentransfer kontrol ke alamat disebutkan
07
TRIM
Mentransfer hanya jika akumulator < 0
08
DIV
Membagi akumulator dengan isi lokasi storage
09
READ
Membaca kartu pada lokasi storage
10
PRINT
Mencetak isi lokasi storage
11
LIR
Memanggil indeks register dengan 3 digit terakhir dari storage operand
12
IIR
Menaikan indeks register dengan 3 digit terakhir dari storage operand
13
LOOP
Mengurangi indeks register. Jika isi baru 0, kemudian sama dengan TRANS



2. 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.



3. 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)

Suatu statement bahasa assembly mempunyai bentuk umum sebagai berikut :

[Label]               Menmonic OpCode                  Operand [operand…]

 Tanda kurung siku menunjukkan isi di dalamnya boleh digunakan atau tidak dalam statement tersebut, sebagai contoh : label bersifat optional. Jika label digunakan, hal tersebut menujukkan 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.