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