Sabtu, 19 Februari 2011

bahasa Assembler

Element dari Bahasa Pemrograman Assembler
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.
Instuction Op Code
Assembly Mnemonic
Remarks
00
STOP
01
ADD
Operand pertama yang diasumsikan sebagai akumulator
02
SUB
03
MULT
04
LOAD
Memanggil akumulator
05
STORE
Menyimpan akumulator ke dalam lokasi storage
06
TRANS
Mentransfer kontrol ke alamat yang 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 index register dengan 3 digit terakhir dari storage operand
12
IIR
Menaikkan index register dengan 3 digit terakhir dari storage operand
13
LOOP
Mengurangi index register, jika isi baru . 0 kemudian sama denan 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)16
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.
Gambar 2.2 berikut ini mengilustrasikan program bahasa mesin yang dipersamakan dengan bahasa assembly.
100) + 09 0 114
101) + 11 4 114
102) + 04 0 115
103) + 05 0 117
104) + 05 0 116
105) + 04 0 117
106) + 03 0 116
107) + 05 0 117
108) + 04 0 116
109) + 01 0 115
110) + 05 0 116
111) + 13 4 105
112) + 100 117
113) + 00 0 000
114)
115) + 00 0 001
116)
117)
AGAIN
A
ONE
TERM
RESULT
START
READ
LIR
LOAD
STORE
STORE
LOAD
MULT
STORE
LOAD
ADD
STORE
LOOP
PRINT
STOP
DS
DC
DS
DS
END
100
A
4, A
ONE
RESULT
TERM
RESULT
TERM
RESULT
TERM
ONE
TERM
4, AGAIN
RESULT
1
‘1’
1
1
(a) (b)
Gambar 2.2. (a) program bahasa mesin (b) Eguivalent program bahasa assembly
Program assembly mengenal tiga jenis statement : (i) imperative statement (ii) declarative statement (iii) assembler directive statement.
Imperative Statement
Statement imperative dalam bahasa assembly ditunjukan dengan suatu tindakan yang dikerjakan selama eksekusi program assembly. Karena itu setiap statement imperative ditranslasikan ke dalam instruksi mesin.
Format instruksi :
Sign Opcode Index Operand
egister address
Declarative Statement
Statement declarative dalam bahasa assembly menunjukkan konstanta atau storage area pada suatu program. Sebagai contoh :
A DS 1
secara sederhana storage area sebesar 1 word ditunjukkan dengan sebuah label A. DS di sini menunjukkan Declare Storage (DS).
Suatu konstanta dideklarasikan melalui Declare Constant (DC) statement, contohnya :
ONE DC ‘1’
maksud dari statement di atas adalah label ONE berisi konstanta 1. Programmer dapat mendeklarasikan kontanta dalam desimal, binary, hexadesimal, dsb. Assembler akan mengkonversi bentuk tersebut ke dalam bentuk internal yang tepat.