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.