Jumat, 06 Januari 2017

BENTUK PERINTAH BAHASA ASSEMBLY



SET INSTRUKSI PROGRAM DAN JENIS-JENIS INSTRUKSI
Set instruksi (instruction set) adalah sekumpulan lengkap instruksi yang dapat dimengerti oleh sebuah CPU dengan sebuah kamus berisi daftar perintah apa saja yang dapat dilakukan (didukung) oleh sebuah prosesor, dan biasanya terikat dengan sebuah keluarga arsitektur prosesor tertentu (misal x86, x64). Instruksinya berbentuk machine code (bahasa mesin), aslinya seluruhnya dalam bilangan biner. Untuk programmer, biasanya digunakan representasi yang lebih mudah dimengerti bahasa yang dapat dimengerti manusia, dikenal dengan bahasa Assembly.
Karakteristik Mesin Instruksi
• Elemen-elemen instruksi mesin
o Operation Code (OP Code) yaitu kode operasi berbentuk kode biner
o Source Operand Reference yaitu operand adalah input operasi
o Result Operand Reference yaitu merupakan hasil atau keluaran operasi
o Next Instruktion Reference elemen ini menginformasikan CPU posisi instruksi berikutnya yang harus diambil dan dieksekusi.
Operand dari suatu system operasi dapat berada pada:
• Memori Utama atau memori virtual
• Register CPU
• Perangkat I/O
Format Instruksi
Op Code Alamat
• Kode Operasi (Op Code) direpresentasikan dengan singkatan-singkatan yang disebut mnemonic.
• Contoh Mnemonic
o ADD = Penambahan
o SUBB = Pengurangan
o LOAD = Muatkan data ke memori
Jenis-Jenis Instruksi
1.Data procecessing: Arithmetic dan Logic Instructions
Data processing adalah jenis pemrosesan yang dapat mengubah data menjadi informasi atau pengetahuan. Pemrosesan data ini sering menggunakan komputer sehingga bisa berjalan secara otomatis. Setelah diolah, data ini biasanya mempunyai nilai yang informatif jika dinyatakan dan dikemas secara terorganisir dan rapi, maka istilah pemrosesan data sering dikatakan sebagai sistem informasi. Kedua istilah ini mempunyai arti yang hampir sama, pemrosesan data mengolah dan memanipulasi data mentah menjadi informasi (hasil pengolahan), sedangkan sistem informasi memakai data sebagai bahan masukan dan menghasilkan informasi sebagai produk keluaran.
2. Data storage: Memory instructions
Sering disebut sebagai memori komputer, merujuk kepada komponen komputer, perangkat komputer, dan media perekaman yang mempertahankan data digital yang digunakan untuk beberapa interval waktu. Penyimpanan data komputer menyediakan salah satu tiga fungsi inti dari komputer modern, yakni mempertahankan informasi. Ia merupakan salah satu komponen fundamental yang terdapat di dalam semua komputer modern, dan memiliki keterkaitan dengan mikroprosesor, dan menjadi model komputer yang digunakan semenjak 1940-an.
Dalam penggunaan kontemporer, memori komputer merujuk kepada bentuk media penyimpanan berbahan semikonduktor, yang dikenal dengan sebutan Random Access Memory (RAM), dan kadang-kadang dalam bentuk lainnya yang lebih cepat tapi hanya dapat menyimpan data secara sementara. Akan tetapi, istilah “computer storage” sekarang secara umum merujuk kepada media penyimpanan massal, yang bisa berupa cakram optis, beberapa bentuk media penyimpanan magnetis (seperti halnya hard disk) dan tipe-tipe media penyimpanan lainnya yang lebih lambat ketimbang RAM, tapi memiliki sifat lebih permanen, seperti flash memory.
3. Data Movement: I/O instructions
Proses data movement ini adalah memindahkan (dapat diakatakan membackup juga) data – data dari database yang berupa data, indeks, grand, schema, dan lain – lain ketempat baru. Tempat baru ini bisa ke dalam database baru atau memang untuk dibackup saja. Data movement terdiri dari 2 bagian besar yaitu :
• Load & Upload [difokuskan untuk memindahkan data yang berupa indeks atau data itu sendiri alias isi dari database tersebut]
• Export & Import [memindahkan data secara lengkap, mulai dari grand, schema, dan seluruhnya]
Jika dilihat, load tersebut behubungan dengan import dan upload berhubungan dengan export. Load berfungsi untuk memasukan data / transaksi ke sebuah table. Dapat dikatakan juga insert, replace, atau update. Sedangkan upload berfungsi untuk membuat dari data table ke fisik / file. Kelemahan load adalah dalam prosesnya bisa saja terjadi data yang tidak berpindah secara sempurna.
Upload Parameter
• Limit [membatasi beberapa record]
• Sample [mencari sample yang telah ditentukan]
• When [berdasarkan kondisi]
Dan pada upload, hanya satu parameter saja yang dapat berjalan alias tak bisa berjalan bersamaan apabila parameternya lebih dari 1.
Bulk Data Movement (Software Pendukung)
• ETL [Extrat Transform Load], software yang focus terhadap data warehouse
• Replication and Propagation, software yang memonitoring source database dan target, dan yang dihasilkan oleh software ini adalah pencatatatn log.
Perlu diperhatikan juga hak akses dalam load & unload, import & export minimal adalah akses select.
Distribution Database
Dalam distribution database terdapat 3 istilah yaitu :
• Autonomi [idependent], untuk tabel umum akses yang diberikan berbeda dari setiap user.
• Isolation [stand alone], untuk tabel khusus (privacy) itu terpisah dari user.
• Transparancy [all user], akses tabel terpisah dari user tetapi user masih dapat mengaksesnya.
Lawan dari database terdistribusi adalah database terpusat. Server yang terpusat memang diuntungkan dalam sisi maintenance sedangkan server terdistribusi lebih rumit dalam proses integrasinya. Jika database terdistribusi paling tidak membutuhkan Sumber Daya Manusia [SDM] yang baik, network yang lebih baik karena permasalahan network itu sangat fatal dan biasanya permasalahannya tidak jauh – jauh dari permasalahan traffic network. Dan yang tidak boleh dilupakan adalah request dan respon.
4. Control: Test and branch instructions
Unit kendali (bahasa Inggris: Control Unit – CU) adalah salah satu bagian dari CPU yang bertugas untuk memberikan arahan/kendali/ kontrol terhadap operasi yang dilakukan di bagian ALU (Arithmetic Logical Unit) di dalam CPU tersebut. Output dari CU ini akan mengatur aktivitas dari bagian lainnya dari perangkat CPU tersebut. Pada awal-awal desain komputer, CU diimplementasikan sebagai ad-hoc logic yang susah untuk didesain. Sekarang, CU diimplementasikan sebagai sebuah microprogram yang disimpan di dalam tempat penyimpanan kontrol (control store). Beberapa word dari microprogram dipilih oleh microsequencer dan bit yang datang dari word-word tersebut akan secara langsung mengontrol bagian-bagian berbeda dari perangkat tersebut, termasuk di antaranya adalah register, ALU, register instruksi, bus dan peralatan input/output di luar chip. Pada komputer modern, setiap subsistem ini telah memiliki kontrolernya masing-masing, dengan CU sebagai pemantaunya (supervisor).

Jenis Operasi pada asembler





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
Tabel 1. Contoh Instruksi Umum Pada CPU
No
Tipe
Instruksi
Nama
Aksi
1
Transfer data
MOVE
Mentransfer data dari lokasi sumber ke lokasi tujuan
LOAD
Mentransfer data dari lokasi memori ke register CPU
STORE
Mentransfer data dari register CPU ke lokasi memori
PUSH
Mentransfer data dari sumber ke stack
POP
Mentransfer data dari stack ke tujuan
XCHG
Saling menukar isi sumber dan tujuan
CLEAR
Me-reset tujuan dengan semua bit ‘0’
SET
Mengeset tujuan dengan semua bit ‘1’
2
Aritmatika
ADD
Penjumlahan, hitung jumlah dari 2 operan
SUB
Pengurangan, hitung selisih dari 2 operan
MUL
Perkalian, hitung hasil kali dari 2 operan
DIV
Pembagian, hitung hasil bagi dari 2 operan
NEG
Negasi, ganti tanda operan
INC
Tambahkan 1 pada operan
DEC
Kurangkan 1 dari operan
SHIFT A
Geser operan (kekiri atau kekanan) dengan tanda
3
Logika
NOT
Komplemenkan (komplemen 1) operan
OR
Lakukan operasi logika OR pada operan
AND
Lakukan operasi logika AND pada operan
XOR
Lakukan operasi logika XOR pada operan
SHIFT
Geser operan (kekiri atau kekanan), isi nilai pada ujung bit
ROT
Geser operan (kekiri atau kekanan) dengan berputar
TEST
Uji kondisi yang ditetapkan dan pengaruhi flag yang sesuai
4
Kendali Transfer
JUMP
Perpindahan tak bersyarat, masukkan alamat yang ditetapkan ke PC
JUMPIF
Perpindahan bersyarat, masukkan alamat yang ditetapkan ke PC jika kondisi terpenuhi
JUMPSUB
CALL, simpan ‘status program control’ yang sekarang, pindah kealamat yang ditetukan ke PC
RET
RETURN, restore ‘status program control’ dari stack ke PC dan register/flag yang relevan lainnya
5
Input/Output
IN (read)
Mentransfer data dari perangkat atau port i/o yang ditentukan ke tujuan (memori utama atau register)


OUT (write)
Mentransfer data dari sumber yang ditentukan ke perangkat atau port i/o


START I/O
Mentransfer instruksi ke prosesor i/o untuk menginisiasi operasi i/o


TEST I/O
Mentransfer informasi status dari sistem i/o ke instruksi yang ditentukan
6
Konversi
TRANSLATE
Menterjemahkan nilai-nilai dalam suatu bagian memori berdasarkan tabel korespodensi


CONVERT
Mengkonversi isi suatu word dari suatu bentuk ke bentuk lainnya (contoh decimal ke biner)

a. Transfer data
Tipe instruksi mesin yang paling dasar yaitu instruksi transfer data. Pada instruksi transfer dataharus ditentukan beberapa hal. Pertama, penentuan lokasi sumber dan tujuan dari operan.Lokasinya dapat terletak di memori, register atau stack. Kedua, panjang data yang akan ditransfer harus diketahui. Ketiga, sama untuk semua instruksi dengan operan, cara pengalamatannya harus ditentukan.
Dari sisi aksi prosesor, operasi transfer data mungkin merupakan tipe yang paling sederhana. Jika kedua-duanya baik sumber maupun tujuan adalah register, maka  prosesor hanya menyebabkan data dipindahkan dari satu register ke register lain (operasi internal prosesor). Jika salah satu atau kedua operan berada dalam memori, maka prosesor harus melakukan beberapa atau semua tindakan berikut:
1.      Menghitung alamat memori, berdasarkan mode pengalamatan ( dibahas di bagian selanjutnya)
2.      Jika alamat mengacu pada virtual memori, menerjemahkan dari alamat memori virtual ke alamat memori sebenarnya/fisik.
3.      Menentukan apakah operan yang dituju ada di dalam chace
4.      Jika tidak, berikan perintah ke modul memori.

b. Aritmatika
Kebanyakan mesin menyediakan operasi aritmatika / perhitungan dasar  sepertitambah, kurang,kali dan bagi. Dimana operasi tersebut disediakan untuk menangani bilanganinteger bertanda (fixed-point), juga bilangan floating point atau desimal. Berikut contoh lain operasi yang termasuk jenis instruksi dengan satu operan:
·         Absolute : mengambil nilai absolut/mutlak dari operan
·         Negate : menegasikan operan
·         Increment: menambahkan 1 nilai ke operan
·         Decrement: mengurangi 1 nilai dari operan

Eksekusi instruksi aritmatika dapat melibatkan operasi transfer data untuk menempatkan operan dari input ke ALU, dan untuk mengantarkan output dari ALU.

c. Logika
Kebanyakan mesin juga menyediakan berbagai operasi untuk memanipulasi setiap bit dari sebuah word atau unit (yang dapat diberi alamat) lainnya, operasi ini juga di sebut "bit twiddling". Bit-bit tersebut didasarkan pada operasi boolean. Beberapa operasi logika dasar dapat dilakukan pada data boolean atau biner yang ditunjukkan pada tabel berikut.

Tabel 2. Contoh Operasi Logika Dasar 

Operasi-operasi logika dapat diterapkan pada bitwise ke n-bit unit data. Dengan demikian, jika dua register berisi data

(R1) = 10100101
(R2) = 00001111
Kemudian
(R1) AND (R2) = 0000101

Selain operasi logika bitwise, kebanyakan mesin menyediakan berbagai fungsi pergeseran dan perputaran.Operasi yang paling dasar digambarkan pada gambar dibawah.Dengan logika pergeseran, setiap bit dari word akan di geser ke kiri atau ke kanan. Pada salah satu ujungnya, bit yang bergeser keluar akan hilang. Pada ujung lainnya, nilai ‘0’ digeser masuk.Pergeseran logis berguna terutama untuk mengisolasi bagian dalam sebuah word.Nilai ‘0’ yang digeser kedalam sebuah word menggantikan informasi yang tidak diinginkan yang digeser dari ujung lainnya.
Gambar 1. Operasi Pergeseran dan Perputaran


Operasi pergeseran aritmatika menangani data sebagai integer bertanda dan tidak menggeser bit tanda. Pada pergeseran aritmatika ke kanan, bit tanda disalin pada bit yang berada dikanannya. Pada pergeseran aritmatika ke kiri, pergeseran logika kiri dilakukan pada semua bit kecuali bit tanda tetap ditahan. Operasi ini dapat mempercepat operasi aritmatikaa tertentu.
Rotate, atau pergeseran memutar, operasi ini menjaga seluruh bit dioperasikan. Salah satu penggunaan dari rotasi yaitu membawa setiap bit berturut-turut ke bit paling kiri, dimana itu dapat diidentifikasi dengan menguji tanda dari data (diperlakukan sebagai angka). Sama dengan operasi aritmatikaa, operasi logika melibatkan aktifitas ALU dan mungkin melibatkan operasi transfer data.

d. Konversi
Instruksi konversi adalah instruksi-instruksi yang mengubah format atau beroperasi pada format data.Contohnya yaitu mengkonversi dari desimal ke biner.


e. Input/Output
Seperti yang kita ketahui, ada beberapa pendekatan I/O yang bisa diambil, diantaranya programmed I/O (isolated&memory mapped), DMA, dan penggunaan prosesor I/O. Implementasi instruksi I/O banyak dilakukan dengan hanya menyediakan beberapa instruksi I/O, dengan tindakan spesifik yang ditentukan oleh parameter, kode, atau kata perintah.

f. Kendali Sistem
Instruksi kendali sistem adalah instruksi yang dapat dieksekusi hanya ketika prosesor dalam keadaan tertentu atau mengeksekusi program pada area khusus dalam memori.Biasanya, instruksi ini dipesan untuk digunakan sistem operasi.Berikut beberapa contoh operasi kendali sistem. Sebuah instruksi kendali sistem boleh membaca atau mengubah kendali register. Contoh lainnya adalah instruksi untuk membaca atau memodifikasi penyimpanan protection key, seperti yang digunakan pada sistem memori EAS/390. Contoh lain adalah akses untuk memproses blok kontrol dalam sistem multiprogramming.

g. Kendali Transfer
Untuk semua tipe operasi yang sudah dibahas sejauh ini, instruksi selanjutnya yang akan dibahas tepat setelah ini, pada memori, adalah kendali transfer. Namun, pecahan yang signifikan dari instruksi dalam setiap program memiliki fungsi mengubah urutan eksekusi instruksi. Untuk instruksi ini, operasi yang dilakukan oleh prosesor

Beberapa hal yang perlu diperhatikan yaitu:
1.      Dalam praktek penggunaan komputer, sebenarnya kita mengeksekusi tiap instruksi lebih dari sekali dan mungkin ribuan kali. Ini membutuhkan ribuan atau bahkan jutaan instruksi untuk mengimplementasikan aplikasi. Hal ini tidak mungkin jika tiap instruksi harus ditulis secara terpisah. Jika tabel atau daftar item akan diproses, dibutuhkan program looping. Satu urutan eksekusi akan dieksekusi berulang kali untuk memproses semua data.
2.      Hampir semua program melibatkan beberapa pembuatan keputusan. Kita setuju komputer akan melakukan sesuatu jika suatu kondisi terpenuhi, dan melakukan hal lain jika dalam kondisi lain. Sebagai contoh, sebuah urutan instruksi mengitung akar kuadrat dari sebuh nilai. Pada awal urutan, tanda dari nilai tersebut diuji. Jika negatif, komputasi tidah dilakukan, tetapi kondisi eror yang akan dilaporkan.
3.      Untuk mengubah dengan benar program yang besar atu sedang adalah tugas yang sangat sulit. Hal ini akan lebih mudah jika ada mekanisme untuk memecah tugas-tugas tersebut menjadi bagian-bagian kecil yang dapat dikerjakan sekali dalam satu waktu.

            Sekarang kita akan membahas operasi transfer kendali yang ada pada set instruksi : seperti branchskip, dan procedurecall. Instruksi brach (cabang) sering juga disebut instruksi jump, memiliki sebuah operan yang berisi alamat dari instruksi selanjutnya yang akan dieksekusi. Instruksi ini dapat dibedakan menjadi conditional branchdan unconditional branch. Instruksi skip digunakan untuk melewati baris instruksi dan tidak membutuhkan alamat tujuan. Contohnya intruksi ISZ (increment-skip-if-zero). Instruksi procedure call digunakan untuk pemanggilan procedure(subprogram). Mekanisme procedure terdiri dari 2 instruksi utama : instruksi call yang berarti melakukan percabangan ke lokasi yang menunjuk ke procedure, dan instruksi return yang berarti kembali dari procedure ke lokasi dimana procedure tersebut dipanggil. Kedua instruksi tersebut menggunakan instruksi percabangan.