Karakteristik Bahasa Assembler:
Bahasa
Assembly adalah bahasa komputer yang kedudukannya di antara bahasa mesin
dan bahasa level tinggi misalnya bahasa C, C++, Pascal, Turbo Basic, Java, dan
sebagainya. 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. Assembler adalah program yang
bekerja membantu penulisan instruksi dalam format bahasa inggris sehingga mudah
dibaca dan dipahami.
MOV R0, #02h
MOV A, #03h
ADD A, R0
Perintah
baris pertama bekerja menjalankan proses pengisian register R0 dengan data
02h. Perintah baris kedua bekerja menjalankan proses pengisian register A
dengan data 03h. Kemudian proses penjumlahan data pada register A
dengan data pada register R0 dijalankan menggunakan perintah ADD A,R0 dan
menghasilkan data 05h tersimpan di register A.
Perintah MOV dan ADD adalah
mnemonik atau singkatan dari perintah MOVE dan ADD.Bahasa mesin
adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh
komputer. Kode bahasa mesin atau sering disebut dengan operation code dari perintah MOV
R0,#02h adalah 78 02. Untuk MOV A,#03h kode operasinya dalah 74 03 dan 28
adalah kode operasi dari perintah ADD A, R0. Kode operasi untuk setiap perintah
dapat dibaca pada lembar instruction set.
Program
yang ditulis dengan bahasa assembly terdiri dari label; kode mnemonik, operand
1, operand 2, keterangan, dan lain sebagainya. Program ini disebut sebagai
program sumber (Source Code). Source code belum bisa diterapkan langsung pada
prosesor untuk dijalankan sebagai program. Source code harus diterjemahkan dulu
menjadi bahasa mesin dalam bentuk kode biner atau operasi
Daftar
Assembly Directive
Assembly Directive
|
Keterangan
|
EQU
|
Pendefinisian konstanta
|
DB
|
Pendefinisian data dengan ukuran
satuan 1 byte
|
DW
|
Pendefinisian data dengan ukuran
satuan 1 word
|
DBIT
|
Pendefinisian data dengan ukuran
satuan 1 bit
|
DS
|
Pemesanan tempat penyimpanan data
di RAM
|
ORG
|
Inisialisasi alamat mulai program
|
END
|
Penanda akhir program
|
CSEG
|
Penanda penempatan di code segment
|
XSEG
|
Penanda penempatan di external
data segment
|
DSEG
|
Penanda penempatan di internal
direct data segment
|
ISEG
|
Penanda penempatan di internal
indirect data segment
|
BSEG
|
Penanda penempatan di bit data
segment
|
CODE
|
Penanda mulai pendefinisian
program
|
XDATA
|
Pendefinisian external data
|
DATA
|
Pendefinisian internal direct data
|
IDATA
|
Pendefinisian internal indirect
data
|
BIT
|
Pendefinisian data bit
|
#INCLUDE
|
Mengikutsertakan file program lain
|
Jenis Operand
Instruksi mesin melakukan operasi terhadap data. Pada umumnya data
dikategorikan ke dalam angka, karakter dan data logika.
A. Angka
Setiap bahasa mesin mengandung tipe data numerik. Umunya terdapat tiga tipe
data angka yang ada pada komputer yaitu:
1. Binary integer
2. Binary floating point
3. Desimal
Semua operasi pada internal komputer berupa data biner, namun user berinteraksi
dengan bilangan desimal. Maka perlu dilakukan konversi dari desimal ke bilangan
biner pada input dan konversi dari biner ke desmimal pada output. Bilangan
desimal direpresentasikan dalam 4 bit kode biner maka 0=0000, 1=0001,...,8=1000,
9=1001. Sedangkan untuk desimal 246 = 0000 0010 0100 0110. Untuk bilangan
negatif direpresentasikan dengan 4 bit yang diletakkan pada awal atau akhir
string. Standar tanda yang digunakan adalah 1100 untuk bilangan positif dan
1101 untuk tanda bilangan negatif.
Umumnya bentuk data adalah teks atau kumpulan karakter. Sedangkan sistem
komputer didesain untuk data biner. Maka sejumlah kode dalam urutan bit perlu
di tentukan untuk merepresentasikan sebuah karakter. Saat ini standar kode yang
digunakan untuk merepresentasikan karakter adalah American Standart
Code for Information Interchange (ASCII). Setiap karakter pada kode
ASCII direpresentasikan dengan 7 bit biner yang unik. Maka terdapat 128
karakter yang berbeda yang dapat direpresentasikan. Selain itu juga ada yang
menggunakan Extended Binary Coded Decimal Interchange Code (EBCDIC)
yang digunakan oleh IBM mainframe.
C. Data logika
Pada umumnya setiap word atau yang lain merupakan satu unit data yang masing
masing unit data memiliki nilai 0 atau 1. Ketika dipandang dengan cara ini,
maka data tersebut dianggap sebagai data logika. Data logika hanya bernilai true “1”
atau false “0”.
Jenis Operasi
Jumlah opcode dari
sebuah mesin ke mesin lain beragam. Akan tetapi tipe operasi-operasi umum akan
sama untuk semua mesin. Berikut dikategorikan operasi berdasarkan fungsi
dan tipenya:
a. Transfer data
b. Aritmatikaa
c. Logika
d. Konversi
e. Input/output
f. Kendali sistem
g. Kendali
transfer
Bentuk Perintah/Instruksi
Ada beberapa perangkat lunak (software) yang dapat digunakan sebagai program bantu untuk membuat dan mensimulasikan program diantaranya
AVSIM51, ALDS dan Pinnacle. Pinnacle memiliki beberapa fitur yang cukup lengkap
seperti : Register Data Pointer (DPTR), Ports, Timer, Internal RAM,
External RAM dan lain-lain. Program sumber (source
code) dibuat dengan pinnacle 52, hasil kerja program yang telah dikompile
dalam bahasa assembler ini adalah assembly listing.
Instruksi
yang digunakan dalam penyusunan program adalah sebagai berikut :
EQU
Digunakan
untuk mendefinisikan sebuah lambang assembler secara bebas.
ORG
(Origin)
Digunakan
untuk mengarahkan lokasi tempat instruksi yang ada dibawahnya
CLR
Memberikan
nilai “0” pada bit tertentu
SETB
Memberikan
nilai ”1” pada bit tertentu
CALL
Merupakan
instruksi untuk melakukan lompatan dengan area sebesar 2 KB
LCALL
Instruksi
ini hamper sama dengan instruksi CALL, hanya saja instruksi ini digunakan jika
label yang dipanggil letaknya lebih jauh dari 2 KB
MOV
Intruksi
ini berfungsi melakukan pemindahan data dari variabel pada kode operasi kedua
dan disimpan di variabel pad kode operasi pertama.
JMP
Digunakan
untuk melakukan lompatan dan menjalankan program yang berada dialamat yang
ditentukan oleh label tertentu.
SJMP
Digunakan
untuk melakukan lompatan untuk jarak yang pendek ( Short JUMP).
LJMP
Instruksi
ini berfungsi untuk melakukan lompatan untuk jarak yang jauh (Long Jump).
JB
Lompat
jika Bit tertentu bernilai 1, artinya jika bit yang telah ditentukan bernilai
1, maka lompat ke alamat yang telah ditentukan dan dilanjutkan ke instruksi
berikutnya.
JNB
Kebalikan
dari JB, JNB merupakan instruksi untuk beralih ke alamat tertentu jika Bit
tertentu bernilai 0.
DJNZ
Instruksi
ini berfungsi melakukan pengurangan pada Rn (R0…….R7) dengan 1 dan lompat ke
alamat yang ditentukan apabila hasilnya bukan 00. apabila hasilnya telah
mencapai 00, maka program akan terus menjalankan instruksi dibawahnya.
CJNE
Instruksi
ini berfungsi melakukan perbandingan antara data tujuan dan data sumber serta
melakukan lompatan ke alamat yang ditentukan jika hasil perbandingan tidak
sama.
RET
Digunakan
untuk melakukan lompatan ke alamat yang disimpan dalam SP dan SP-1. Instruksi
ini biasa digunakan pada saat kembali dari subrutin yang dipanggil dengan
instruksi ACALL atau LCALL.
END
Instruksi
ini biasanya diletakan diakhir baris dari file program sumber assembler sebagai
tanda akhir pernyataan (statement) bagi program assembler dalam
melakukan proses assembly.