Kamis, 05 Januari 2017

BENTUK PERINTAH DALAM BAHASA ASSEMBLER

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.
B. Karakter
          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.