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
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 aritmatika 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 instruksijump,
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.
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
Sumber :
http://mycomputerarchitecture.blogspot.co.id/2014/10/jenis-operand-dan-jenis-operasi.html
http://kurniadwisandra.blogspot.co.id/2014/06/tipe-tipe-operand-dan-operasi.html
Tidak ada komentar:
Posting Komentar