Jumat, 08 April 2016

OPERATOR DAN OPERAND PADA INSTRUKSI MESIN



OPERATOR DAN OPERAND PADA INSTRUKSI MESIN
Operand adalah data, tetapan, peubah atau hasil dari suatu fungsi sedangkan Operator merupakan simbol-simbol yang memiliki fungsi untuk menghubungkan operand sehingga menjadi tranformasi. Operand adalah sebuah objek yang ada pada operasi matematika yang dapat digunakan untuk melakukan operasi. Operand atau operator dalam bahasa C berbentuk simbol bukan berbentuk keyword atau kata yang biasa ada di bahasa pemrograman lain. Simbol yang digunakan bukan karakter yang ada dalam abjad tapi ada pada keyboard kita seperti =,<,>,* dan sebagainya.

JENIS-JENIS OPERATOR ADALAH SEBAGAI BERIKUT :
1.      Operator Aritmetika
Operator yang digunakan untuk melakukan fungsi aritmetika seperti : +(penjumlahan), – (mengurangkan), * (mengalikan), / (membagi).
2.      Operator relational
Operator yang digunakan untuk menyatakan relasi atau perbandingan antara dua operand, seperti > (lebih besar), < (lebih kecil), >=(lebih besar atau sama), <= (lebih kecil atau sama), == (sama), != (tidak sama).
3.      Operator Logik
Operator yang digunakan untuk merelasikan operand secara logis seperti && (and), || (or), !(not).

KARAKTERISTIK DAN FUNGSI SET INSTRUKSI
-       Operasi dari CPU ditentukan oleh instruksi-instruksi yang dilaksanakan atau dijalankannya. Instruksi ini sering disebut sebagai instruksi mesin (mechine instructions) atau instruksi komputer (computer instructions).
-       Kumpulan dari instruksi-instruksi yang berbeda yang dapat dijalankan oleh CPU disebut set Instruksi (Instruction Set).

ELEMEN-ELEMEN DARI INSTRUKSI MESIN (SET INSTRUKSI)
-       Operation Code (opcode) : menentukan operasi yang akan dilaksanakan
-       Source Operand Reference : merupakan input bagi operasi yang akan dilaksanakan
-       Result Operand Reference : merupakan hasil dari operasi yang dilaksanakan
-       Next instruction Reference : memberitahu CPU untuk mengambil (fetch) instruksi berikutnya setelah instruksi yang dijalankan selesai.

Source dan result operands dapat berupa salah satu diantara tiga jenis berikut ini:
·         Main or Virtual Memory
·         CPU Register
·         I/O Device

DESAIN SET INSTRUKSI
Desain set instruksi merupakan masalah yang sangat komplek yang melibatkan banyak aspek, diantaranya adalah:
1.      Kelengkapan set instruksi
2.      Ortogonalitas (sifat independensi instruksi)
3.      Kompatibilitas :     – Source code compatibility
– Object code Compatibility
Selain ketiga aspek tersebut juga melibatkan hal-hal sebagai berikut:
1.      Operation Repertoire: Berapa banyak dan operasi apa saja yang disediakan, dan berapa sulit operasinya
2.      Data Types: tipe/jenis data yang dapat olah Instruction Format: panjangnya, banyaknya alamat, dsb.
3.      Register: Banyaknya register yang dapat digunakan 4.Addressing: Mode pengalamatan untuk operand
4.      Addresing: Mode pengalaman untuk operand
FORMAT INSTRUKSI 
Suatu instruksi terdiri dari beberapa field yang sesuai dengan elemen dalam instruksi tersebut. Layout dari suatu instruksi sering disebut sebagai Format Instruksi (Instruction Format).
OPCODE
OPERAND REFERENCE
OPERAND REFERENCE

JENIS-JENIS OPERAND 
Instruksi mesin melakukan operasi terhadap data. Pada umumnya data dikategorikan ke dalam angka, karakter dan data logika.
1.      Addresses
Salah satu cara tradisional untuk menggambarkan arsitektur prosessor adalah dengan melihat jumlah alamat yang terkandung dalam setiap instruksinya.
Jumlah alamat maksimum yang mungkin diperlukan dalam sebuah instruksi :
1. Empat Alamat ( dua operand, satu hasil, satu untuk alamat instruksi berikutnya)
2. Tiga Alamat (dua operand, satu hasil)
3. Dua Alamat (satu operand merangkap hasil, satunya lagi operand)
4. Satu Alamat (menggunakan accumulator untuk menyimpan operand dan hasilnya)

Macam-macam instruksi menurut jumlah operasi yang dispesifikasikan
1. O – Address Instruction
2. 1 – Addreess Instruction.
3. N – Address Instruction
4. M + N – Address Instruction

Macam-macam instruksi menurut sifat akses terhadap memori atau register
1. Memori To Register Instruction
2. Memori To Memori Instruction
3. Register To Register Instruction

ADDRESSING MODES
Jenis-jenis addressing modes (Teknik Pengalamatan) yang paling umum:
-     Immediate
-     Direct
-     Indirect
-     Register
-     Register Indirect
-     Displacement
-     Stack

Gambar Addressing Modes
Tabel Basic Addressing Modes
Mode
Algorithm
Principal Advantage
Principal Disadvantage
Immediate
Operand = A
No memory
reference
Limited operand magnitude
Direct
EA = A
Simple
Limited address space
Indirect
EA = (A)
Large address space
Multiple memory references
Register
EA = R
No memory
Reference
Limited address space
Register
Indirect
EA = (R)
Large address space
Extra memory reference
Displace-ment
EA=A+(R)
flexibility
Complexity
Stack
EA=top of
Stack
No memory
Reference
Limited applicability

Teknik Pengalamatan
Untuk menyimpan data ke dalam memori komputer, tentu memori tersebut diberi identitas (yang disebut dengan alamat) agar ketika data tersebut diperlukan kembali, komputer bisa mendapatkannya sesuai dengan data yang pernah diletakkan di sana.

Ada tiga teknik dasar untuk pengalamatan, yakni
1.      Pemetaan Langsung
Teknik ini dapat dijuluki dengan device dependent (tergantung pada peralatan rekamnya), artinya, kita tidak dapat begitu saja meng-copy data berkas ini ke komputer lainnya, karena mungkin saja di komputer lainnya itu menggunakan alat rekam yang berbeda spesifikasinya.

Teknik ini juga dapat dijuluki dengan address space dependent (tergantung pada alamat-alamat yang masih kosong), artinya, kita tidak dapat begitu saja meng-copy data berkas ini ke komputer lainnya, karena mungkin saja di komputer lainnya itu alamat-alamat yang dibutuhkan sudah tidak tersedia lagi.

2.      Teknik Pencarian Tabel
Teknik ini dilakukan dengan cara, mengambil seluruh kunci atribut dan alamat memori yang ada dan dimasukkan ke dalam tabel tersendiri. Jadi tabel itu (misal disebut dengan tabel INDEX) hanya berisi kunci atribut (misalkan NIM) yang telah disorting (diurut) dan alamat memorinya.

Pencarian yang dilakukan di tabel INDEX akan lebih cepat dilakukan dengan teknik pencarian melalui binary search ketimbang dilakukan secara sequential. Nilai key field bersifat address space independent (tidak terpengaruh terhadap perubahan organisasi file-nya), yang berubah hanyalah alamat yang ada di INDEX-nya.

3.      Teknik Kalkulasi Alamat
Perhitungan (kalkulasi) terhadap nilai kunci atribut untuk mendapatkan nilai suatu alamat disebut dengan fungsi hash. Bisa juga fungsi hash digabungkan dengan teknik pencarian seperti tabel di atas, tetapi akan menjadi lebih lama pengerjaannya dibanding hanya dengan satu jenis saja (fungsi hash saja atau pencarian tabel saja).

2.      Numbers
Setiap bahasa mesin mengandung tipe data numerik. Umumnya terdapat tiga tipe data angka yang ada pada komputer yaitu:
-   Binary integer or fixed point
-   Binary floating point
-   Desimal(BCD)  

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.

3.      Characters
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.

4.      Logical Data :
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 INSTRUKSI            
Data processing: Arithmetic dan Logic Instructions 
Data storage: Memory instructions    
Data Movement: I/O instructions      
Control: Test and branch instructions

JENIS OPERASI
Jumlah opcode dari sebuah mesin ke mesin lain beragam. Tetapi tipe operasi-operasi umum akan sama untuk semua mesin.  Berikut dikategorikan operasi berdasarkan fungsi dan tipenya:

a.    Transfer data
Tipe instruksi mesin yang paling dasar yaitu instruksi transfer data. Pada instruksi transfer data harus ditentukan beberapa hal. Pertama, penentuan lokasi sumber dan tujuan dari operand. Lokasinya dapat terletak di memori, register atau stack. Kedua, panjang data yang akan ditransfer harus diketahui. Ketiga, sama untuk semua instruksi dengan operand, 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 operand 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 operand yang dituju ada di dalam chace
4. Jika tidak, berikan perintah ke modul memori.

b.   Aritmatika
Kebanyakan mesin menyediakan operasi aritmatika / perhitungan dasar  seperti tambah, kurang, kali dan bagi. Dimana operasi tersebut disediakan untuk menangani bilangan integer 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 operand
-   Increment: menambahkan 1 nilai ke operand
-   Decrement: mengurangi 1 nilai dari operand

Eksekusi instruksi aritmatika dapat melibatkan operasi transfer data untuk menempatkan operand 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.
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 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.



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 operand
INC
Tambahkan 1 pada operand
DEC
Kurangkan 1 dari operand
SHIFT A
Geser operan (kekiri atau kekanan) dengan tanda
3
Logika
NOT
Komplemenkan (komplemen 1) operand
OR
Lakukan operasi logika OR pada operand
AND
Lakukan operasi logika AND pada operand
XOR
Lakukan operasi logika XOR pada operand
SHIFT
Geser operand (kekiri atau kekanan), isi nilai pada ujung bit
ROT
Geser operand (kekiri atau kekanan) dengan berputar
TEST
Uji kondisi yang ditetapkan dan pengaruhi flag yang sesuai
COMP
Melakukan perbandingan logika
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
EXECUTE
Mengambil operand dari lokasi tertentu dan mengeksekusi sebagai instruksi
SKIP
Menambah PC sehingga melompati instruksi berikutnya.
SKIPIF
Melompat atau tidak melakukan apa-apa berdasarkan pada persyaratan
HALT
Melanjutkan eksekusi pada saat persyaratan dipenuhi
WAIT
Melanjutkan eksekusi pada saat persyaratan dipenuhi
NOOPE
Tidak ada operasi yang dilakukan.
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)


Referensi:
http://mycomputerarchitecture.blogspot.coid/2014/10/jenis-operand-dan-jenis-operasi.html
http://kurniadwisandra.blogspot.co.id/2014/06/tipe-tipe-operand-dan-operasi.html