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 branch, skip, 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.
Tidak ada komentar:
Posting Komentar